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.inquiry;
017    
018    import java.util.ArrayList;
019    import java.util.HashMap;
020    import java.util.List;
021    import java.util.Map;
022    import java.util.Properties;
023    
024    import org.apache.commons.lang.ObjectUtils;
025    import org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl;
026    import org.kuali.kfs.integration.ld.LaborLedgerBalanceForEffortCertification;
027    import org.kuali.kfs.integration.ld.LaborModuleService;
028    import org.kuali.kfs.module.ec.EffortConstants;
029    import org.kuali.kfs.module.ec.EffortPropertyConstants;
030    import org.kuali.kfs.module.ec.businessobject.EffortCertificationDetail;
031    import org.kuali.kfs.module.ec.businessobject.EffortCertificationDetailBuild;
032    import org.kuali.kfs.module.ec.document.EffortCertificationDocument;
033    import org.kuali.kfs.sys.KFSConstants;
034    import org.kuali.kfs.sys.KFSPropertyConstants;
035    import org.kuali.kfs.sys.context.SpringContext;
036    import org.kuali.rice.kns.bo.BusinessObject;
037    import org.kuali.rice.kns.service.KualiModuleService;
038    import org.kuali.rice.kns.util.KualiDecimal;
039    
040    public class EffortLedgerBalanceInquirableImpl extends AbstractGeneralLedgerInquirableImpl {
041        private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(EffortLedgerBalanceInquirableImpl.class);
042    
043        private KualiModuleService kualiModuleService = SpringContext.getBean(KualiModuleService.class);
044    
045        /**
046         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#addMoreParameters(java.util.Properties, java.lang.String)
047         */
048        @Override
049        protected void addMoreParameters(Properties parameter, String attributeName) {
050            BusinessObject businessObject = this.getBusinessObject();
051            EffortCertificationDocument document = null;
052    
053            if (businessObject instanceof EffortCertificationDetailBuild) {
054                EffortCertificationDetailBuild effortCertificationDetail = (EffortCertificationDetailBuild) businessObject;
055                document = effortCertificationDetail.getEffortCertificationDocumentBuild();
056            }
057            else if (businessObject instanceof EffortCertificationDetail) {
058                EffortCertificationDetail effortCertificationDetail = (EffortCertificationDetail) businessObject;
059                document = effortCertificationDetail.getEffortCertificationDocument();
060            }
061    
062            if (document != null) {
063                parameter.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, ObjectUtils.toString(document.getUniversityFiscalYear()));
064                parameter.put(EffortPropertyConstants.EFFORT_CERTIFICATION_REPORT_NUMBER, document.getEffortCertificationReportNumber());
065                parameter.put(KFSPropertyConstants.EMPLID, document.getEmplid());
066            }
067        }
068    
069        /**
070         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#buildUserDefinedAttributeKeyList()
071         */
072        @Override
073        protected List<String> buildUserDefinedAttributeKeyList() {
074            List<String> keys = new ArrayList<String>();
075    
076            keys.add(KFSPropertyConstants.ACCOUNT_NUMBER);
077            keys.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
078            keys.add(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
079            keys.add(KFSPropertyConstants.FINANCIAL_OBJECT_CODE);
080            keys.add(KFSPropertyConstants.POSITION_NUMBER);
081    
082            return keys;
083        }
084    
085        /**
086         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getAttributeName(java.lang.String)
087         */
088        @Override
089        protected String getAttributeName(String attributeName) {
090            return attributeName;
091        }
092    
093        /**
094         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getBaseUrl()
095         */
096        @Override
097        protected String getBaseUrl() {
098            return KFSConstants.GL_BALANCE_INQUIRY_ACTION;
099        }
100    
101        /**
102         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getInquiryBusinessObjectClass(java.lang.String)
103         */
104        @Override
105        protected Class getInquiryBusinessObjectClass(String attributeName) {
106            return kualiModuleService.getResponsibleModuleService(LaborLedgerBalanceForEffortCertification.class).getExternalizableBusinessObjectImplementation(LaborLedgerBalanceForEffortCertification.class);
107        }
108    
109        /**
110         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getKeyName(java.lang.String)
111         */
112        @Override
113        protected String getKeyName(String keyName) {
114            return keyName;
115        }
116    
117        /**
118         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getKeyValue(java.lang.String, java.lang.Object)
119         */
120        @Override
121        protected Object getKeyValue(String keyName, Object keyValue) {
122            return keyValue;
123        }
124    
125        /**
126         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getLookupableImplAttributeName()
127         */
128        @Override
129        protected String getLookupableImplAttributeName() {
130            return null;
131        }
132    
133        /**
134         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getUserDefinedAttributeMap()
135         */
136        @Override
137        protected Map<String, Object> getUserDefinedAttributeMap() {
138            Map<String, Object> userDefinedAttributeMap = new HashMap<String, Object>();
139    
140            userDefinedAttributeMap.put(EffortPropertyConstants.EFFORT_CERTIFICATION_PAYROLL_AMOUNT, KualiDecimal.ZERO);
141            userDefinedAttributeMap.put(EffortPropertyConstants.EFFORT_CERTIFICATION_ORIGINAL_PAYROLL_AMOUNT, KualiDecimal.ZERO);
142    
143            return userDefinedAttributeMap;
144        }
145    
146        /**
147         * @see org.kuali.kfs.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#isExclusiveField(java.lang.Object, java.lang.Object)
148         */
149        @Override
150        protected boolean isExclusiveField(Object keyName, Object keyValue) {
151            if (super.isExclusiveField(keyName, keyValue)) {
152                return true;
153            }
154    
155            if (keyName != null && keyValue != null) {
156                if (keyName.equals(EffortPropertyConstants.SOURCE_ACCOUNT_NUMBER) && keyValue.equals(EffortConstants.DASH_ACCOUNT_NUMBER)) {
157                    return true;
158                }
159                else if (keyName.equals(EffortPropertyConstants.SOURCE_CHART_OF_ACCOUNTS_CODE) && keyValue.equals(EffortConstants.DASH_CHART_OF_ACCOUNTS_CODE)) {
160                    return true;
161                }
162            }
163            return false;
164        }
165    }