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("endDate", payEndDate);
059 crit.addEqualTo("beginDate", 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("endDate", 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("beginDate", 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, Date payEndDate) {
096 Criteria crit = new Criteria();
097 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
098
099 crit.addEqualTo("endDate", payEndDate);
100 crit.addEqualTo("beginDate", payBeginDate);
101 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
102 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
103 if (c != null) {
104 lstDocumentHeaders.addAll(c);
105 }
106
107 return lstDocumentHeaders;
108 }
109
110 public List<TimesheetDocumentHeader> getDocumentHeadersForPrincipalId(String principalId) {
111 Criteria crit = new Criteria();
112 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
113
114 crit.addEqualTo("principalId", principalId);
115 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
116 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
117 if (c != null) {
118 lstDocumentHeaders.addAll(c);
119 }
120 return lstDocumentHeaders;
121 }
122
123 public List<TimesheetDocumentHeader> getDocumentHeadersForYear(String principalId, String year) {
124 Criteria crit = new Criteria();
125 List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
126
127 try {
128 crit.addEqualTo("principalId", principalId);
129 DateFormat df = new SimpleDateFormat("yyyy");
130 java.util.Date cYear = df.parse(year);
131 String nextYear = Integer.toString((Integer.parseInt(year) + 1));
132 java.util.Date nYear = df.parse(nextYear);
133
134 crit.addGreaterOrEqualThan("beginDate", cYear);
135 crit.addLessThan("beginDate", nYear );
136 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
137 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
138 if (c != null) {
139 lstDocumentHeaders.addAll(c);
140 }
141 } catch (ParseException e) {
142 // TODO Auto-generated catch block
143 e.printStackTrace();
144 }
145 return lstDocumentHeaders;
146 }
147
148 public TimesheetDocumentHeader getDocumentHeaderForDate(String principalId, Date asOfDate) {
149 Criteria crit = new Criteria();
150 crit.addEqualTo("principalId", principalId);
151 crit.addLessOrEqualThan("beginDate", asOfDate);
152 crit.addGreaterOrEqualThan("endDate", asOfDate);
153
154 QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
155
156 return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
157 }
158 }