/** * @param searchResults * @return a list of all possible combinations of rows */ private List <Map<String,SearchResultRowInfo>> unionOfAllRows(Map<String, SearchResultInfo> searchResults){ List <Map<String,SearchResultRowInfo>> r = new ArrayList<Map<String,SearchResultRowInfo>>(); for(Map.Entry<String,SearchResultInfo> x:searchResults.entrySet()){ List<Map<String,SearchResultRowInfo>> t = new ArrayList<Map<String,SearchResultRowInfo>>(); if(x.getValue()!=null&&x.getValue().getRows()!=null){ for(SearchResultRowInfo y:x.getValue().getRows()){ for(Map<String,SearchResultRowInfo> i:r){ Map<String,SearchResultRowInfo> unions = new HashMap<String,SearchResultRowInfo>(); unions.putAll(i); unions.put(x.getKey(), y); t.add(unions); } if(r.size()==0){ Map<String,SearchResultRowInfo> unions = new HashMap<String,SearchResultRowInfo>(); unions.put(x.getKey(), y); t.add(unions); } } } r = t; } return r; }
protected SearchResultInfo createSearchResultFromTypeInfo(List<TypeInfo> typeInfos, String idKey, String nameKey, String descKey){ SearchResultInfo searchResult = new SearchResultInfo(); for (TypeInfo typeInfo : typeInfos){ searchResult.getRows().add(this.createSearchResultRowFromTypeInfo(typeInfo, idKey, nameKey, descKey)); } return searchResult; }
/** * @param searchResult * @param searchRequest * @return a sorted and paginated result */ private SearchResultInfo metaFilter(SearchResultInfo searchResult, SearchRequestInfo searchRequest) { searchResult.setTotalResults(searchResult.getRows().size()); searchResult.sortRows(); //Paginate if we need to if(searchRequest.getMaxResults()!=null){ int fromIndex=0; if(searchRequest.getStartAt()!=null){ fromIndex=searchRequest.getStartAt(); } int toIndex = fromIndex+searchRequest.getMaxResults(); SearchResultInfo pagedResult = new SearchResultInfo(); for (int i=fromIndex; i <= toIndex; i++) { if (!(searchResult.getRows().size() < i+1)) { pagedResult.getRows().add(searchResult.getRows().get(i)); } } pagedResult.setTotalResults(searchResult.getRows().size()); searchResult = pagedResult; } return searchResult; }
SearchResultInfo searchResult = new SearchResultInfo(); searchResult.setSortColumn(sortColumn); searchResult.setSortDirection(sortDirection); for (Org org : orgs) { SearchResultRowInfo resultRow = new SearchResultRowInfo(); resultRow.addCell("org.resultColumn.orgType", org.getType().getId()); searchResult.getRows().add(resultRow); searchResult.sortRows();
@Override public SearchResultInfo search(final IdentityService identityService, final SearchRequestInfo searchRequest) { final SearchResultInfo result = new SearchResultInfo(); searchRequest.setSortDirection(SortDirection.ASC); resultRow.getCells().add(cell); result.getRows().add(resultRow); result.setStartAt(searchRequest.getStartAt()); if (searchRequest.getNeededTotalResults()) { result.setTotalResults(persons.size()); } else { result.setTotalResults(result.getRows().size());
SearchResultInfo searchResult = new SearchResultInfo(); searchResult.setRows(results); searchResult.setSortColumn(searchRequest.getSortColumn()); searchResult.setSortDirection(searchRequest.getSortDirection()); searchResult.setStartAt(searchRequest.getStartAt()); if(searchRequest.getNeededTotalResults()!=null && searchRequest.getNeededTotalResults()){ totalRecords = ((Long) resultObject).intValue(); searchResult.setTotalResults(totalRecords);
@Override public SearchResultInfo search(SearchRequestInfo searchRequest, ContextInfo contextInfo) { final SearchOperation search = searchOperations.get(searchRequest.getSearchKey()); if (search != null) { return search.search(identityService, searchRequest); } return new SearchResultInfo(); }
@Override public Boolean isLatestVersion(String versionIndId, Long versionSequenceNumber) throws Exception { try { //Perform a search to see if there are any new versions of the course that are approved, draft, etc. //We don't want to version if there are SearchRequestInfo request = new SearchRequestInfo("lu.search.isVersionable"); request.addParam("lu.queryParam.versionIndId", versionIndId); request.addParam("lu.queryParam.sequenceNumber", versionSequenceNumber.toString()); List<String> states = new ArrayList<String>(); states.add("Approved"); states.add("Active"); states.add("Draft"); states.add("Superseded"); request.addParam("lu.queryParam.luOptionalState", states); SearchResultInfo result = cluService.search(request, ContextUtils.getContextInfo()); String resultString = result.getRows().get(0).getCells().get(0).getValue(); return "0".equals(resultString); } catch (Exception ex) { // Log exception ex.printStackTrace(); throw new RuntimeException(ex); } }
@Override public SearchResultInfo search(SearchRequestInfo searchRequestInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws MissingParameterException, OperationFailedException, PermissionDeniedException { if("appt.search.appointmentCountForWindowId".equals(searchRequestInfo.getSearchKey())){ //This is a hardwired search for AppointmentWindows //It gets the count of appointments for a given window Id String windowId = searchRequestInfo.getParams().get(0).getValues().get(0); Object[] result = (Object[]) enrollmentDao.getEm(). createQuery("SELECT w.createTime, MIN(s.startDate), MAX(s.startDate), COUNT(*), COUNT(DISTINCT s.id) " + "FROM AppointmentWindowEntity w, AppointmentSlotEntity s, AppointmentEntity a " + "WHERE w.id= :windowId AND s.apptWinEntity.id = w.id AND a.slotEntity.id = s.id GROUP BY w.createTime"). setParameter("windowId", windowId). getSingleResult(); SearchResultInfo searchResult = new SearchResultInfo(); SearchResultRowInfo row = new SearchResultRowInfo(); row.addCell("createTime", DateFormatters.MONTH_DAY_YEAR_TIME_DATE_FORMATTER.format(result[0].toString())); row.addCell("firstSlot",DateFormatters.MONTH_DAY_YEAR_TIME_DATE_FORMATTER.format(result[1].toString())); row.addCell("lastSlot",DateFormatters.MONTH_DAY_YEAR_TIME_DATE_FORMATTER.format(result[2].toString())); row.addCell("numAppts",result[3].toString()); row.addCell("numSlots",result[4].toString()); searchResult.getRows().add(row); return searchResult; } throw new OperationFailedException("The requested search key is not configured: "+searchRequestInfo.getSearchKey()); }
@Override public Boolean isLatestVersion(String versionIndId, Long versionSequenceNumber) throws Exception { //Perform a search to see if there are any new versions of the course that are approved, draft, etc. //We don't want to version if there are try { SearchRequestInfo request = new SearchRequestInfo("lu.search.isVersionable"); request.addParam("lu.queryParam.versionIndId", versionIndId); request.addParam("lu.queryParam.sequenceNumber", versionSequenceNumber.toString()); List<String> states = new ArrayList<String>(); states.add("Approved"); states.add("Active"); states.add("Draft"); states.add("Superseded"); request.addParam("lu.queryParam.luOptionalState", states); SearchResultInfo result = cluService.search(request, ContextUtils.getContextInfo()); String resultString = result.getRows().get(0).getCells().get(0).getValue(); return "0".equals(resultString); } catch (Exception e) { LOG.error("IS LATEST VERSION ERROR"); return false; } }
protected SearchResultInfo doSubjectCodeGenericSearch(Map<String, Object> paramMap) { SearchResultInfo searchResult = new SearchResultInfo(); Map<String,String> queryMap = new HashMap<String,String>(); String code = (String) paramMap.get("subjectCode.queryParam.code"); if(code!=null){ code = "%" + code.toUpperCase() + "%"; } //Use built in KNS lookup to perform the search List<SubjectCode> subjectCodes = subjectCodeDao.getBySubjectCode(code); //Default sort by code Collections.sort(subjectCodes,new Comparator<SubjectCode>(){ @Override public int compare(SubjectCode o1, SubjectCode o2) { if(o1==null && o2==null){ return 0; } return o1.getCode().compareTo(o2.getCode()); }}); //Convert to a KS search result for(SubjectCode subjectCode:subjectCodes){ SearchResultRowInfo row = new SearchResultRowInfo(); row.addCell("subjectCode.resultColumn.id", subjectCode.getId()); row.addCell("subjectCode.resultColumn.code", subjectCode.getCode()); row.addCell("subjectCode.resultColumn.name", subjectCode.getName()); row.addCell("subjectCode.resultColumn.type", subjectCode.getType().getId()); searchResult.getRows().add(row); } return searchResult; }
private void doIdTranslation(SearchResultInfo searchResult) { for (SearchResultRowInfo searchResultRow : searchResult.getRows()) { for (SearchResultCellInfo searchResultCell : searchResultRow.getCells()) { String value = searchResultCell.getValue(); if (value != null && value.startsWith("kuali.atp")) { String newValue = idTranslatorFilter.getTranslationForAtp(value, ContextUtils.getContextInfo()); if (newValue != null) { searchResultCell.setValue(newValue); } } } } }
private SearchResultInfo doSearchProposalsByCourseCode(String courseCode, ContextInfo contextInfo) throws MissingParameterException, PermissionDeniedException, OperationFailedException, InvalidParameterException { if(courseCode==null||courseCode.isEmpty()){ return new SearchResultInfo(); SearchResultInfo results = search(sr, contextInfo); Map<String,String> cluIdToCodeMap = new HashMap<String,String>(); for(SearchResultRowInfo row:results.getRows()){ String cluId = null; String code = null; sr.addParam("proposal.queryParam.proposalOptionalReferenceIds", new ArrayList<String>(cluIdToCodeMap.keySet())); results = searchDispatcher.search(sr, contextInfo); for(SearchResultRowInfo row:results.getRows()){ String cluId = null; SearchResultCellInfo proposalNameCell = null;
private List<String> getDepartments(List<String> departmentIds, ContextInfo contextInfo) throws MissingParameterException, PermissionDeniedException, OperationFailedException, InvalidParameterException { List<String> departments = new ArrayList<String>(); SearchRequestInfo searchRequest = new SearchRequestInfo("org.search.generic"); List<String> orgTypes = new ArrayList<String>(); orgTypes.add("kuali.org.Department"); searchRequest.addParam("org.queryParam.orgOptionalType", orgTypes); searchRequest.addParam("org.queryParam.orgOptionalIds", departmentIds); SearchResultInfo searchResult = getSearchDispatcher().search(searchRequest, contextInfo); if (null != searchResult) { for (SearchResultRowInfo result : searchResult.getRows()) { for (SearchResultCellInfo resultCell : result.getCells()) { if ("org.resultColumn.orgOptionalLongName".equals(resultCell.getKey())) { departments.add(resultCell.getValue()); } } } } return departments; } }
private SearchResultInfo doSearchProposalsForReferenceIds( SearchRequestInfo searchRequest) { List<String> referenceIds = null; for(SearchParamInfo param: searchRequest.getParams()){ if("proposal.queryParam.proposalOptionalReferenceIds".equals(param.getKey())){ referenceIds = param.getValues(); } } List<Proposal> proposals = proposalDao.getProposalsByRefernceIds(referenceIds); SearchResultInfo result = new SearchResultInfo(); for(Proposal proposal:proposals){ for(ProposalReference reference:proposal.getProposalReference()){ SearchResultRowInfo row = new SearchResultRowInfo(); row.addCell("proposal.resultColumn.proposalId", proposal.getId()); row.addCell("proposal.resultColumn.proposalOptionalName", proposal.getName()); row.addCell("proposal.resultColumn.proposalOptionalReferenceId", reference.getObjectReferenceId()); result.getRows().add(row); } } return result; }
private List<String> getDepartmentRelatedColleges(List<String> departmentIds, ContextInfo contextInfo) throws MissingParameterException, PermissionDeniedException, OperationFailedException, InvalidParameterException { List<String> departmentRelatedCollegeIds = new ArrayList<String>(); SearchRequestInfo searchRequest = new SearchRequestInfo("org.search.orgQuickViewByRelationTypeOrgTypeRelatedOrgIds"); List<String> orgTypes = new ArrayList<String>(); orgTypes.add("kuali.org.College"); searchRequest.addParam("org.queryParam.optionalOrgTypeList", orgTypes); searchRequest.addParam("org.queryParam.optionalRelationType", "kuali.org.Contain"); searchRequest.addParam("org.queryParam.relatedOrgIds", departmentIds); SearchResultInfo searchResult = getSearchDispatcher().search(searchRequest, contextInfo); if (null != searchResult) { for (SearchResultRowInfo row : searchResult.getRows()) { for (SearchResultCellInfo cell : row.getCells()) { if ("org.resultColumn.orgId".equals(cell.getKey())) { departmentRelatedCollegeIds.add(cell.getValue()); } } } } return departmentRelatedCollegeIds; }
SearchResultInfo searchResult = new SearchResultInfo(); if ("lrc.search.resultValue".equals(searchRequest.getSearchKey())) { row.addCell("lrc.resultColumn.resultValue.id", returnValue.getId()); row.addCell("lrc.resultColumn.resultValue.value", returnValue.getValue()); searchResult.getRows().add(row);
public SearchResultInfo doCrossSearch(SearchRequestInfo searchRequest, CrossSearchTypeInfo crossSearchType, ContextInfo contextInfo) throws MissingParameterException, PermissionDeniedException, OperationFailedException, InvalidParameterException { SearchResultInfo searchResult = new SearchResultInfo(); for(SearchResultRowInfo row:subSearchResult.getValue().getRows()){ SearchResultRowInfo mappedResult = mapResultRow(subSearchResult.getKey(),row,crossSearchType); searchResult.getRows().add(mappedResult); if(meetsCriteria(permutation,crossSearchType,crossSearchType.getJoinCriteria())){ SearchResultRowInfo mappedResult = mapResultRow(permutation,crossSearchType); searchResult.getRows().add(mappedResult);
private String getCollegeName(String collegeId, ContextInfo contextInfo) throws MissingParameterException, PermissionDeniedException, OperationFailedException, InvalidParameterException { String collegeName = ""; SearchRequestInfo searchRequest = new SearchRequestInfo("org.search.generic"); List<String> orgTypes = new ArrayList<String>(); orgTypes.add("kuali.org.College"); searchRequest.addParam("org.queryParam.orgOptionalType", orgTypes); searchRequest.addParam("org.queryParam.orgOptionalId", collegeId); SearchResultInfo searchResult = getSearchDispatcher().search(searchRequest, contextInfo); if (null != searchResult) { for (SearchResultRowInfo result : searchResult.getRows()) { for (SearchResultCellInfo resultCell : result.getCells()) { if ("org.resultColumn.orgOptionalLongName".equals(resultCell.getKey())) { collegeName = resultCell.getValue(); } } } } return collegeName; }