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