/** * @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; }
@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 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; } }
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 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 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; }
@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()); }
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; }
@Override public void onSuccess(SearchResultInfo results) { resultRows.clear(); if(results != null){ for (SearchResultRowInfo r: results.getRows()){ ResultRow theRow = new ResultRow(); for(SearchResultCellInfo c: r.getCells()){ if(c.getKey().equals(resultIdColumnKey)){ theRow.setId(c.getValue()); } theRow.setValue(c.getKey(), c.getValue()); } resultRows.add(theRow); } } redraw(); } });
public String getTranslationForAtp(String value, ContextInfo contextInfo) { SearchRequestInfo searchRequest = new SearchRequestInfo(); searchRequest.setSearchKey("atp.search.advancedAtpSearch"); ArrayList<SearchParamInfo> searchParams = new ArrayList<SearchParamInfo>(); SearchParamInfo searchParam = new SearchParamInfo(); searchParam.setKey("atp.advancedAtpSearchParam.atpId"); searchParam.getValues().add(value); searchParams.add(searchParam); searchRequest.setParams(searchParams); SearchResultInfo searchResult = null; try { searchResult = searchDispatcher.search(searchRequest, contextInfo); } catch (Exception e) { throw new RuntimeException(e); } if(searchResult!= null){ for (SearchResultRowInfo resultRow : searchResult.getRows()) { for (SearchResultCellInfo searchResultCell : resultRow.getCells()) { if(searchResultCell.getKey().equals("atp.resultColumn.atpDescrPlain")){ return searchResultCell.getValue(); } } } } return null; } }
private List<String> getMembershipQuerySearchResult(MembershipQueryInfo query, ContextInfo contextInfo) throws MissingParameterException, OperationFailedException, PermissionDeniedException, InvalidParameterException { if (query == null) { return null; } SearchRequestInfo request = new SearchRequestInfo(); request.setSearchKey(query.getSearchTypeKey()); request.setParams(query.getQueryParamValues()); SearchResultInfo result = search(request, contextInfo); Set<String> cluIds = new HashSet<String>(); List<SearchResultRowInfo> rows = result.getRows(); for (SearchResultRowInfo row : rows) { List<SearchResultCellInfo> cells = row.getCells(); for (SearchResultCellInfo cell : cells) { if (cell.getKey().equals("lu.resultColumn.luOptionalVersionIndId") && cell.getValue() != null) { cluIds.add(cell.getValue()); } } } return new ArrayList<String>(cluIds); }
public List<KeyValue> getKeyValues() { List<KeyValue> departments = new ArrayList<KeyValue>(); SearchRequestInfo searchRequest = new SearchRequestInfo(); searchRequest.setSearchKey("org.search.generic"); try { for (SearchResultRowInfo result : getOrganizationService().search(searchRequest, ContextUtils.getContextInfo()).getRows()) { String orgId = ""; String orgShortName = ""; String orgOptionalLongName = ""; String orgType = ""; for (SearchResultCellInfo resultCell : result.getCells()) { if ("org.resultColumn.orgId".equals(resultCell.getKey())) { orgId = resultCell.getValue(); } else if ("org.resultColumn.orgShortName".equals(resultCell.getKey())) { orgShortName = resultCell.getValue(); } else if ("org.resultColumn.orgOptionalLongName".equals(resultCell.getKey())) { orgOptionalLongName = resultCell.getValue(); } else if ("org.resultColumn.orgType".equals(resultCell.getKey())) { orgType = resultCell.getValue(); } } departments.add(buildKeyLabelPair(orgId, orgShortName, orgOptionalLongName, orgType)); } return departments; } catch (Exception e) { LOG.error("Error building KeyValues List", e); throw new RuntimeException(e); } }
public IdTranslation getTranslation(LookupMetadata lookupMetadata, String id) throws AssemblyException { SearchRequestInfo searchRequest = buildSearchRequestById(lookupMetadata, id); SearchResultInfo searchResults = null; try { searchResults = searchDispatcher.search(searchRequest, ContextUtils.getContextInfo()); } catch (Exception e) { throw new RuntimeException(e); } IdTranslation result = null; if(searchResults != null && searchResults.getRows().size() > 0){ result = new IdTranslation(); result.setId(id); SearchResultRowInfo r = searchResults.getRows().get(0); for(SearchResultCellInfo c: r.getCells()){ if(c.getKey().equals(lookupMetadata.getResultDisplayKey())){ result.addAttribute(c.getKey(), c.getValue()); result.setDisplay(c.getValue()); } else { result.addAttribute(c.getKey(), c.getValue()); } } } return result; }
@Override public void onSuccess(SearchResultInfo results) { IdableSuggestion theSuggestion = null; if(results != null && !results.getRows().isEmpty()){ SearchResultRowInfo r = results.getRows().get(0); theSuggestion = new IdableSuggestion(); for(SearchResultCellInfo c: r.getCells()){ if(c.getKey().equals(resultDisplayKey)){ String itemText = c.getValue(); theSuggestion.addAttr(c.getKey(), c.getValue()); theSuggestion.setDisplayString(itemText); theSuggestion.setReplacementString(itemText); } else if(c.getKey().equals(resultIdKey)){ theSuggestion.setId(c.getValue()); theSuggestion.addAttr(c.getKey(), c.getValue()); } else { theSuggestion.addAttr(c.getKey(), c.getValue()); } } } callback.exec(theSuggestion); } });
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; }
@Override public void onSuccess(SearchResultInfo results) { if(results != null){ ((KSSelectItemWidgetAbstract)basicWidget.get()).setListItems(new SearchResultListItems(results.getRows(), config.lookupMeta)); } else { ((KSSelectItemWidgetAbstract)basicWidget.get()).setListItems(new SearchResultListItems(null, config.lookupMeta)); //FIXME is this configuration error? } //((KSDropDown)basicWidget.get()).processOutstandingCallback(); //due to possible race condition ((KSSelectItemWidgetAbstract)basicWidget.get()).setInitialized(true); layout.add(basicWidget.get()); } });