/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.ec.businessobject.lookup; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.kuali.kfs.module.ec.businessobject.OutstandingCertificationsByOrganization; import org.kuali.kfs.module.ec.businessobject.OutstandingCertificationsByReport; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.kns.document.authorization.BusinessObjectRestrictions; import org.kuali.rice.kns.lookup.HtmlData; import org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl; import org.kuali.rice.kns.web.struts.form.LookupForm; import org.kuali.rice.krad.bo.BusinessObject; import org.kuali.rice.krad.lookup.CollectionIncomplete; import org.kuali.rice.krad.service.LookupService; import org.kuali.rice.krad.util.KRADConstants; /** * Searches for documents that are not approved. */ public class OutstandingCertificationsByReportLookupableHelperServiceImpl extends KualiLookupableHelperServiceImpl { /** * @see org.kuali.rice.kns.lookup.LookupableHelperService#getSearchResults(java.util.Map) */ public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) { fieldValues.put(KFSPropertyConstants.DOCUMENT_HEADER + "." + KFSPropertyConstants.FINANCIAL_DOCUMENT_STATUS_CODE, "!" + KFSConstants.DocumentStatusCodes.APPROVED); LookupService lookupService = SpringContext.getBean(LookupService.class); List<OutstandingCertificationsByOrganization> reportList = new ArrayList<OutstandingCertificationsByOrganization>(lookupService.findCollectionBySearch(OutstandingCertificationsByOrganization.class, fieldValues)); HashMap<String, HashMap<String, Integer>> reportNumberCountMap = new HashMap<String, HashMap<String, Integer>>(); for (OutstandingCertificationsByOrganization outstandingReportByOrganization : reportList) { String reportNumber = outstandingReportByOrganization.getEffortCertificationReportNumber(); String[] chartOrgArray = outstandingReportByOrganization.getCertificationOrganizations().split(","); for (String chartOrg : chartOrgArray) { if (reportNumberCountMap.containsKey(reportNumber)) { HashMap<String, Integer> countForReportNumberByCharOrg = reportNumberCountMap.get(reportNumber); if (countForReportNumberByCharOrg.containsKey(chartOrg)) countForReportNumberByCharOrg.put(chartOrg, ( countForReportNumberByCharOrg.get(chartOrg) + 1 ) ); else countForReportNumberByCharOrg.put(chartOrg, 1); } else { HashMap<String, Integer> countForReportNumberByCharOrg = new HashMap<String, Integer>(); countForReportNumberByCharOrg.put(chartOrg, 1); reportNumberCountMap.put(reportNumber, countForReportNumberByCharOrg); } } } ArrayList<OutstandingCertificationsByReport> returnResults = new ArrayList<OutstandingCertificationsByReport>(); ArrayList<String> reportNumberList = new ArrayList(reportNumberCountMap.keySet()); for (String reportNumber : reportNumberList) { HashMap<String, Integer> countForReportNumberByCharOrg = reportNumberCountMap.get(reportNumber); ArrayList<String> chartOrgList = new ArrayList<String>(countForReportNumberByCharOrg.keySet()); for (String chartOrg : chartOrgList) { OutstandingCertificationsByReport temp = new OutstandingCertificationsByReport(); String[] chartAndOrg = chartOrg.split("-"); temp.setEffortCertificationReportNumber(reportNumber); temp.setUniversityFiscalYear( Integer.parseInt(fieldValues.get(KFSConstants.UNIVERSITY_FISCAL_YEAR_PROPERTY_NAME)) ); temp.setChartOfAccountsCode(chartAndOrg[0]); temp.setOrganizationCode(chartAndOrg[1]); temp.setOutstandingCertificationCount(countForReportNumberByCharOrg.get(chartOrg)); returnResults.add(temp); } } setBackLocation(fieldValues.get(KRADConstants.BACK_LOCATION)); setDocFormKey(fieldValues.get(KRADConstants.DOC_FORM_KEY)); setReferencesToRefresh(fieldValues.get(KRADConstants.REFERENCES_TO_REFRESH)); return new CollectionIncomplete(returnResults, new Long(0)); } /** * @see org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl#getSearchResultsUnbounded(java.util.Map) */ @Override public List<? extends BusinessObject> getSearchResultsUnbounded(Map<String, String> arg0) { return getSearchResults(arg0); } @Override public HtmlData getReturnUrl(BusinessObject businessObject, LookupForm lookupForm, List pkNames, BusinessObjectRestrictions businessObjectRestrictions) { return getEmptyAnchorHtmlData(); } }