/*
* 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.coa.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.kuali.kfs.coa.businessobject.ObjectType;
import org.kuali.kfs.coa.service.ObjectTypeService;
import org.kuali.kfs.sys.businessobject.SystemOptions;
import org.kuali.kfs.sys.service.NonTransactional;
import org.kuali.kfs.sys.service.UniversityDateService;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.springframework.cache.annotation.Cacheable;
/**
* This service implementation is the default implementation of the ObjectType service that is delivered with Kuali.
*/
@NonTransactional
public class ObjectTypeServiceImpl implements ObjectTypeService {
protected UniversityDateService universityDateService;
protected BusinessObjectService businessObjectService;
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getByPrimaryKey(java.lang.String)
*/
@Override
@Cacheable(value=ObjectType.CACHE_NAME,key="'objectTypeCode='+#p0")
public ObjectType getByPrimaryKey(String objectTypeCode) {
return businessObjectService.findBySinglePrimaryKey(ObjectType.class, objectTypeCode);
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getAssetObjectType(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{AssetObjectType}'+#p0")
public String getAssetObjectType(Integer universityFiscalYear) {
SystemOptions options = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
return options.getFinancialObjectTypeAssetsCd();
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getBasicExpenseObjectTypes(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{BasicExpenseObjectTypes}'+#p0")
public List<String> getBasicExpenseObjectTypes(Integer universityFiscalYear) {
List<String> basicExpenseObjectTypes = new ArrayList<String>();
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
basicExpenseObjectTypes.add(option.getFinObjTypeExpenditureexpCd());
basicExpenseObjectTypes.add(option.getFinObjTypeExpendNotExpCode());
basicExpenseObjectTypes.add(option.getFinObjTypeExpNotExpendCode());
return basicExpenseObjectTypes;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getExpenseObjectTypes(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{ExpenseObjectTypes}'+#p0")
public List<String> getExpenseObjectTypes(Integer universityFiscalYear) {
List<String> expenseObjectTypes = new ArrayList<String>();
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
expenseObjectTypes.add(option.getFinObjTypeExpenditureexpCd());
expenseObjectTypes.add(option.getFinObjTypeExpendNotExpCode());
expenseObjectTypes.add(option.getFinObjTypeExpNotExpendCode());
expenseObjectTypes.add(option.getFinancialObjectTypeTransferExpenseCd());
return expenseObjectTypes;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getBasicIncomeObjectTypes(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{BasicIncomeObjectTypes}'+#p0")
public List<String> getBasicIncomeObjectTypes(Integer universityFiscalYear) {
List<String> basicIncomeObjectTypes = new ArrayList<String>();
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
basicIncomeObjectTypes.add(option.getFinObjectTypeIncomecashCode());
basicIncomeObjectTypes.add(option.getFinObjTypeIncomeNotCashCd());
basicIncomeObjectTypes.add(option.getFinObjTypeCshNotIncomeCd());
return basicIncomeObjectTypes;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getExpenseTransferObjectType(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{ExpenseTransferObjectType}'+#p0")
public String getExpenseTransferObjectType(Integer universityFiscalYear) {
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
return option.getFinancialObjectTypeTransferExpenseCd();
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getIncomeTransferObjectType(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{IncomeTransferObjectType}'+#p0")
public String getIncomeTransferObjectType(Integer universityFiscalYear) {
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
return option.getFinancialObjectTypeTransferIncomeCd();
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCurrentYearAssetObjectType()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{AssetObjectType}CurrentFY'")
public String getCurrentYearAssetObjectType() {
return getAssetObjectType(universityDateService.getCurrentFiscalYear());
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCurrentYearBasicExpenseObjectTypes()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{BasicExpenseObjectTypes}CurrentFY'")
public List<String> getCurrentYearBasicExpenseObjectTypes() {
return getBasicExpenseObjectTypes(universityDateService.getCurrentFiscalYear());
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCurrentYearExpenseObjectTypes()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{ExpenseObjectTypes}CurrentFY'")
public List<String> getCurrentYearExpenseObjectTypes() {
return getExpenseObjectTypes(universityDateService.getCurrentFiscalYear());
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCurrentYearBasicIncomeObjectTypes()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME, key="'{BasicIncomeObjectTypes}CurrentFY'")
public List<String> getCurrentYearBasicIncomeObjectTypes() {
return getBasicIncomeObjectTypes(universityDateService.getCurrentFiscalYear());
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCurrentYearExpenseTransferObjectType()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME, key="'{ExpenseTransferObjectType}CurrentFY'")
public String getCurrentYearExpenseTransferObjectType() {
return getExpenseTransferObjectType(universityDateService.getCurrentFiscalYear());
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCurrentYearIncomeTransferObjectType()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME, key="'{IncomeTransferObjectType}CurrentFY'")
public String getCurrentYearIncomeTransferObjectType() {
return getIncomeTransferObjectType(universityDateService.getCurrentFiscalYear());
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getNominalActivityClosingAllowedObjectTypes(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{NominalActivityClosingAllowedObjectTypes}'+#p0")
public List<String> getNominalActivityClosingAllowedObjectTypes(Integer universityFiscalYear) {
List<String> nominalClosingObjectTypes = new ArrayList<String>();
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
nominalClosingObjectTypes.add(option.getFinObjTypeExpNotExpendCode());
nominalClosingObjectTypes.add(option.getFinObjTypeExpenditureexpCd());
nominalClosingObjectTypes.add(option.getFinancialObjectTypeTransferExpenseCd());
nominalClosingObjectTypes.add(option.getFinancialObjectTypeTransferIncomeCd());
nominalClosingObjectTypes.add(option.getFinObjTypeExpendNotExpCode());
nominalClosingObjectTypes.add(option.getFinObjTypeCshNotIncomeCd());
nominalClosingObjectTypes.add(option.getFinObjTypeIncomeNotCashCd());
nominalClosingObjectTypes.add(option.getFinObjectTypeIncomecashCode());
return nominalClosingObjectTypes;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getGeneralForwardBalanceObjectTypes(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{GeneralForwardBalanceObjectTypes}'+#p0")
public List<String> getGeneralForwardBalanceObjectTypes(Integer universityFiscalYear) {
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
List<String> generalBalanceForwardObjectTypes = new ArrayList<String>();
generalBalanceForwardObjectTypes.add(option.getFinancialObjectTypeAssetsCd());
generalBalanceForwardObjectTypes.add(option.getFinObjectTypeLiabilitiesCode());
generalBalanceForwardObjectTypes.add(option.getFinObjectTypeFundBalanceCd());
return generalBalanceForwardObjectTypes;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getCumulativeForwardBalanceObjectTypes(java.lang.Integer)
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME,key="'{CumulativeForwardBalanceObjectTypes}'+#p0")
public List<String> getCumulativeForwardBalanceObjectTypes(Integer universityFiscalYear) {
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityFiscalYear);
List<String> cumulativeBalanceForwardsObjectTypes = new ArrayList<String>();
cumulativeBalanceForwardsObjectTypes.add(option.getFinObjTypeExpendNotExpCode());
cumulativeBalanceForwardsObjectTypes.add(option.getFinObjTypeExpNotExpendCode());
cumulativeBalanceForwardsObjectTypes.add(option.getFinObjTypeExpenditureexpCd());
cumulativeBalanceForwardsObjectTypes.add(option.getFinObjTypeIncomeNotCashCd());
cumulativeBalanceForwardsObjectTypes.add(option.getFinancialObjectTypeTransferExpenseCd());
cumulativeBalanceForwardsObjectTypes.add(option.getFinancialObjectTypeTransferIncomeCd());
cumulativeBalanceForwardsObjectTypes.add(option.getFinObjectTypeIncomecashCode());
cumulativeBalanceForwardsObjectTypes.add(option.getFinObjTypeCshNotIncomeCd());
return cumulativeBalanceForwardsObjectTypes;
}
public void setUniversityDateService(UniversityDateService universityDateService) {
this.universityDateService = universityDateService;
}
public void setBusinessObjectService(BusinessObjectService businessObjectService) {
this.businessObjectService = businessObjectService;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getExpenseAndTransferObjectTypesForPayments()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME, key="'{ExpenseAndTransferObjectTypesForPayments}CurrentFY'")
public List<String> getExpenseAndTransferObjectTypesForPayments() {
List<String> expenseAndTransferObjectTypes = new ArrayList<String>();
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityDateService.getCurrentFiscalYear());
expenseAndTransferObjectTypes.add(option.getFinancialObjectTypeAssetsCd());
expenseAndTransferObjectTypes.add(option.getFinObjTypeExpenditureexpCd());
expenseAndTransferObjectTypes.add(option.getFinObjTypeExpNotExpendCode());
expenseAndTransferObjectTypes.add(option.getFinObjTypeExpendNotExpCode());
expenseAndTransferObjectTypes.add(option.getFinancialObjectTypeTransferExpenseCd());
return expenseAndTransferObjectTypes;
}
/**
* @see org.kuali.kfs.coa.service.ObjectTypeService#getIncomeAndTransferObjectTypesForPayments()
*/
@Override
@Cacheable(value=SystemOptions.CACHE_NAME, key="'{IncomeAndTransferObjectTypesForPayments}CurrentFY'")
public List<String> getIncomeAndTransferObjectTypesForPayments() {
List<String> incomeAndTransferObjectTypes = new ArrayList<String>();
SystemOptions option = businessObjectService.findBySinglePrimaryKey(SystemOptions.class, universityDateService.getCurrentFiscalYear());
incomeAndTransferObjectTypes.add(option.getFinObjectTypeLiabilitiesCode());
incomeAndTransferObjectTypes.add(option.getFinObjectTypeFundBalanceCd());
incomeAndTransferObjectTypes.add(option.getFinObjectTypeIncomecashCode());
incomeAndTransferObjectTypes.add(option.getFinObjTypeIncomeNotCashCd());
incomeAndTransferObjectTypes.add(option.getFinObjTypeCshNotIncomeCd());
incomeAndTransferObjectTypes.add(option.getFinancialObjectTypeTransferIncomeCd());
return incomeAndTransferObjectTypes;
}
}