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.Collections; 021 import java.util.Iterator; 022 import java.util.List; 023 024 import org.apache.ojb.broker.query.Criteria; 025 import org.apache.ojb.broker.query.QueryFactory; 026 import org.apache.ojb.broker.query.ReportQueryByCriteria; 027 import org.kuali.kfs.coa.businessobject.Account; 028 import org.kuali.kfs.coa.businessobject.Organization; 029 import org.kuali.kfs.coa.dataaccess.OrganizationDao; 030 import org.kuali.kfs.sys.KFSConstants; 031 import org.kuali.kfs.sys.KFSPropertyConstants; 032 import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb; 033 import org.kuali.rice.kns.util.TransactionalServiceUtils; 034 035 /** 036 * This class is the OJB implementation of the OrganizationDao interface. 037 */ 038 public class OrganizationDaoOjb extends PlatformAwareDaoBaseOjb implements OrganizationDao { 039 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationDaoOjb.class); 040 041 /** 042 * @see org.kuali.kfs.coa.dataaccess.OrganizationDao#getByPrimaryId(java.lang.String, java.lang.String) 043 */ 044 public Organization getByPrimaryId(String chartOfAccountsCode, String organizationCode) { 045 Criteria criteria = new Criteria(); 046 criteria.addEqualTo("chartOfAccountsCode", chartOfAccountsCode); 047 criteria.addEqualTo("organizationCode", organizationCode); 048 049 return (Organization) getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(Organization.class, criteria)); 050 } 051 052 /** 053 * @see org.kuali.kfs.coa.dataaccess.OrganizationDao#save(org.kuali.kfs.coa.businessobject.Org) 054 */ 055 public void save(Organization organization) { 056 getPersistenceBrokerTemplate().store(organization); 057 } 058 059 /** 060 * @see org.kuali.kfs.coa.dataaccess.OrganizationDao#getActiveAccountsByOrg(java.lang.String, java.lang.String) 061 */ 062 public List getActiveAccountsByOrg(String chartOfAccountsCode, String organizationCode) { 063 064 List accounts = new ArrayList(); 065 066 Criteria criteria = new Criteria(); 067 criteria.addEqualTo("chartOfAccountsCode", chartOfAccountsCode); 068 criteria.addEqualTo("organizationCode", organizationCode); 069 criteria.addEqualTo("active", Boolean.FALSE); 070 071 accounts = (List) getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Account.class, criteria)); 072 073 if (accounts.isEmpty() || accounts.size() == 0) { 074 return Collections.EMPTY_LIST; 075 } 076 return accounts; 077 } 078 079 /** 080 * @see org.kuali.kfs.coa.dataaccess.OrganizationDao#getActiveChildOrgs(java.lang.String, java.lang.String) 081 */ 082 public List getActiveChildOrgs(String chartOfAccountsCode, String organizationCode) { 083 084 List orgs = new ArrayList(); 085 086 Criteria criteria = new Criteria(); 087 criteria.addEqualTo("reportsToChartOfAccountsCode", chartOfAccountsCode); 088 criteria.addEqualTo("reportsToOrganizationCode", organizationCode); 089 criteria.addEqualTo("active", Boolean.TRUE); 090 091 orgs = (List) getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Organization.class, criteria)); 092 093 if (orgs.isEmpty() || orgs.size() == 0) { 094 return Collections.EMPTY_LIST; 095 } 096 return orgs; 097 } 098 099 /** 100 * @see org.kuali.kfs.coa.dataaccess.OrganizationDao#getActiveOrgsByType(java.lang.String) 101 */ 102 public List<Organization> getActiveOrgsByType(String organizationTypeCode) { 103 List<Organization> orgs = new ArrayList<Organization>(); 104 105 Criteria criteria = new Criteria(); 106 criteria.addEqualTo("organizationTypeCode", organizationTypeCode); 107 criteria.addEqualTo("active", Boolean.TRUE); 108 109 orgs = (List<Organization>) getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Organization.class, criteria)); 110 111 if (orgs.isEmpty() || orgs.size() == 0) { 112 return Collections.EMPTY_LIST; 113 } 114 return orgs; 115 } 116 117 /** 118 * we insist that the root organization be active 119 * 120 * @see org.kuali.kfs.coa.dataaccess.OrganizationDao#getRootOrganizationCode(java.lang.String, java.lang.String) 121 */ 122 public String[] getRootOrganizationCode(String rootChart, String selfReportsOrgTypeCode) { 123 String[] returnValues = { null, null }; 124 125 Criteria criteria = new Criteria(); 126 criteria.addEqualTo(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, rootChart); 127 criteria.addEqualTo(KFSPropertyConstants.ORGANIZATION_TYPE_CODE, selfReportsOrgTypeCode); 128 criteria.addEqualTo(KFSPropertyConstants.ORGANIZATION_ACTIVE_INDICATOR, KFSConstants.ACTIVE_INDICATOR); 129 130 Collection results = getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Organization.class, criteria)); 131 if (results != null && !results.isEmpty()) { 132 Organization org = (Organization) results.iterator().next(); 133 returnValues[0] = org.getChartOfAccountsCode(); 134 returnValues[1] = org.getOrganizationCode(); 135 } 136 137 // Iterator Results = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(rptQuery); 138 // if (Results.hasNext()) { 139 // Object[] returnList = (Object[]) TransactionalServiceUtils.retrieveFirstAndExhaustIterator(Results); 140 // returnValues[0] = (String) returnList[0]; 141 // returnValues[1] = (String) returnList[1]; 142 // } 143 return returnValues; 144 } 145 146 }