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.dataaccess.impl;
017
018 import java.util.ArrayList;
019 import java.util.Collection;
020 import java.util.Iterator;
021 import java.util.List;
022
023 import org.apache.ojb.broker.query.Criteria;
024 import org.apache.ojb.broker.query.QueryByCriteria;
025 import org.apache.ojb.broker.query.QueryFactory;
026 import org.kuali.kfs.coa.businessobject.Chart;
027 import org.kuali.kfs.coa.businessobject.Organization;
028 import org.kuali.kfs.coa.dataaccess.ChartDao;
029 import org.kuali.kfs.sys.KFSConstants;
030 import org.kuali.rice.kim.bo.Person;
031 import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
032 import org.kuali.rice.kns.service.ParameterService;
033
034 /**
035 * This class is the OJB implementation of the ChartDao interface.
036 */
037
038 public class ChartDaoOjb extends PlatformAwareDaoBaseOjb implements ChartDao {
039 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ChartDaoOjb.class);
040 private ParameterService parameterService;
041
042 /**
043 * @see org.kuali.kfs.coa.dataaccess.ChartDao#getAll()
044 */
045 public Collection getAll() {
046 QueryByCriteria qbc = QueryFactory.newQuery(Chart.class, (Criteria) null);
047 qbc.addOrderByAscending("chartOfAccountsCode");
048 Collection charts = getPersistenceBrokerTemplate().getCollectionByQuery(qbc);
049 List chartList = new ArrayList(charts);
050 return chartList;
051 }
052
053 /**
054 * @see org.kuali.kfs.coa.dataaccess.ChartDao#getUniversityChart()
055 */
056 public Chart getUniversityChart() {
057 // 1. find the organization with the type which reports to itself
058 final String organizationReportsToSelfParameterValue = getParameterService().getParameterValue(Organization.class, KFSConstants.ChartApcParms.ORG_MUST_REPORT_TO_SELF_ORG_TYPES);
059 Criteria orgCriteria = new Criteria();
060 orgCriteria.addEqualTo("organizationTypeCode", organizationReportsToSelfParameterValue);
061 orgCriteria.addEqualTo("active", KFSConstants.ACTIVE_INDICATOR);
062
063 Iterator organizations = getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Organization.class, orgCriteria)).iterator();
064 Organization topDogOrg = null;
065 while (organizations.hasNext()) {
066 topDogOrg = (Organization)organizations.next();
067 }
068
069 return getByPrimaryId(topDogOrg.getChartOfAccountsCode());
070 }
071
072 /**
073 * @see org.kuali.kfs.coa.dataaccess.ChartDao#getByPrimaryId(java.lang.String)
074 */
075 public Chart getByPrimaryId(String chartOfAccountsCode) {
076 Criteria criteria = new Criteria();
077 criteria.addEqualTo("chartOfAccountsCode", chartOfAccountsCode);
078
079 return (Chart) getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(Chart.class, criteria));
080 }
081
082 /**
083 * fetch the charts that the user is manager for
084 *
085 * @param kualiUser
086 * @return a list of Charts that the user has responsibility for
087 */
088 public List getChartsThatUserIsResponsibleFor(Person person) {
089 List chartResponsibilities = new ArrayList();
090 Criteria criteria = new Criteria();
091 criteria.addEqualTo("finCoaManagerUniversalId", person.getPrincipalId());
092 Collection charts = getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Chart.class, criteria));
093 for (Iterator iter = charts.iterator(); iter.hasNext();) {
094 Chart chart = (Chart) iter.next();
095 chartResponsibilities.add(chart);
096 }
097 return chartResponsibilities;
098 }
099
100 /**
101 * Gets the parameterService attribute.
102 * @return Returns the parameterService.
103 */
104 public ParameterService getParameterService() {
105 return parameterService;
106 }
107
108 /**
109 * Sets the parameterService attribute value.
110 * @param parameterService The parameterService to set.
111 */
112 public void setParameterService(ParameterService parameterService) {
113 this.parameterService = parameterService;
114 }
115 }
116