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.workflow.dao;
017
018 import java.text.DateFormat;
019 import java.text.ParseException;
020 import java.text.SimpleDateFormat;
021 import java.util.ArrayList;
022 import java.util.Collection;
023 import java.util.Date;
024 import java.util.List;
025
026 import org.apache.ojb.broker.query.Criteria;
027 import org.apache.ojb.broker.query.QueryByCriteria;
028 import org.apache.ojb.broker.query.QueryFactory;
029 import org.kuali.hr.time.workflow.TimesheetDocumentHeader;
030 import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
031
032 public class TimesheetDocumentHeaderDaoSpringOjbImpl extends PlatformAwareDaoBaseOjb implements TimesheetDocumentHeaderDao {
033
034 @Override
035 public TimesheetDocumentHeader getTimesheetDocumentHeader(String documentId) {
036 Criteria crit = new Criteria();
037 crit.addEqualTo("documentId", documentId);
038 return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(TimesheetDocumentHeader.class, crit));
039 }
040
041 @Override
042 public void saveOrUpdate(TimesheetDocumentHeader documentHeader) {
043 if (documentHeader != null) {
044 this.getPersistenceBrokerTemplate().store(documentHeader);
045 }
046 }
047
048 public void deleteTimesheetHeader(String documentId){
049 Criteria crit = new Criteria();
050 crit.addEqualTo("documentId", documentId);
051 this.getPersistenceBrokerTemplate().deleteByQuery(QueryFactory.newQuery(TimesheetDocumentHeader.class, crit));
052 }
053
054 @Override
055 public TimesheetDocumentHeader getTimesheetDocumentHeader(String principalId, Date payBeginDate, Date payEndDate) {
056 Criteria crit = new Criteria();
057 crit.addEqualTo("principalId", principalId);
058 crit.addEqualTo("payEndDate", payEndDate);
059 crit.addEqualTo("payBeginDate", payBeginDate);
060
061 return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(TimesheetDocumentHeader.class, crit));
062 }
063
064 /**
065 * Document header IDs are ordered, so an ID less than the current will
066 * always be previous to current.
067 */
068 public TimesheetDocumentHeader getPreviousDocumentHeader(String principalId, Date payBeginDate) {
069 Criteria crit = new Criteria();
070 crit.addEqualTo("principalId", principalId);
071 // the pay begin date is the end date of the previous pay period
072 crit.addEqualTo("payEndDate", payBeginDate);
073 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
074 query.addOrderByDescending("documentId");
075 query.setStartAtIndex(0);
076 query.setEndAtIndex(1);
077
078 return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
079 }
080
081 @Override
082 public TimesheetDocumentHeader getNextDocumentHeader(String principalId, Date payEndDate) {
083 Criteria crit = new Criteria();
084 crit.addEqualTo("principalId", principalId);
085 // the pay end date is the begin date of the next pay period
086 crit.addEqualTo("payBeginDate", payEndDate);
087 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
088 query.setStartAtIndex(0);
089 query.setEndAtIndex(1);
090
091 return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
092 }
093
094 @Override
095 public List<TimesheetDocumentHeader> getDocumentHeaders(Date payBeginDate) {
096 Criteria crit = new Criteria();
097 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
098
099 crit.addEqualTo("payBeginDate", payBeginDate);
100 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
101 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
102 if (c != null) {
103 lstDocumentHeaders.addAll(c);
104 }
105
106 return lstDocumentHeaders;
107 }
108
109 @Override
110 public List<TimesheetDocumentHeader> getDocumentHeaders(Date payBeginDate, Date payEndDate) {
111 Criteria crit = new Criteria();
112 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
113
114 crit.addEqualTo("payEndDate", payEndDate);
115 crit.addEqualTo("payBeginDate", payBeginDate);
116 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
117 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
118 if (c != null) {
119 lstDocumentHeaders.addAll(c);
120 }
121
122 return lstDocumentHeaders;
123 }
124
125 public List<TimesheetDocumentHeader> getDocumentHeadersForPrincipalId(String principalId) {
126 Criteria crit = new Criteria();
127 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
128
129 crit.addEqualTo("principalId", principalId);
130 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
131 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
132 if (c != null) {
133 lstDocumentHeaders.addAll(c);
134 }
135 return lstDocumentHeaders;
136 }
137
138 public List<TimesheetDocumentHeader> getDocumentHeadersForYear(String principalId, String year) {
139 Criteria crit = new Criteria();
140 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
141
142 try {
143 crit.addEqualTo("principalId", principalId);
144 DateFormat df = new SimpleDateFormat("yyyy");
145 java.util.Date cYear = df.parse(year);
146 String nextYear = Integer.toString((Integer.parseInt(year) + 1));
147 java.util.Date nYear = df.parse(nextYear);
148
149 crit.addGreaterOrEqualThan("payBeginDate", cYear);
150 crit.addLessThan("payBeginDate", nYear );
151 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
152 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
153 if (c != null) {
154 lstDocumentHeaders.addAll(c);
155 }
156 } catch (ParseException e) {
157 // TODO Auto-generated catch block
158 e.printStackTrace();
159 }
160 return lstDocumentHeaders;
161 }
162
163 public TimesheetDocumentHeader getDocumentHeaderForDate(String principalId, Date asOfDate) {
164 Criteria crit = new Criteria();
165 crit.addEqualTo("principalId", principalId);
166 crit.addLessOrEqualThan("payBeginDate", asOfDate);
167 crit.addGreaterOrEqualThan("payEndDate", asOfDate);
168
169 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
170
171 return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
172 }
173 }