001/* 002 * Copyright 2006 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 */ 016package org.kuali.ole.fp.service.impl; 017 018import java.util.ArrayList; 019import java.util.Collection; 020import java.util.HashMap; 021import java.util.Iterator; 022import java.util.List; 023 024import org.kuali.ole.fp.businessobject.FiscalYearFunctionControl; 025import org.kuali.ole.fp.service.FiscalYearFunctionControlService; 026import org.kuali.ole.sys.OLEConstants; 027import org.kuali.ole.sys.OLEPropertyConstants; 028import org.kuali.rice.krad.service.BusinessObjectService; 029 030/** 031 * 032 * This is the default implementation of the FiscalyearFunctionControlService interface. 033 * 034 */ 035public class FiscalYearFunctionControlServiceImpl implements FiscalYearFunctionControlService { 036 037 public static String FY_FUNCTION_CONTROL_BA_ALLOWED = "BAACTV"; 038 public static String FY_FUNCTION_CONTROL_BASE_AMT_ALLOWED = "BASEAD"; 039 040 private BusinessObjectService businessObjectService; 041 042 /** 043 * Retrieves the FiscalYearFunctionControl by its composite primary key (all passed in as parameters) and returns the active 044 * indicator. 045 * 046 * @param postingYear The posting year associated with the fiscal year function control being retrieved. 047 * @param financialSystemFunctionControlCode The function control code associated with the fiscal year function control being retrieved. 048 * @return Returns the value of the active indicator; returns null if PK is not found 049 */ 050 protected boolean getActiveIndByPrimaryId(Integer postingYear, String financialSystemFunctionControlCode) { 051 HashMap<String, Object> keys = new HashMap(); 052 keys.put(OLEPropertyConstants.UNIVERSITY_FISCAL_YEAR, postingYear); 053 keys.put(OLEPropertyConstants.FINANCIAL_SYSTEM_FUNCTION_CONTROL_CODE, financialSystemFunctionControlCode); 054 FiscalYearFunctionControl control = (FiscalYearFunctionControl) businessObjectService.findByPrimaryKey(FiscalYearFunctionControl.class, keys); 055 return (control != null) && control.isFinancialSystemFunctionActiveIndicator(); 056 } 057 058 /** 059 * Retrieves list of FiscalYearFunctionControls by its function control code. 060 * 061 * @param financialSystemFunctionControlCode The function control code to search by. 062 * @param financialSystemFunctionActiveIndicator An active indicator used as a search parameter. 063 * @return The list of FiscalYearFunctionControls matching the search criteria provided. 064 */ 065 protected List getByFunctionControlCodeAndActiveInd(String financialSystemFunctionControlCode, String financialSystemFunctionActiveIndicator) { 066 HashMap values = new HashMap(); 067 values.put(OLEPropertyConstants.FINANCIAL_SYSTEM_FUNCTION_CONTROL_CODE, financialSystemFunctionControlCode); 068 values.put(OLEPropertyConstants.FINANCIAL_SYSTEM_FUNCTION_ACTIVE_INDICATOR, financialSystemFunctionActiveIndicator); 069 Collection controls = businessObjectService.findMatching(FiscalYearFunctionControl.class, values); 070 return new ArrayList(controls); 071 } 072 073 /** 074 * Retrieves a collection of FiscalYearFunctionControls allowed for use in a budget adjustment. 075 * 076 * @return A collection of FiscalYearFunctionControls representing the years allowed in a budget adjustment. 077 * 078 * @see FiscalYearFunctionControlService#getBudgetAdjustmentAllowedYears(String) 079 */ 080 public List getBudgetAdjustmentAllowedYears() { 081 return getByFunctionControlCodeAndActiveInd(FY_FUNCTION_CONTROL_BA_ALLOWED, "Y"); 082 } 083 084 /** 085 * This method retrieves the value of the active indicator for a FiscalYearFunctionControl instance for the 086 * given posting year. 087 * 088 * @param postingYear The posting year used as a search parameter. 089 * @return True if the active indicator for the retrieved FiscalYearFunctionControl value retrieved is true, false otherwise. 090 * 091 * @see FiscalYearFunctionControlService#isBaseAmountChangeAllowed(Integer, String) 092 */ 093 public boolean isBaseAmountChangeAllowed(Integer postingYear) { 094 return getActiveIndByPrimaryId(postingYear, FY_FUNCTION_CONTROL_BASE_AMT_ALLOWED); 095 } 096 /** 097 * 098 * @see org.kuali.ole.fp.service.FiscalYearFunctionControlService#getActiveBudgetYear() 099 */ 100 public List<Integer> getActiveBudgetYear() 101 { 102 ArrayList<FiscalYearFunctionControl> activeYearObjects = (ArrayList<FiscalYearFunctionControl>) getByFunctionControlCodeAndActiveInd(OLEConstants.BudgetConstructionConstants.BUDGET_CONSTRUCTION_ACTIVE,OLEConstants.ACTIVE_INDICATOR); 103 ArrayList<Integer> activeYears = new ArrayList<Integer>(activeYearObjects.size()); 104 Iterator<FiscalYearFunctionControl> activeYearObjectIterator = activeYearObjects.iterator(); 105 int nextSlot = 0; 106 while (activeYearObjectIterator.hasNext()) 107 { 108 activeYears.add(nextSlot++,activeYearObjectIterator.next().getUniversityFiscalYear()); 109 } 110 return activeYears; 111 } 112 113 114 /** 115 * 116 * @see org.kuali.ole.fp.service.FiscalYearFunctionControlService#isApplicationUpdateFromHumanResourcesAllowed(java.lang.Integer) 117 */ 118 public boolean isApplicationUpdateFromHumanResourcesAllowed(Integer universityFiscalYear) 119 { 120 return getActiveIndByPrimaryId(universityFiscalYear, OLEConstants.BudgetConstructionConstants.BUDGET_ON_LINE_SYNCHRONIZATION_OK); 121 } 122 123 /** 124 * 125 * @see org.kuali.ole.fp.service.FiscalYearFunctionControlService#isBatchUpdateFromHumanResourcesAllowed(java.lang.Integer) 126 */ 127 public boolean isBatchUpdateFromHumanResourcesAllowed(Integer universityFiscalYear) 128 { 129 return getActiveIndByPrimaryId(universityFiscalYear, OLEConstants.BudgetConstructionConstants.BUDGET_BATCH_SYNCHRONIZATION_OK); 130 } 131 132 /** 133 * 134 * @see org.kuali.ole.fp.service.FiscalYearFunctionControlService#isBatchUpdateFromPayrollAllowed(java.lang.Integer) 135 */ 136 public boolean isBatchUpdateFromPayrollAllowed (Integer universityFiscalYear) 137 { 138 return getActiveIndByPrimaryId(universityFiscalYear, OLEConstants.BudgetConstructionConstants.CSF_UPDATES_OK); 139 } 140 141 142 public boolean isBudgetConstructionActive(Integer universityFiscalYear) 143 { 144 return getActiveIndByPrimaryId(universityFiscalYear, OLEConstants.BudgetConstructionConstants.BUDGET_CONSTRUCTION_ACTIVE); 145 } 146 147 /** 148 * 149 * @see org.kuali.ole.fp.service.FiscalYearFunctionControlService#isBudgetGeneralLedgerUpdateAllowed(java.lang.Integer) 150 */ 151 public boolean isBudgetGeneralLedgerUpdateAllowed(Integer universityFiscalYear) 152 { 153 return getActiveIndByPrimaryId(universityFiscalYear, OLEConstants.BudgetConstructionConstants.BASE_BUDGET_UPDATES_OK); 154 } 155 156 public boolean isBudgetUpdateAllowed(Integer universityFiscalYear) 157 { 158 return getActiveIndByPrimaryId(universityFiscalYear, OLEConstants.BudgetConstructionConstants.BUDGET_CONSTRUCTION_UPDATES_OK); 159 } 160 161 /** 162 * 163 * Gets the value of the businessObjectService attribute. 164 * @return An instance of the businessObjectService attribute. 165 */ 166 public BusinessObjectService getBusinessObjectService() { 167 return businessObjectService; 168 } 169 170 /** 171 * 172 * Sets the businessObjectService attribute. 173 * @param businessObjectService The businessObjectService instance to set. 174 */ 175 public void setBusinessObjectService(BusinessObjectService businessObjectService) { 176 this.businessObjectService = businessObjectService; 177 } 178}