/* * 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.module.purap.document.dataaccess.impl; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.apache.ojb.broker.query.Criteria; import org.apache.ojb.broker.query.Query; import org.apache.ojb.broker.query.QueryByCriteria; import org.kuali.kfs.module.purap.businessobject.ReceivingThreshold; import org.kuali.kfs.module.purap.document.dataaccess.ThresholdDao; import org.kuali.kfs.module.purap.util.ThresholdField; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb; import org.springframework.transaction.annotation.Transactional; @Transactional public class ThresholdDaoOjb extends PlatformAwareDaoBaseOjb implements ThresholdDao { private static Logger LOG = Logger.getLogger(ThresholdDaoOjb.class); public Collection<ReceivingThreshold> findByChart(String chartCode) { Map criteriaFields = new HashMap(1); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } public Collection<ReceivingThreshold> findByChartAndFund(String chartCode, String fund) { Map criteriaFields = new HashMap(2); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.ACCOUNT_TYPE_CODE,fund); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } public Collection<ReceivingThreshold> findByChartAndSubFund(String chartCode, String subFund) { Map criteriaFields = new HashMap(2); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.SUBFUND_GROUP_CODE,subFund); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } public Collection<ReceivingThreshold> findByChartAndCommodity(String chartCode, String commodityCode) { Map criteriaFields = new HashMap(2); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.COMMODITY_CODE,commodityCode); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } public Collection<ReceivingThreshold> findByChartAndObjectCode(String chartCode, String objectCode) { Map criteriaFields = new HashMap(2); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.FINANCIAL_OBJECT_CODE,objectCode); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } public Collection<ReceivingThreshold> findByChartAndOrg(String chartCode, String org) { Map criteriaFields = new HashMap(2); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.ORGANIZATION_CODE,org); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } public Collection<ReceivingThreshold> findByChartAndVendor(String chartCode, String vendorHeaderGeneratedIdentifier, String vendorDetailAssignedIdentifier) { Map criteriaFields = new HashMap(3); criteriaFields.put(ThresholdField.CHART_OF_ACCOUNTS_CODE,chartCode); criteriaFields.put(ThresholdField.VENDOR_HEADER_GENERATED_ID,vendorHeaderGeneratedIdentifier); criteriaFields.put(ThresholdField.VENDOR_DETAIL_ASSIGNED_ID,vendorDetailAssignedIdentifier); criteriaFields.put(ThresholdField.ACTIVE,Boolean.TRUE); return getThresholdEnum(criteriaFields); } protected Collection<ReceivingThreshold> getThresholdEnum(Map criteriaFields){ if (criteriaFields == null || criteriaFields.size() == 0){ return null; } Criteria criteria = new Criteria(); List<ThresholdField> allFields = ThresholdField.getEnumList(); for (int i = 0; i < allFields.size(); i++) { if (allFields.get(i).isPersistedField()){ Object criteriaValue = criteriaFields.get(allFields.get(i)); if (criteriaValue != null){ criteria.addEqualTo(allFields.get(i).getName(), criteriaValue); }else{ criteria.addIsNull(allFields.get(i).getName()); } } } Query query = new QueryByCriteria(ReceivingThreshold.class, criteria); Collection c = getPersistenceBrokerTemplate().getCollectionByQuery(query); return c; } /** * Will return a mock object */ protected ReceivingThreshold returnAMockObject(){ ReceivingThreshold newOne = new ReceivingThreshold(); newOne.setThresholdAmount(new KualiDecimal(10.00)); return newOne; } }