001 /** 002 * Copyright 2004-2013 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.hr.time.earngroup.dao; 017 018 import org.apache.ojb.broker.query.Criteria; 019 import org.apache.ojb.broker.query.Query; 020 import org.apache.ojb.broker.query.QueryFactory; 021 import org.apache.ojb.broker.query.ReportQueryByCriteria; 022 import org.kuali.hr.time.earngroup.EarnGroup; 023 import org.kuali.hr.time.earngroup.EarnGroupDefinition; 024 import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb; 025 import org.springmodules.orm.ojb.support.PersistenceBrokerDaoSupport; 026 027 import java.sql.Date; 028 029 public class EarnGroupDaoServiceImpl extends PlatformAwareDaoBaseOjb implements EarnGroupDaoService { 030 031 @Override 032 public EarnGroup getEarnGroup(String earnGroup, Date asOfDate) { 033 Criteria root = new Criteria(); 034 Criteria effdt = new Criteria(); 035 Criteria timestamp = new Criteria(); 036 037 effdt.addEqualToField("earnGroup", Criteria.PARENT_QUERY_PREFIX + "earnGroup"); 038 effdt.addLessOrEqualThan("effectiveDate", asOfDate); 039 // effdt.addEqualTo("active", true); 040 ReportQueryByCriteria effdtSubQuery = QueryFactory.newReportQuery(EarnGroup.class, effdt); 041 effdtSubQuery.setAttributes(new String[] { "max(effdt)" }); 042 043 timestamp.addEqualToField("earnGroup", Criteria.PARENT_QUERY_PREFIX + "earnGroup"); 044 timestamp.addEqualToField("effectiveDate", Criteria.PARENT_QUERY_PREFIX + "effectiveDate"); 045 // timestamp.addEqualTo("active", true); 046 ReportQueryByCriteria timestampSubQuery = QueryFactory.newReportQuery(EarnGroup.class, timestamp); 047 timestampSubQuery.setAttributes(new String[] { "max(timestamp)" }); 048 049 root.addEqualTo("earnGroup", earnGroup); 050 root.addEqualTo("effectiveDate", effdtSubQuery); 051 root.addEqualTo("timestamp", timestampSubQuery); 052 // root.addEqualTo("active", true); 053 //do not include the summary setup earn groups 054 055 Criteria activeFilter = new Criteria(); // Inner Join For Activity 056 activeFilter.addEqualTo("active", true); 057 root.addAndCriteria(activeFilter); 058 059 Query query = QueryFactory.newQuery(EarnGroup.class, root); 060 EarnGroup earnGroupObj = (EarnGroup)this.getPersistenceBrokerTemplate().getObjectByQuery(query); 061 return earnGroupObj; 062 } 063 064 @Override 065 public EarnGroup getEarnGroupSummaryForEarnCode(String earnCode, Date asOfDate) { 066 Criteria root = new Criteria(); 067 Criteria effdt = new Criteria(); 068 Criteria timestamp = new Criteria(); 069 Criteria earnCodeJoin = new Criteria(); 070 071 effdt.addEqualToField("earnGroup", Criteria.PARENT_QUERY_PREFIX + "earnGroup"); 072 effdt.addLessOrEqualThan("effectiveDate", asOfDate); 073 // effdt.addEqualTo("active", true); 074 ReportQueryByCriteria effdtSubQuery = QueryFactory.newReportQuery(EarnGroup.class, effdt); 075 effdtSubQuery.setAttributes(new String[] { "max(effdt)" }); 076 077 timestamp.addEqualToField("earnGroup", Criteria.PARENT_QUERY_PREFIX + "earnGroup"); 078 timestamp.addEqualToField("effectiveDate", Criteria.PARENT_QUERY_PREFIX + "effectiveDate"); 079 // timestamp.addEqualTo("active", true); 080 ReportQueryByCriteria timestampSubQuery = QueryFactory.newReportQuery(EarnGroup.class, timestamp); 081 timestampSubQuery.setAttributes(new String[] { "max(timestamp)" }); 082 083 earnCodeJoin.addEqualToField("hrEarnGroupId", Criteria.PARENT_QUERY_PREFIX + "hrEarnGroupId"); 084 earnCodeJoin.addEqualTo("earnCode", earnCode); 085 ReportQueryByCriteria earnCodeSubQuery = QueryFactory.newReportQuery(EarnGroupDefinition.class, earnCodeJoin); 086 earnCodeSubQuery.setAttributes(new String[]{"hr_earn_group_id"}); 087 088 root.addEqualTo("hrEarnGroupId",earnCodeSubQuery); 089 root.addEqualTo("effectiveDate", effdtSubQuery); 090 root.addEqualTo("timestamp", timestampSubQuery); 091 // root.addEqualTo("active", true); 092 root.addEqualTo("showSummary", true); 093 094 Criteria activeFilter = new Criteria(); // Inner Join For Activity 095 activeFilter.addEqualTo("active", true); 096 root.addAndCriteria(activeFilter); 097 098 Query query = QueryFactory.newQuery(EarnGroup.class, root); 099 EarnGroup earnGroupObj = (EarnGroup)this.getPersistenceBrokerTemplate().getObjectByQuery(query); 100 return earnGroupObj; 101 } 102 103 @Override 104 public EarnGroup getEarnGroupForEarnCode(String earnCode, Date asOfDate) { 105 Criteria root = new Criteria(); 106 Criteria effdt = new Criteria(); 107 Criteria timestamp = new Criteria(); 108 Criteria earnCodeJoin = new Criteria(); 109 110 effdt.addEqualToField("earnGroup", Criteria.PARENT_QUERY_PREFIX + "earnGroup"); 111 effdt.addLessOrEqualThan("effectiveDate", asOfDate); 112 // effdt.addEqualTo("active", true); 113 ReportQueryByCriteria effdtSubQuery = QueryFactory.newReportQuery(EarnGroup.class, effdt); 114 effdtSubQuery.setAttributes(new String[] { "max(effdt)" }); 115 116 timestamp.addEqualToField("earnGroup", Criteria.PARENT_QUERY_PREFIX + "earnGroup"); 117 timestamp.addEqualToField("effectiveDate", Criteria.PARENT_QUERY_PREFIX + "effectiveDate"); 118 // timestamp.addEqualTo("active", true); 119 ReportQueryByCriteria timestampSubQuery = QueryFactory.newReportQuery(EarnGroup.class, timestamp); 120 timestampSubQuery.setAttributes(new String[] { "max(timestamp)" }); 121 122 earnCodeJoin.addEqualToField("hrEarnGroupId", Criteria.PARENT_QUERY_PREFIX + "hrEarnGroupId"); 123 earnCodeJoin.addEqualTo("earnCode", earnCode); 124 ReportQueryByCriteria earnCodeSubQuery = QueryFactory.newReportQuery(EarnGroupDefinition.class, earnCodeJoin); 125 earnCodeSubQuery.setAttributes(new String[]{"hr_earn_group_id"}); 126 127 root.addEqualTo("hrEarnGroupId",earnCodeSubQuery); 128 root.addEqualTo("effectiveDate", effdtSubQuery); 129 root.addEqualTo("timestamp", timestampSubQuery); 130 // root.addEqualTo("active", true); 131 132 Criteria activeFilter = new Criteria(); // Inner Join For Activity 133 activeFilter.addEqualTo("active", true); 134 root.addAndCriteria(activeFilter); 135 136 Query query = QueryFactory.newQuery(EarnGroup.class, root); 137 EarnGroup earnGroupObj = (EarnGroup)this.getPersistenceBrokerTemplate().getObjectByQuery(query); 138 return earnGroupObj; 139 } 140 141 @Override 142 public EarnGroup getEarnGroup(String hrEarnGroupId) { 143 Criteria crit = new Criteria(); 144 crit.addEqualTo("hrEarnGroupId", hrEarnGroupId); 145 146 Query query = QueryFactory.newQuery(EarnGroup.class, crit); 147 return (EarnGroup)this.getPersistenceBrokerTemplate().getObjectByQuery(query); 148 } 149 150 @Override 151 public int getEarnGroupCount(String earnGroup) { 152 Criteria crit = new Criteria(); 153 crit.addEqualTo("earnGroup", earnGroup); 154 Query query = QueryFactory.newQuery(EarnGroup.class, crit); 155 return this.getPersistenceBrokerTemplate().getCount(query); 156 } 157 @Override 158 public int getNewerEarnGroupCount(String earnGroup, Date effdt) { 159 Criteria crit = new Criteria(); 160 crit.addEqualTo("earnGroup", earnGroup); 161 crit.addEqualTo("active", "Y"); 162 crit.addGreaterThan("effectiveDate", effdt); 163 Query query = QueryFactory.newQuery(EarnGroup.class, crit); 164 return this.getPersistenceBrokerTemplate().getCount(query); 165 } 166 }