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.timeblock.dao;
017
018 import java.sql.Date;
019 import java.util.ArrayList;
020 import java.util.Collection;
021 import java.util.LinkedList;
022 import java.util.List;
023
024 import org.apache.log4j.Logger;
025 import org.apache.ojb.broker.query.Criteria;
026 import org.apache.ojb.broker.query.Query;
027 import org.apache.ojb.broker.query.QueryFactory;
028 import org.apache.ojb.broker.query.ReportQueryByCriteria;
029 import org.kuali.hr.time.assignment.Assignment;
030 import org.kuali.hr.time.timeblock.TimeBlock;
031 import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
032
033 public class TimeBlockDaoSpringOjbImpl extends PlatformAwareDaoBaseOjb implements TimeBlockDao {
034
035 @SuppressWarnings("unused")
036 private static final Logger LOG = Logger.getLogger(TimeBlockDaoSpringOjbImpl.class);
037
038 public void saveOrUpdate(TimeBlock timeBlock) {
039 this.getPersistenceBrokerTemplate().store(timeBlock);
040 }
041
042 public void saveOrUpdate(List<TimeBlock> timeBlockList) {
043 if (timeBlockList != null) {
044 for (TimeBlock timeBlock : timeBlockList) {
045 this.getPersistenceBrokerTemplate().store(timeBlock);
046 }
047 }
048 }
049
050 public TimeBlock getTimeBlock(String tkTimeBlockId) {
051 Criteria currentRecordCriteria = new Criteria();
052 currentRecordCriteria.addEqualTo("tkTimeBlockId", tkTimeBlockId);
053
054 return (TimeBlock) this.getPersistenceBrokerTemplate().getObjectByQuery(QueryFactory.newQuery(TimeBlock.class, currentRecordCriteria));
055 }
056
057 @SuppressWarnings("unchecked")
058 public List<TimeBlock> getTimeBlocks(String documentId) {
059 Criteria currentRecordCriteria = new Criteria();
060 currentRecordCriteria.addEqualTo("documentId", documentId);
061 Query query = QueryFactory.newQuery(TimeBlock.class, currentRecordCriteria);
062 List<TimeBlock> timeBlocks = (List<TimeBlock>) this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
063 return timeBlocks == null || timeBlocks.size() == 0 ? new LinkedList<TimeBlock>() : timeBlocks;
064 }
065
066 @SuppressWarnings("unchecked")
067 public List<TimeBlock> getTimeBlocksForAssignment(Assignment assign) {
068 Criteria rootCriteria = new Criteria();
069 rootCriteria.addEqualTo("principalId", assign.getPrincipalId());
070 rootCriteria.addEqualTo("jobNumber", assign.getJobNumber());
071 rootCriteria.addEqualTo("task", assign.getTask());
072 rootCriteria.addEqualTo("workArea", assign.getWorkArea());
073 Query query = QueryFactory.newQuery(TimeBlock.class, rootCriteria);
074 List<TimeBlock> timeBlocks = (List<TimeBlock>) this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
075 return timeBlocks == null || timeBlocks.isEmpty() ? new ArrayList<TimeBlock>() : timeBlocks;
076 }
077
078 public void deleteTimeBlock(TimeBlock timeBlock) {
079 this.getPersistenceBrokerTemplate().delete(timeBlock);
080 }
081
082
083 public void deleteTimeBlocksAssociatedWithDocumentId(String documentId) {
084 Criteria crit = new Criteria();
085 crit.addEqualTo("documentId", documentId);
086 this.getPersistenceBrokerTemplate().deleteByQuery(QueryFactory.newQuery(TimeBlock.class, crit));
087
088 }
089
090 @SuppressWarnings("unchecked")
091 @Override
092 public List<TimeBlock> getTimeBlocksForClockLogEndId(String tkClockLogId) {
093 Criteria crit = new Criteria();
094 crit.addEqualTo("clockLogEndId", tkClockLogId);
095 return (List<TimeBlock>) this.getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(TimeBlock.class, crit));
096 }
097
098 @SuppressWarnings("unchecked")
099 @Override
100 public List<TimeBlock> getTimeBlocksForClockLogBeginId(String tkClockLogId) {
101 Criteria crit = new Criteria();
102 crit.addEqualTo("clockLogBeginId", tkClockLogId);
103 return (List<TimeBlock>) this.getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(TimeBlock.class, crit));
104 }
105
106 public List<TimeBlock> getTimeBlocks() { //KPME937
107 List<TimeBlock> timeBlocks = new ArrayList<TimeBlock>();
108 Criteria crit = new Criteria();
109
110 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(TimeBlock.class, crit));
111
112 if (c != null) {
113 timeBlocks.addAll(c);
114 }
115
116 return timeBlocks;
117 }
118
119 @Override
120 public List<TimeBlock> getLatestEndTimestamp() { //KPME937
121 List<TimeBlock> timeBlocks = new ArrayList<TimeBlock>();
122 Criteria root = new Criteria();
123 Criteria crit = new Criteria();
124
125 ReportQueryByCriteria endTimestampSubQuery = QueryFactory.newReportQuery(TimeBlock.class, crit);
126 endTimestampSubQuery.setAttributes(new String[]{"max(endTimestamp)"});
127
128 root.addEqualTo("endTimestamp", endTimestampSubQuery);
129
130 Query query = QueryFactory.newQuery(TimeBlock.class, root);
131 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
132
133 if (c != null) {
134 timeBlocks.addAll(c);
135 }
136
137 return timeBlocks;
138 }
139
140 @Override
141 public List<TimeBlock> getOvernightTimeBlocks(String clockLogEndId) {
142 List<TimeBlock> timeBlocks = new ArrayList<TimeBlock>();
143 Criteria root = new Criteria();
144
145 root.addEqualTo("clockLogEndId", clockLogEndId);
146
147 Query query = QueryFactory.newQuery(TimeBlock.class, root);
148 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
149
150 if (c != null) {
151 timeBlocks.addAll(c);
152 }
153
154 return timeBlocks;
155 }
156
157 @SuppressWarnings("unchecked")
158 @Override
159 public List<TimeBlock> getTimeBlocksWithEarnCode(String earnCode, Date effDate) {
160 Criteria root = new Criteria();
161 root.addEqualTo("earnCode", earnCode);
162 root.addGreaterOrEqualThan("beginTimestamp", effDate);
163 return (List<TimeBlock>) this.getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(TimeBlock.class, root));
164 }
165
166 }