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.lm.leaveblock.dao;
017
018 import java.util.ArrayList;
019 import java.util.Collection;
020 import java.util.Date;
021 import java.util.List;
022
023 import org.apache.log4j.Logger;
024 import org.apache.ojb.broker.query.Criteria;
025 import org.apache.ojb.broker.query.Query;
026 import org.apache.ojb.broker.query.QueryFactory;
027 import org.kuali.hr.lm.LMConstants;
028 import org.kuali.hr.lm.leaveblock.LeaveBlockHistory;
029 import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
030
031 public class LeaveBlockHistoryDaoSpringOjbImpl extends PlatformAwareDaoBaseOjb implements LeaveBlockHistoryDao {
032
033 @SuppressWarnings("unused")
034 private static final Logger LOG = Logger
035 .getLogger(LeaveBlockHistoryDaoSpringOjbImpl.class);
036
037 @Override
038 public void saveOrUpdate(LeaveBlockHistory leaveBlockHistory) {
039 this.getPersistenceBrokerTemplate().store(leaveBlockHistory);
040 }
041
042 @Override
043 public void saveOrUpdate(List<LeaveBlockHistory> leaveBlockHistoryList) {
044 if (leaveBlockHistoryList != null) {
045 for (LeaveBlockHistory leaveBlockHistory : leaveBlockHistoryList) {
046 this.getPersistenceBrokerTemplate().store(leaveBlockHistory);
047 }
048
049 }
050 }
051
052 @Override
053 public List<LeaveBlockHistory> getLeaveBlockHistoryByLmLeaveBlockId(
054 String lmLeaveBlockId) {
055 Criteria recordCriteria = new Criteria();
056 recordCriteria.addEqualTo("lmLeaveBlockId", lmLeaveBlockId);
057 Query query = QueryFactory.newQuery(LeaveBlockHistory.class,
058 recordCriteria);
059 return (List<LeaveBlockHistory>) this.getPersistenceBrokerTemplate()
060 .getCollectionByQuery(query);
061 }
062
063 @Override
064 public List<LeaveBlockHistory> getLeaveBlockHistories(String principalId,
065 List<String> requestStatus) {
066 Criteria recordCriteria = new Criteria();
067 recordCriteria.addEqualTo("principalId", principalId);
068 if (requestStatus != null) {
069 recordCriteria.addIn("requestStatus", requestStatus);
070 }
071 Query query = QueryFactory.newQuery(LeaveBlockHistory.class,
072 recordCriteria);
073 return (List<LeaveBlockHistory>) this.getPersistenceBrokerTemplate()
074 .getCollectionByQuery(query);
075 }
076
077 @Override
078 public List<LeaveBlockHistory> getLeaveBlockHistories(String principalId,String requestStatus, String action, Date currentDate) {
079 Criteria recordCriteria = new Criteria();
080 recordCriteria.addEqualTo("principalId", principalId);
081 if (requestStatus != null) {
082 recordCriteria.addEqualTo("requestStatus", requestStatus);
083 }
084 if(currentDate != null) {
085 recordCriteria.addGreaterThan("leaveDate", currentDate);
086 }
087 if(action != null) {
088 recordCriteria.addEqualTo("action", action);
089 }
090 Query query = QueryFactory.newQuery(LeaveBlockHistory.class,
091 recordCriteria);
092 return (List<LeaveBlockHistory>) this.getPersistenceBrokerTemplate()
093 .getCollectionByQuery(query);
094 }
095
096 @Override
097 public List<LeaveBlockHistory> getLeaveBlockHistoriesForLeaveDisplay(String principalId,
098 Date beginDate, Date endDate, boolean considerModifiedUser) {
099
100 List<LeaveBlockHistory> leaveBlockHistories = new ArrayList<LeaveBlockHistory>();
101
102 Criteria root = new Criteria();
103 root.addEqualTo("principalId", principalId);
104 root.addGreaterOrEqualThan("leaveDate", beginDate);
105 root.addLessOrEqualThan("leaveDate", endDate);
106 root.addEqualTo("action",LMConstants.ACTION.MODIFIED);
107 if(considerModifiedUser) {
108 root.addNotEqualTo("principalIdModified", principalId);
109 }
110
111 Criteria root1 = new Criteria();
112 root1.addEqualTo("principalId", principalId);
113 root1.addGreaterOrEqualThan("leaveDate", beginDate);
114 root1.addLessOrEqualThan("leaveDate", endDate);
115 root1.addEqualTo("action",LMConstants.ACTION.DELETE);
116 if(considerModifiedUser) {
117 root1.addNotEqualTo("principalIdDeleted", principalId);
118 }
119
120 root.addOrCriteria(root1);
121
122 Query query = QueryFactory.newQuery(LeaveBlockHistory.class, root);
123 Collection c = this.getPersistenceBrokerTemplate()
124 .getCollectionByQuery(query);
125
126 if (c != null) {
127 leaveBlockHistories.addAll(c);
128 }
129 return leaveBlockHistories;
130 }
131 }