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.bc.util;
017    
018    import java.math.BigDecimal;
019    import java.util.List;
020    
021    import org.apache.commons.lang.StringUtils;
022    import org.kuali.kfs.module.bc.BCParameterKeyConstants;
023    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionIntendedIncumbent;
024    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionPayRateHolding;
025    import org.kuali.kfs.module.bc.businessobject.BudgetConstructionPosition;
026    import org.kuali.kfs.module.bc.document.BudgetConstructionDocument;
027    import org.kuali.kfs.module.bc.batch.GenesisBatchStep;
028    import org.kuali.kfs.sys.context.SpringContext;
029    import org.kuali.rice.kns.service.ParameterService;
030    
031    /**
032     * A convenient utility that can delegate the calling client to retrieve system parameters of budget construction module.
033     */
034    public class BudgetParameterFinder {
035        private static ParameterService parameterService = SpringContext.getBean(ParameterService.class);
036    
037        /**
038         * get the biweekly pay type codes setup in system parameters
039         * 
040         * @return the biweekly pay type codes setup in system parameters
041         */
042        public static List<String> getBiweeklyPayTypeCodes() {
043            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.BIWEEKLY_PAY_TYPE_CODES);
044        }
045    
046        /**
047         * get the annual working hours setup in system paremters for extract process
048         * 
049         * @return the annual working hours setup in system paremters
050         */
051        public static Integer getAnnualWorkingHours() {
052            String annualWorkingHours = parameterService.getParameterValue(BudgetConstructionDocument.class, BCParameterKeyConstants.ANNUAL_WORKING_HOURS);
053    
054            return Integer.valueOf(StringUtils.trim(annualWorkingHours));
055        }
056    
057        /**
058         * get the weekly working hours setup in system paremters for extract process
059         * 
060         * @return the weekly working hours setup in system paremters
061         */
062        public static Integer getWeeklyWorkingHours() {
063            String weeklyWorkingHours = parameterService.getParameterValue(BudgetConstructionDocument.class, BCParameterKeyConstants.WEEKLY_WORKING_HOURS);
064    
065            return Integer.valueOf(StringUtils.trim(weeklyWorkingHours));
066        }
067    
068        /**
069         * get the weekly working hours setup in system paremters for extract process
070         * 
071         * @return the weekly working hours setup in system paremters
072         */
073        public static BigDecimal getWeeklyWorkingHoursAsDecimal() {
074            Integer weeklyWorkingHours = getWeeklyWorkingHours();
075    
076            return BigDecimal.valueOf(weeklyWorkingHours);
077        }
078    
079        /**
080         * get the sub fund group codes not allowed 2plg generation setup in system parameters
081         * 
082         * @return the sub fund group codes not allowed 2plg generation setup in system parameters
083         */
084        public static List<String> getNotGenerate2PlgSubFundGroupCodes() {
085            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.GENERATE_2PLG_SUB_FUND_GROUPS);
086        }
087    
088        /**
089         * get the biweekly pay object codes setup in system parameters
090         * 
091         * @return the biweekly pay object codes setup in system parameters
092         */
093        public static List<String> getBiweeklyPayObjectCodes() {
094            return parameterService.getParameterValues(BudgetConstructionPayRateHolding.class, BCParameterKeyConstants.BIWEEKLY_PAY_OBJECT_CODES);
095        }
096    
097        /**
098         * get the revenue object types allowed in budget setup in system parameters
099         * 
100         * @return the revenue object types allowed in budget setup in system parameters
101         */
102        public static List<String> getRevenueObjectTypes() {
103            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.REVENUE_OBJECT_TYPES);
104        }
105    
106        /**
107         * get the expenditure object types allowed in budget setup in system parameters
108         * 
109         * @return the expenditure object types allowed in budget setup in system parameters
110         */
111        public static List<String> getExpenditureObjectTypes() {
112            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.EXPENDITURE_OBJECT_TYPES);
113        }
114    
115        /**
116         * get the budget aggregation codes setup in system parameters
117         * 
118         * @return the budget aggregation codes setup in system parameters
119         */
120        public static List<String> getBudgetAggregationCodes() {
121            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.BUDGET_AGGREGATION_CODES);
122        }
123    
124        /**
125         * get the fringe benefit designator codes setup in system parameters
126         * 
127         * @return the fringe benefit designator codes setup in system parameters
128         */
129        public static List<String> getFringeBenefitDesignatorCodes() {
130            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.FRINGE_BENEFIT_DESIGNATOR_CODES);
131        }
132    
133        /**
134         * get the salary setting fund groups setup in system parameters
135         * 
136         * @return the salary setting fund groups setup in system parameters
137         */
138        public static List<String> getSalarySettingFundGroups() {
139            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.SALARY_SETTING_FUND_GROUPS);
140        }
141    
142        /**
143         * get the salary setting sub fund groups setup in system parameters
144         * 
145         * @return the salary setting sub fund groups setup in system parameters
146         */
147        public static List<String> getSalarySettingSubFundGroups() {
148            return parameterService.getParameterValues(BudgetConstructionDocument.class, BCParameterKeyConstants.SALARY_SETTING_SUB_FUND_GROUPS);
149        }
150    
151        /**
152         * indicates whether the data for the budget construction intended incumbent table is populated from an external system or is
153         * maintained within the KFS.
154         */
155        public static boolean getPayrollIncumbentFeedIndictor() {
156            return parameterService.getIndicatorParameter(BudgetConstructionIntendedIncumbent.class, BCParameterKeyConstants.EXTERNAL_INCUMBENT_FEED_IND);
157        }
158    
159        /**
160         * Indicates whether the data for the budget construction position table is populated from an external system or is maintained
161         * within the KFS.
162         */
163        public static boolean getPayrollPositionFeedIndicator() {
164            return parameterService.getIndicatorParameter(BudgetConstructionPosition.class, BCParameterKeyConstants.EXTERNAL_POSITION_FEED_IND);
165        }
166        
167        /**
168         * returns the base fiscal year to use to initialize budget construction
169         */
170        
171        public static Integer getBaseFiscalYear()
172        {
173            String yearValue = parameterService.getParameterValue(GenesisBatchStep.class, BCParameterKeyConstants.SOURCE_FISCAL_YEAR);
174            return (Integer.valueOf(StringUtils.trim(yearValue)));
175        }
176    }