1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.hr.time.accrual.dao;
17
18 import java.sql.Date;
19 import java.util.ArrayList;
20 import java.util.Collection;
21 import java.util.LinkedList;
22 import java.util.List;
23
24 import org.apache.commons.lang.StringUtils;
25 import org.apache.log4j.Logger;
26 import org.apache.ojb.broker.query.Criteria;
27 import org.apache.ojb.broker.query.Query;
28 import org.apache.ojb.broker.query.QueryFactory;
29 import org.apache.ojb.broker.query.ReportQueryByCriteria;
30 import org.kuali.hr.time.accrual.TimeOffAccrual;
31 import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
32
33 public class TimeOffAccrualDaoSpringOjbImpl extends PlatformAwareDaoBaseOjb implements TimeOffAccrualDao {
34
35 @SuppressWarnings("unused")
36 private static final Logger LOG = Logger.getLogger(TimeOffAccrualDaoSpringOjbImpl.class);
37
38 public void saveOrUpdate(TimeOffAccrual timeOffAccrual) {
39 this.getPersistenceBrokerTemplate().store(timeOffAccrual);
40 }
41
42 public void saveOrUpdate(List<TimeOffAccrual> timeOffAccrualList) {
43 if (timeOffAccrualList != null) {
44 for (TimeOffAccrual timeOffAccrual : timeOffAccrualList) {
45 this.getPersistenceBrokerTemplate().store(timeOffAccrual);
46 }
47 }
48 }
49
50 public List<TimeOffAccrual> getTimeOffAccruals (String principalId) {
51
52 List<TimeOffAccrual> timeOffAccruals = new LinkedList<TimeOffAccrual>();
53
54 Criteria root = new Criteria();
55 Criteria effdt = new Criteria();
56
57
58 effdt.addEqualToField("principalId", Criteria.PARENT_QUERY_PREFIX + "principalId");
59 effdt.addEqualToField("accrualCategory", Criteria.PARENT_QUERY_PREFIX + "accrualCategory");
60 ReportQueryByCriteria effdtSubQuery = QueryFactory.newReportQuery(TimeOffAccrual.class, effdt);
61 effdtSubQuery.setAttributes(new String[] { "max(effdt)" });
62
63 root.addEqualTo("principalId", principalId);
64 root.addEqualTo("effectiveDate", effdtSubQuery);
65
66 Query query = QueryFactory.newQuery(TimeOffAccrual.class, root);
67 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
68
69 if (c != null) {
70 timeOffAccruals.addAll(c);
71 }
72
73 return timeOffAccruals;
74 }
75
76 @Override
77 public TimeOffAccrual getTimeOffAccrual(Long laTimeOffAccrualId) {
78 Criteria crit = new Criteria();
79 crit.addEqualTo("lmAccrualId", laTimeOffAccrualId);
80
81 Query query = QueryFactory.newQuery(TimeOffAccrual.class, crit);
82 return (TimeOffAccrual)this.getPersistenceBrokerTemplate().getObjectByQuery(query);
83
84 }
85
86
87 public List<TimeOffAccrual> getActiveTimeOffAccruals (String principalId, Date asOfDate) {
88 List<TimeOffAccrual> timeOffAccruals = new LinkedList<TimeOffAccrual>();
89
90 Criteria root = new Criteria();
91 Criteria effdt = new Criteria();
92
93
94 effdt.addEqualToField("principalId", Criteria.PARENT_QUERY_PREFIX + "principalId");
95 effdt.addEqualToField("accrualCategory", Criteria.PARENT_QUERY_PREFIX + "accrualCategory");
96 effdt.addLessOrEqualThan("effectiveDate", asOfDate);
97 ReportQueryByCriteria effdtSubQuery = QueryFactory.newReportQuery(TimeOffAccrual.class, effdt);
98 effdtSubQuery.setAttributes(new String[] { "max(effdt)" });
99
100 root.addEqualTo("principalId", principalId);
101 root.addEqualTo("effectiveDate", effdtSubQuery);
102
103 Query query = QueryFactory.newQuery(TimeOffAccrual.class, root);
104 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
105
106 if (c != null) {
107 timeOffAccruals.addAll(c);
108 }
109
110 return timeOffAccruals;
111 }
112
113 @Override
114 public int getTimeOffAccrualCount(String accrualCategory, Date effectiveDate, String principalId, String lmAccrualId) {
115 Criteria crit = new Criteria();
116 crit.addEqualTo("accrualCategory", accrualCategory);
117 crit.addEqualTo("effectiveDate", effectiveDate);
118 crit.addEqualTo("principalId", principalId);
119 if(lmAccrualId != null) {
120 crit.addEqualTo("lmAccrualId", lmAccrualId);
121 }
122 Query query = QueryFactory.newQuery(TimeOffAccrual.class, crit);
123 return this.getPersistenceBrokerTemplate().getCount(query);
124 }
125
126 @Override
127 public List<TimeOffAccrual> getTimeOffAccruals(String principalId, String accrualCategory) {
128 Criteria crit = new Criteria();
129
130 List<TimeOffAccrual> results = new ArrayList<TimeOffAccrual>();
131
132 if(StringUtils.isNotBlank(principalId) && StringUtils.isNotEmpty(principalId)){
133 crit.addLike("principalId", principalId);
134 }
135 if(StringUtils.isNotBlank(accrualCategory)){
136 crit.addLike("accrualCategory", accrualCategory);
137 }
138
139 Query query = QueryFactory.newQuery(TimeOffAccrual.class, crit);
140 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
141 results.addAll(c);
142
143 return results;
144 }
145 }