View Javadoc

1   /**
2    * Copyright 2004-2014 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.kpme.tklm.time.workflow.dao;
17  
18  import java.util.ArrayList;
19  import java.util.Collection;
20  import java.util.List;
21  
22  import org.apache.ojb.broker.query.Criteria;
23  import org.apache.ojb.broker.query.QueryByCriteria;
24  import org.apache.ojb.broker.query.QueryFactory;
25  import org.joda.time.DateTime;
26  import org.joda.time.LocalDate;
27  import org.joda.time.format.DateTimeFormat;
28  import org.joda.time.format.DateTimeFormatter;
29  import org.kuali.kpme.tklm.time.workflow.TimesheetDocumentHeader;
30  import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
31  
32  public class TimesheetDocumentHeaderDaoOjbImpl extends PlatformAwareDaoBaseOjb implements TimesheetDocumentHeaderDao {
33  
34      @Override
35      public TimesheetDocumentHeader getTimesheetDocumentHeader(String documentId) {
36          Criteria crit = new Criteria();
37          crit.addEqualTo("documentId", documentId);
38          return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(TimesheetDocumentHeader.class, crit));
39      }
40  
41      @Override
42      public void saveOrUpdate(TimesheetDocumentHeader documentHeader) {
43          if (documentHeader != null) {
44              this.getPersistenceBrokerTemplate().store(documentHeader);
45          }
46      }
47      
48      public void deleteTimesheetHeader(String documentId){
49          Criteria crit = new Criteria();
50          crit.addEqualTo("documentId", documentId);
51          this.getPersistenceBrokerTemplate().deleteByQuery(QueryFactory.newQuery(TimesheetDocumentHeader.class, crit));
52      }
53  
54      @Override
55      public TimesheetDocumentHeader getTimesheetDocumentHeader(String principalId, DateTime payBeginDate, DateTime payEndDate) {
56          Criteria crit = new Criteria();
57          crit.addEqualTo("principalId", principalId);
58          crit.addEqualTo("endDate", payEndDate.toDate());
59          crit.addEqualTo("beginDate", payBeginDate.toDate());
60  
61          return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(TimesheetDocumentHeader.class, crit));
62      }
63  
64      /**
65       * Document header IDs are ordered, so an ID less than the current will
66       * always be previous to current.
67       */
68      public TimesheetDocumentHeader getPreviousDocumentHeader(String principalId, DateTime payBeginDate) {
69          Criteria crit = new Criteria();
70          crit.addEqualTo("principalId", principalId);
71          // the pay begin date is the end date of the previous pay period
72          crit.addEqualTo("endDate", payBeginDate.toDate());
73          QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
74          query.addOrderByDescending("documentId");
75          query.setStartAtIndex(0);
76          query.setEndAtIndex(1);
77  
78          return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
79      }
80  
81      @Override
82      public TimesheetDocumentHeader getNextDocumentHeader(String principalId, DateTime payEndDate) {
83          Criteria crit = new Criteria();
84          crit.addEqualTo("principalId", principalId);
85          // the pay end date is the begin date of the next pay period
86          crit.addEqualTo("beginDate", payEndDate.toDate());
87          QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
88          query.setStartAtIndex(0);
89          query.setEndAtIndex(1);
90  
91          return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
92      }
93      
94      @Override
95      public List<TimesheetDocumentHeader> getDocumentHeaders(DateTime payBeginDate, DateTime payEndDate) {
96          Criteria crit = new Criteria();
97          List<TimesheetDocumentHeader> lstDocumentHeaders = new ArrayList<TimesheetDocumentHeader>();
98          
99          crit.addEqualTo("endDate", payEndDate.toDate());
100         crit.addEqualTo("beginDate", payBeginDate.toDate());
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     	 crit.addEqualTo("principalId", principalId);
128     	 DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy");
129     	 LocalDate currentYear = formatter.parseLocalDate(year);
130     	 LocalDate nextYear = currentYear.plusYears(1);
131     	 crit.addGreaterOrEqualThan("beginDate", currentYear.toDate());
132     	 crit.addLessThan("beginDate", nextYear.toDate());
133     	 
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     	 
140     	 return lstDocumentHeaders;
141    }
142    
143    public TimesheetDocumentHeader getDocumentHeaderForDate(String principalId, DateTime asOfDate) {
144 	   Criteria crit = new Criteria();
145        crit.addEqualTo("principalId", principalId);
146        crit.addLessOrEqualThan("beginDate", asOfDate.toDate());
147        crit.addGreaterThan("endDate", asOfDate.toDate());
148        
149        QueryByCriteria query = new QueryByCriteria(TimesheetDocumentHeader.class, crit);
150 
151        return (TimesheetDocumentHeader) this.getPersistenceBrokerTemplate().getObjectByQuery(query); 
152    }
153 }