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.calendar;
017    
018    import java.sql.Date;
019    import java.sql.Time;
020    
021    import javax.persistence.Transient;
022    
023    import org.joda.time.DateTime;
024    import org.joda.time.LocalDateTime;
025    import org.kuali.hr.core.KPMEConstants;
026    import org.kuali.hr.time.service.base.TkServiceLocator;
027    import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
028    
029    /**
030     * This class uses java.sql.Time and java.sql.Date because for each respective component
031     * we are only interested in a partial Date or Time, that is for example:
032     * <p/>
033     * 3:55 pm   (at any date)
034     * 6/22/2010 (at any time)
035     *
036     * Make sure you are aware of whether or not you need a Local Relative time or
037     * an absolute server time.
038     *
039     * Local Relative Time Methods: (Time/Date without Timezone)
040     *
041     * LocalDateTime : getBeginLocalDateTime()
042     * LocalDateTime : getEndLocalDateTime()
043     *
044     * Absolute Methods:
045     *
046     * java.util.Date : getEndPeriodDateTime()
047     * java.util.Date : getBeginPeriodDateTime()
048     *
049     */
050    public class CalendarEntries extends PersistableBusinessObjectBase implements Comparable<CalendarEntries>{
051        public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "CalendarEntries";
052        /**
053         *
054         */
055        private static final long serialVersionUID = 1L;
056    
057        private String hrCalendarEntriesId;
058        private String hrCalendarId;
059        private String calendarName;
060    
061        private java.util.Date beginPeriodDateTime;
062    
063        private java.util.Date endPeriodDateTime;
064    
065        @Transient
066        private java.sql.Date beginPeriodDate;
067        @Transient
068        private java.sql.Date endPeriodDate;
069        @Transient
070        private Time beginPeriodTime;
071        @Transient
072        private Time endPeriodTime;
073    
074        private Date batchInitiateDate;
075        private Time batchInitiateTime;
076    
077        //this property is for the batch job
078        //that runs at the end of pay period
079        private Date batchEndPayPeriodDate;
080        private Time batchEndPayPeriodTime;
081    
082        private Date batchEmployeeApprovalDate;
083        private Time batchEmployeeApprovalTime;
084    
085        private Date batchSupervisorApprovalDate;
086        private Time batchSupervisorApprovalTime;
087    
088        private Calendar calendarObj;
089    
090    
091        /**
092         * Provides the Begin Period time without timezone information, used
093         * for relative calculations.
094         *
095         * @return A LocalDateTime representation of the begin period date/time.
096         */
097        public LocalDateTime getBeginLocalDateTime() {
098            return (new DateTime(this.getBeginPeriodDateTime())).toLocalDateTime();
099        }
100    
101        /**
102         * Provides the End Period time without timezone information, used
103         * for relative calculations.
104         *
105         * @return A LocalDateTime representation of the end period date/time.
106         */
107        public LocalDateTime getEndLocalDateTime() {
108            return (new DateTime(this.getEndPeriodDateTime())).toLocalDateTime();
109        }
110    
111        public String getHrCalendarId() {
112            calendarObj = TkServiceLocator.getCalendarService().getCalendarByGroup(this.getCalendarName());
113            if (calendarObj != null) {
114                this.setHrCalendarId(calendarObj.getHrCalendarId());
115            }
116            return hrCalendarId;
117        }
118    
119        public void setHrCalendarId(String hrCalendarId) {
120            this.hrCalendarId = hrCalendarId;
121        }
122    
123        public String getHrCalendarEntriesId() {
124                    return hrCalendarEntriesId;
125            }
126    
127            public void setHrCalendarEntriesId(String hrCalendarEntriesId) {
128                    this.hrCalendarEntriesId = hrCalendarEntriesId;
129            }
130    
131            public String getCalendarName() {
132                    return calendarName;
133            }
134    
135            public void setCalendarName(String calendarName) {
136                    this.calendarName = calendarName;
137            }
138    
139            public java.util.Date getBeginPeriodDateTime() {
140            return beginPeriodDateTime;
141        }
142    
143        public void setBeginPeriodDateTime(java.util.Date beginPeriodDateTime) {
144            this.beginPeriodDateTime = beginPeriodDateTime;
145            if (beginPeriodDateTime != null) {
146                setBeginPeriodDate(new java.sql.Date(beginPeriodDateTime.getTime()));
147                setBeginPeriodTime(new java.sql.Time(beginPeriodDateTime.getTime()));
148            }
149        }
150    
151        public java.util.Date getEndPeriodDateTime() {
152            return endPeriodDateTime;
153        }
154    
155        public void setEndPeriodDateTime(java.util.Date endPeriodDateTime) {
156            this.endPeriodDateTime = endPeriodDateTime;
157            if (endPeriodDateTime != null) {
158                setEndPeriodDate(new java.sql.Date(endPeriodDateTime.getTime()));
159                setEndPeriodTime(new java.sql.Time(endPeriodDateTime.getTime()));
160            }
161        }
162    
163        public java.sql.Date getBeginPeriodDate() {
164            if(beginPeriodDate == null && this.getBeginPeriodDateTime() != null) {
165                    setBeginPeriodDate(new java.sql.Date(this.getBeginPeriodDateTime().getTime()));
166            }
167            return beginPeriodDate;
168        }
169    
170        public void setBeginPeriodDate(java.sql.Date beginPeriodDate) {
171            this.beginPeriodDate = beginPeriodDate;
172        }
173    
174        public java.sql.Date getEndPeriodDate() {
175            if(endPeriodDate == null && this.getEndPeriodDateTime() != null) {
176                    setEndPeriodDate(new java.sql.Date(this.getEndPeriodDateTime().getTime()));
177            }
178            return endPeriodDate;
179        }
180    
181        public void setEndPeriodDate(java.sql.Date endPeriodDate) {
182            this.endPeriodDate = endPeriodDate;
183        }
184    
185        public Time getBeginPeriodTime() {
186            return beginPeriodTime;
187        }
188    
189        public void setBeginPeriodTime(Time beginPeriodTime) {
190            this.beginPeriodTime = beginPeriodTime;
191        }
192    
193        public Time getEndPeriodTime() {
194            return endPeriodTime;
195        }
196    
197        public void setEndPeriodTime(Time endPeriodTime) {
198            this.endPeriodTime = endPeriodTime;
199        }
200    
201        public Date getBatchInitiateDate() {
202            return batchInitiateDate;
203        }
204    
205        public void setBatchInitiateDate(Date batchInitiateDate) {
206            this.batchInitiateDate = batchInitiateDate;
207        }
208    
209        public Time getBatchInitiateTime() {
210            return batchInitiateTime;
211        }
212    
213        public void setBatchInitiateTime(Time batchInitiateTime) {
214            this.batchInitiateTime = batchInitiateTime;
215        }
216    
217        public Date getBatchEndPayPeriodDate() {
218            return batchEndPayPeriodDate;
219        }
220    
221        public void setBatchEndPayPeriodDate(Date batchEndPayPeriodDate) {
222            this.batchEndPayPeriodDate = batchEndPayPeriodDate;
223        }
224    
225        public Time getBatchEndPayPeriodTime() {
226            return batchEndPayPeriodTime;
227        }
228    
229        public void setBatchEndPayPeriodTime(Time batchEndPayPeriodTime) {
230            this.batchEndPayPeriodTime = batchEndPayPeriodTime;
231        }
232    
233        public Date getBatchEmployeeApprovalDate() {
234            return batchEmployeeApprovalDate;
235        }
236    
237        public void setBatchEmployeeApprovalDate(Date batchEmployeeApprovalDate) {
238            this.batchEmployeeApprovalDate = batchEmployeeApprovalDate;
239        }
240    
241        public Time getBatchEmployeeApprovalTime() {
242            return batchEmployeeApprovalTime;
243        }
244    
245        public void setBatchEmployeeApprovalTime(Time batchEmployeeApprovalTime) {
246            this.batchEmployeeApprovalTime = batchEmployeeApprovalTime;
247        }
248    
249        public Date getBatchSupervisorApprovalDate() {
250            return batchSupervisorApprovalDate;
251        }
252    
253        public void setBatchSupervisorApprovalDate(Date batchSupervisorApprovalDate) {
254            this.batchSupervisorApprovalDate = batchSupervisorApprovalDate;
255        }
256    
257        public Time getBatchSupervisorApprovalTime() {
258            return batchSupervisorApprovalTime;
259        }
260    
261        public void setBatchSupervisorApprovalTime(Time batchSupervisorApprovalTime) {
262            this.batchSupervisorApprovalTime = batchSupervisorApprovalTime;
263        }
264    
265            public Calendar getCalendarObj() {
266                    return calendarObj;
267            }
268    
269            public void setCalendarObj(Calendar calendarObj) {
270                    this.calendarObj = calendarObj;
271            }
272    
273        public int compareTo(CalendarEntries pce) {
274            return this.getBeginPeriodDate().compareTo(pce.getBeginPeriodDate());
275        }
276    
277    }