001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.ec.businessobject.lookup; 017 018 import java.util.ArrayList; 019 import java.util.HashMap; 020 import java.util.List; 021 import java.util.Map; 022 023 import org.kuali.kfs.module.ec.businessobject.OutstandingCertificationsByOrganization; 024 import org.kuali.kfs.module.ec.businessobject.OutstandingCertificationsByReport; 025 import org.kuali.kfs.sys.KFSConstants; 026 import org.kuali.kfs.sys.KFSPropertyConstants; 027 import org.kuali.kfs.sys.context.SpringContext; 028 import org.kuali.rice.kns.authorization.BusinessObjectRestrictions; 029 import org.kuali.rice.kns.bo.BusinessObject; 030 import org.kuali.rice.kns.lookup.CollectionIncomplete; 031 import org.kuali.rice.kns.lookup.HtmlData; 032 import org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl; 033 import org.kuali.rice.kns.service.LookupService; 034 import org.kuali.rice.kns.util.KNSConstants; 035 import org.kuali.rice.kns.web.struts.form.LookupForm; 036 037 /** 038 * Searches for documents that are not approved. 039 */ 040 public class OutstandingCertificationsByReportLookupableHelperServiceImpl extends KualiLookupableHelperServiceImpl { 041 042 /** 043 * @see org.kuali.rice.kns.lookup.LookupableHelperService#getSearchResults(java.util.Map) 044 */ 045 public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) { 046 fieldValues.put(KFSPropertyConstants.DOCUMENT_HEADER + "." + KFSPropertyConstants.FINANCIAL_DOCUMENT_STATUS_CODE, "!" + KFSConstants.DocumentStatusCodes.APPROVED); 047 048 LookupService lookupService = SpringContext.getBean(LookupService.class); 049 List<OutstandingCertificationsByOrganization> reportList = new ArrayList<OutstandingCertificationsByOrganization>(lookupService.findCollectionBySearch(OutstandingCertificationsByOrganization.class, fieldValues)); 050 HashMap<String, HashMap<String, Integer>> reportNumberCountMap = new HashMap<String, HashMap<String, Integer>>(); 051 052 for (OutstandingCertificationsByOrganization outstandingReportByOrganization : reportList) { 053 String reportNumber = outstandingReportByOrganization.getEffortCertificationReportNumber(); 054 String[] chartOrgArray = outstandingReportByOrganization.getCertificationOrganizations().split(","); 055 for (String chartOrg : chartOrgArray) { 056 if (reportNumberCountMap.containsKey(reportNumber)) { 057 HashMap<String, Integer> countForReportNumberByCharOrg = reportNumberCountMap.get(reportNumber); 058 if (countForReportNumberByCharOrg.containsKey(chartOrg)) countForReportNumberByCharOrg.put(chartOrg, ( countForReportNumberByCharOrg.get(chartOrg) + 1 ) ); 059 else countForReportNumberByCharOrg.put(chartOrg, 1); 060 } else { 061 HashMap<String, Integer> countForReportNumberByCharOrg = new HashMap<String, Integer>(); 062 countForReportNumberByCharOrg.put(chartOrg, 1); 063 reportNumberCountMap.put(reportNumber, countForReportNumberByCharOrg); 064 } 065 066 } 067 } 068 069 ArrayList<OutstandingCertificationsByReport> returnResults = new ArrayList<OutstandingCertificationsByReport>(); 070 ArrayList<String> reportNumberList = new ArrayList(reportNumberCountMap.keySet()); 071 072 for (String reportNumber : reportNumberList) { 073 HashMap<String, Integer> countForReportNumberByCharOrg = reportNumberCountMap.get(reportNumber); 074 ArrayList<String> chartOrgList = new ArrayList<String>(countForReportNumberByCharOrg.keySet()); 075 for (String chartOrg : chartOrgList) { 076 OutstandingCertificationsByReport temp = new OutstandingCertificationsByReport(); 077 String[] chartAndOrg = chartOrg.split("-"); 078 079 temp.setEffortCertificationReportNumber(reportNumber); 080 temp.setUniversityFiscalYear( Integer.parseInt(fieldValues.get(KFSConstants.UNIVERSITY_FISCAL_YEAR_PROPERTY_NAME)) ); 081 temp.setChartOfAccountsCode(chartAndOrg[0]); 082 temp.setOrganizationCode(chartAndOrg[1]); 083 temp.setOutstandingCertificationCount(countForReportNumberByCharOrg.get(chartOrg)); 084 returnResults.add(temp); 085 } 086 } 087 088 setBackLocation(fieldValues.get(KNSConstants.BACK_LOCATION)); 089 setDocFormKey(fieldValues.get(KNSConstants.DOC_FORM_KEY)); 090 setReferencesToRefresh(fieldValues.get(KNSConstants.REFERENCES_TO_REFRESH)); 091 092 return new CollectionIncomplete(returnResults, new Long(0)); 093 } 094 095 /** 096 * @see org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl#getSearchResultsUnbounded(java.util.Map) 097 */ 098 @Override 099 public List<? extends BusinessObject> getSearchResultsUnbounded(Map<String, String> arg0) { 100 return getSearchResults(arg0); 101 } 102 103 @Override 104 public HtmlData getReturnUrl(BusinessObject businessObject, LookupForm lookupForm, List pkNames, BusinessObjectRestrictions businessObjectRestrictions) { 105 return getEmptyAnchorHtmlData(); 106 } 107 108 }