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.ArrayList;
019 import java.util.List;
020 import java.util.SortedSet;
021 import java.util.TreeSet;
022
023 import org.apache.commons.lang.StringUtils;
024 import org.kuali.kfs.coa.businessobject.ObjectCode;
025 import org.kuali.kfs.coa.dataaccess.ObjectCodeDao;
026 import org.kuali.kfs.coa.service.ObjectCodeService;
027 import org.kuali.kfs.sys.service.NonTransactional;
028 import org.kuali.kfs.sys.service.UniversityDateService;
029 import org.kuali.rice.kns.util.spring.CacheNoCopy;
030
031 /**
032 * This class is the service implementation for the ObjectCode structure. This is the default implementation, that is delivered with
033 * Kuali.
034 */
035
036 @NonTransactional
037 public class ObjectCodeServiceImpl implements ObjectCodeService {
038
039 private ObjectCodeDao objectCodeDao;
040 private UniversityDateService universityDateService;
041
042 /**
043 * @see org.kuali.kfs.coa.service.ObjectCodeService#getByPrimaryId(java.lang.Integer, java.lang.String, java.lang.String)
044 */
045 public ObjectCode getByPrimaryId(Integer universityFiscalYear, String chartOfAccountsCode, String financialObjectCode) {
046 return objectCodeDao.getByPrimaryId(universityFiscalYear, chartOfAccountsCode, financialObjectCode);
047 }
048
049 /**
050 * @see org.kuali.kfs.coa.service.ObjectCodeService#getByPrimaryIdWithCaching(java.lang.Integer, java.lang.String,
051 * java.lang.String)
052 */
053 @CacheNoCopy
054 public ObjectCode getByPrimaryIdWithCaching(Integer universityFiscalYear, String chartOfAccountsCode, String financialObjectCode) {
055 return objectCodeDao.getByPrimaryId(universityFiscalYear, chartOfAccountsCode, financialObjectCode);
056 }
057
058 /**
059 * @return ObjectCodeDao
060 */
061 public ObjectCodeDao getObjectCodeDao() {
062 return objectCodeDao;
063 }
064
065 /**
066 * Injects the ObjectCodeDao
067 *
068 * @param objectCodeDao
069 */
070 public void setObjectCodeDao(ObjectCodeDao objectCodeDao) {
071 this.objectCodeDao = objectCodeDao;
072 }
073
074 /**
075 * Gets the universityDateService attribute.
076 *
077 * @return Returns the universityDateService.
078 */
079 public UniversityDateService getUniversityDateService() {
080 return universityDateService;
081 }
082
083 /**
084 * Sets the universityDateService attribute value.
085 *
086 * @param universityDateService The universityDateService to set.
087 */
088 public void setUniversityDateService(UniversityDateService universityDateService) {
089 this.universityDateService = universityDateService;
090 }
091
092 /**
093 * @see org.kuali.kfs.coa.service.ObjectCodeService#getYearList(java.lang.String, java.lang.String)
094 */
095 public List getYearList(String chartOfAccountsCode, String financialObjectCode) {
096 return objectCodeDao.getYearList(chartOfAccountsCode, financialObjectCode);
097 }
098
099 /**
100 * @see org.kuali.kfs.coa.service.ObjectCodeService#getObjectCodeNamesByCharts(java.lang.Integer, java.lang.String[],
101 * java.lang.String)
102 */
103 public String getObjectCodeNamesByCharts(Integer universityFiscalYear, String[] chartOfAccountCodes, String financialObjectCode) {
104 String onlyObjectCodeName = "";
105 SortedSet<String> objectCodeNames = new TreeSet<String>();
106 List<String> objectCodeNameList = new ArrayList<String>();
107 for (String chartOfAccountsCode : chartOfAccountCodes) {
108 ObjectCode objCode = this.getByPrimaryId(universityFiscalYear, chartOfAccountsCode, financialObjectCode);
109 if (objCode != null) {
110 onlyObjectCodeName = objCode.getFinancialObjectCodeName();
111 objectCodeNames.add(objCode.getFinancialObjectCodeName());
112 objectCodeNameList.add(chartOfAccountsCode + ": " + objCode.getFinancialObjectCodeName());
113 }
114 else {
115 onlyObjectCodeName = "Not Found";
116 objectCodeNameList.add(chartOfAccountsCode + ": Not Found");
117 }
118 }
119 if (objectCodeNames.size() > 1) {
120 return StringUtils.join(objectCodeNames.toArray(), ", ");
121 }
122 else {
123 return onlyObjectCodeName;
124 }
125 }
126
127 /**
128 * @see org.kuali.kfs.coa.service.ObjectCodeService#getByPrimaryIdForCurrentYear(java.lang.String, java.lang.String)
129 */
130 public ObjectCode getByPrimaryIdForCurrentYear(String chartOfAccountsCode, String financialObjectCode) {
131 return this.getByPrimaryId(universityDateService.getCurrentFiscalYear(), chartOfAccountsCode, financialObjectCode);
132 }
133 }