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