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 @Override
107 public List<TimeBlock> getLatestEndTimestampForEarnCode(String earnCode) { //KPME937
108 List<TimeBlock> timeBlocks = new ArrayList<TimeBlock>();
109 Criteria root = new Criteria();
110 Criteria crit = new Criteria();
111 crit.addEqualTo("earnCode", earnCode);
112 ReportQueryByCriteria endTimestampSubQuery = QueryFactory.newReportQuery(TimeBlock.class, crit);
113 endTimestampSubQuery.setAttributes(new String[]{"max(endTimestamp)"});
114
115 root.addEqualTo("endTimestamp", endTimestampSubQuery);
116 root.addEqualTo("earnCode", earnCode);
117 Query query = QueryFactory.newQuery(TimeBlock.class, root);
118 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
119
120 if (c != null) {
121 timeBlocks.addAll(c);
122 }
123
124 return timeBlocks;
125 }
126
127 @Override
128 public List<TimeBlock> getOvernightTimeBlocks(String clockLogEndId) {
129 List<TimeBlock> timeBlocks = new ArrayList<TimeBlock>();
130 Criteria root = new Criteria();
131
132 root.addEqualTo("clockLogEndId", clockLogEndId);
133
134 Query query = QueryFactory.newQuery(TimeBlock.class, root);
135 Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
136
137 if (c != null) {
138 timeBlocks.addAll(c);
139 }
140
141 return timeBlocks;
142 }
143
144 @SuppressWarnings("unchecked")
145 @Override
146 public List<TimeBlock> getTimeBlocksWithEarnCode(String earnCode, Date effDate) {
147 Criteria root = new Criteria();
148 root.addEqualTo("earnCode", earnCode);
149 root.addGreaterOrEqualThan("beginTimestamp", effDate);
150 return (List<TimeBlock>) this.getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(TimeBlock.class, root));
151 }
152
153 }