/*
* 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.gl.batch.service.impl;
import org.kuali.kfs.coa.businessobject.ObjectCode;
import org.kuali.kfs.coa.businessobject.OrganizationReversionCategory;
import org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.core.api.parameter.ParameterEvaluatorService;
/**
* A generic implementation of OrganizationReversionCategoryLogic; it is completely based off of parameters
* @see org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic
*/
public class GenericOrganizationReversionCategory implements OrganizationReversionCategoryLogic {
private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(GenericOrganizationReversionCategory.class);
protected String categoryCode;
protected String categoryName;
protected boolean isExpense;
/**
* Sets the category code for this logic, so that the parameters for this category can be looked
* up in the database
*
* @param code the code for this logic
*/
public void setCategoryCode(String code) {
categoryCode = code;
isExpense = /*REFACTORME*/SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OrganizationReversionCategory.class, KFSConstants.OrgReversion.IS_EXPENSE_PARAM, categoryCode).evaluationSucceeds();
}
/**
* Sets the name of this category
*
* @param name the name to set
*/
public void setCategoryName(String name) {
categoryName = name;
}
/**
* Determines if balances with a given object code should be processed by this logic or not
*
* @param oc the object code to qualify
* @return true if balances with the given object code should be processed by this logic, false if otherwise
* @see org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic#containsObjectCode(org.kuali.kfs.coa.businessobject.ObjectCode)
*/
@Override
public boolean containsObjectCode(ObjectCode oc) {
if (LOG.isDebugEnabled()) {
LOG.debug("containsObjectCode() started");
}
String cons = oc.getFinancialObjectLevel().getFinancialConsolidationObjectCode();
String level = oc.getFinancialObjectLevelCode();
String objType = oc.getFinancialObjectTypeCode();
String objSubType = oc.getFinancialObjectSubTypeCode();
boolean consolidationRulesPassed = /*REFACTORME*/SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OrganizationReversionCategory.class, KFSConstants.OrgReversion.VALID_PREFIX + KFSConstants.OrgReversion.OBJECT_CONSOL_PARAM_SUFFIX, KFSConstants.OrgReversion.INVALID_PREFIX + KFSConstants.OrgReversion.OBJECT_CONSOL_PARAM_SUFFIX, categoryCode, cons).evaluationSucceeds();
boolean levelRulesPassed = /*REFACTORME*/SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OrganizationReversionCategory.class, KFSConstants.OrgReversion.VALID_PREFIX + KFSConstants.OrgReversion.OBJECT_LEVEL_PARAM_SUFFIX, KFSConstants.OrgReversion.INVALID_PREFIX + KFSConstants.OrgReversion.OBJECT_LEVEL_PARAM_SUFFIX, categoryCode, level).evaluationSucceeds();
boolean objectTypeRulesPassed = /*REFACTORME*/SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OrganizationReversionCategory.class, KFSConstants.OrgReversion.VALID_PREFIX + KFSConstants.OrgReversion.OBJECT_TYPE_PARAM_SUFFIX, KFSConstants.OrgReversion.INVALID_PREFIX + KFSConstants.OrgReversion.OBJECT_TYPE_PARAM_SUFFIX, categoryCode, objType).evaluationSucceeds();
boolean objectSubTypeRulesPassed = /*REFACTORME*/SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OrganizationReversionCategory.class, KFSConstants.OrgReversion.VALID_PREFIX + KFSConstants.OrgReversion.OBJECT_SUB_TYPE_PARAM_SUFFIX, KFSConstants.OrgReversion.INVALID_PREFIX + KFSConstants.OrgReversion.OBJECT_SUB_TYPE_PARAM_SUFFIX, categoryCode, objSubType).evaluationSucceeds();
return consolidationRulesPassed && levelRulesPassed && objectTypeRulesPassed && objectSubTypeRulesPassed;
}
/**
* Returns the name of the category
*
* @return the name of the category
* @see org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic#getName()
*/
@Override
public String getName() {
return categoryName;
}
/**
* Returns the code of this category
*
* @return the code of this category
* @see org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic#getCode()
*/
@Override
public String getCode() {
return categoryCode;
}
/**
* Returns whether this category represents an expense or not
*
* @return true if this category represents expenses, false if otherwise
* @see org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic#isExpense()
*/
@Override
public boolean isExpense() {
return isExpense;
}
}