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.coa.service.impl;
017
018 import java.util.Collection;
019 import java.util.HashMap;
020 import java.util.Iterator;
021 import java.util.List;
022 import java.util.Map;
023
024 import org.kuali.kfs.coa.businessobject.Account;
025 import org.kuali.kfs.coa.businessobject.OrganizationReversion;
026 import org.kuali.kfs.coa.businessobject.OrganizationReversionCategory;
027 import org.kuali.kfs.coa.dataaccess.OrganizationReversionDao;
028 import org.kuali.kfs.coa.service.OrganizationReversionService;
029 import org.kuali.kfs.gl.GeneralLedgerConstants;
030 import org.kuali.kfs.gl.batch.service.OrganizationReversionCategoryLogic;
031 import org.kuali.kfs.gl.batch.service.impl.GenericOrganizationReversionCategory;
032 import org.kuali.kfs.sys.KFSConstants;
033 import org.kuali.kfs.sys.context.SpringContext;
034 import org.kuali.kfs.sys.service.NonTransactional;
035 import org.kuali.rice.kns.service.BusinessObjectService;
036 import org.kuali.rice.kns.service.ParameterService;
037
038 /**
039 *
040 * This service implementation is the default implementation of the OrganizationReversion service that is delivered with Kuali.
041 */
042
043 @NonTransactional
044 public class OrganizationReversionServiceImpl implements OrganizationReversionService {
045 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationReversionServiceImpl.class);
046
047 private OrganizationReversionDao organizationReversionDao;
048 private BusinessObjectService businessObjectService;
049 private ParameterService parameterService;
050 /**
051 * @see org.kuali.kfs.coa.service.OrganizationReversionService#getByPrimaryId(java.lang.Integer, java.lang.String,
052 * java.lang.String)
053 */
054 public OrganizationReversion getByPrimaryId(Integer fiscalYear, String chartCode, String orgCode) {
055 LOG.debug("getByPrimaryId() started");
056 return organizationReversionDao.getByPrimaryId(fiscalYear, chartCode, orgCode);
057 }
058
059 /**
060 * @see org.kuali.kfs.coa.service.OrganizationReversionService#getCategories()
061 */
062 public Map<String, OrganizationReversionCategoryLogic> getCategories() {
063 LOG.debug("getCategories() started");
064
065 Map<String, OrganizationReversionCategoryLogic> categories = new HashMap<String, OrganizationReversionCategoryLogic>();
066
067 Collection cats = organizationReversionDao.getCategories();
068
069 for (Iterator iter = cats.iterator(); iter.hasNext();) {
070 OrganizationReversionCategory orc = (OrganizationReversionCategory) iter.next();
071
072 String categoryCode = orc.getOrganizationReversionCategoryCode();
073
074 Map<String, OrganizationReversionCategoryLogic> beanMap = SpringContext.getBeansOfType(OrganizationReversionCategoryLogic.class);
075 if (beanMap.containsKey("gl" + categoryCode + "OrganizationReversionCategory")) {
076 LOG.info("Found Organization Reversion Category Logic for gl" + categoryCode + "OrganizationReversionCategory");
077 categories.put(categoryCode, beanMap.get("gl" + categoryCode + "OrganizationReversionCategory"));
078 }
079 else {
080 LOG.info("No Organization Reversion Category Logic for gl" + categoryCode + "OrganizationReversionCategory; using generic");
081 GenericOrganizationReversionCategory cat = SpringContext.getBean(GenericOrganizationReversionCategory.class);
082 cat.setCategoryCode(categoryCode);
083 cat.setCategoryName(orc.getOrganizationReversionCategoryName());
084 categories.put(categoryCode, (OrganizationReversionCategoryLogic) cat);
085 }
086 }
087 return categories;
088 }
089
090 /**
091 *
092 * @see org.kuali.kfs.coa.service.OrganizationReversionService#getCategoryList()
093 */
094 public List<OrganizationReversionCategory> getCategoryList() {
095 LOG.debug("getCategoryList() started");
096
097 return organizationReversionDao.getCategories();
098 }
099
100
101 /**
102 * @see org.kuali.kfs.coa.service.OrganizationReversionService#getOrganizationReversionDetaiFromSystemParameters()
103 */
104 public String getOrganizationReversionDetaiFromSystemParameters() {
105 return parameterService.getParameterValue(OrganizationReversion.class, GeneralLedgerConstants.OrganizationReversionProcess.UNALLOC_OBJECT_CODE_PARM);
106 }
107
108
109 /**
110 * @see org.kuali.kfs.coa.service.OrganizationReversionService#isCategoryActive(java.lang.String)
111 */
112 public boolean isCategoryActive(String categoryCode) {
113 Map<String, Object> pkMap = new HashMap<String, Object>();
114 pkMap.put("organizationReversionCategoryCode", categoryCode);
115 final OrganizationReversionCategory category = (OrganizationReversionCategory)businessObjectService.findByPrimaryKey(OrganizationReversionCategory.class, pkMap);
116 if (category == null) return false;
117 return category.isActive();
118 }
119
120 /**
121 * @see org.kuali.kfs.coa.service.OrganizationReversionService#isCategoryActiveByName(java.lang.String)
122 */
123 public boolean isCategoryActiveByName(String categoryName) {
124 Map<String, Object> fieldMap = new HashMap<String, Object>();
125 fieldMap.put("organizationReversionCategoryName", categoryName);
126 final Collection categories = businessObjectService.findMatching(OrganizationReversionCategory.class, fieldMap);
127 final Iterator categoriesIterator = categories.iterator();
128 OrganizationReversionCategory category = null;
129 while (categoriesIterator.hasNext()) {
130 category = (OrganizationReversionCategory)categoriesIterator.next();
131 }
132 if (category == null) return false;
133 return category.isActive();
134 }
135
136 /**
137 *
138 * This method injects the ParameterService
139 * @param parameterService
140 */
141 public void setParameterService(ParameterService parameterService) {
142 this.parameterService = parameterService;
143 }
144
145
146 /**
147 *
148 * This method injects the OrganizationReversionDao
149 * @param orgDao
150 */
151 public void setOrganizationReversionDao(OrganizationReversionDao orgDao) {
152 organizationReversionDao = orgDao;
153 }
154
155 /**
156 * Sets an implementation of the business object service
157 * @param boService the implementation of the BusinessObjectService to set
158 */
159 public void setBusinessObjectService(BusinessObjectService boService) {
160 this.businessObjectService = boService;
161 }
162 }