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.Time;
019 import java.util.ArrayList;
020 import java.util.List;
021
022 import org.apache.commons.lang.StringUtils;
023 import org.joda.time.DateTimeConstants;
024 import org.kuali.hr.core.KPMEConstants;
025 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
026
027 public class Calendar extends PersistableBusinessObjectBase {
028 public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "Calendar";
029 /**
030 *
031 */
032 private static final long serialVersionUID = 1L;
033
034 private String hrCalendarId;
035 private String calendarName;
036 private String calendarDescriptions;
037
038 private String flsaBeginDay;
039 private Time flsaBeginTime;
040 private String calendarTypes = "Pay";
041 private int flsaBeginDayConstant = -1;
042
043 private List<CalendarEntries> calendarEntries = new ArrayList<CalendarEntries>();
044
045 public Calendar() {
046
047 }
048
049 public String getHrCalendarId() {
050 return hrCalendarId;
051 }
052
053
054
055 public void setHrCalendarId(String hrCalendarId) {
056 this.hrCalendarId = hrCalendarId;
057 }
058
059
060
061 public String getCalendarName() {
062 return calendarName;
063 }
064
065
066
067 public void setCalendarName(String calendarName) {
068 this.calendarName = calendarName;
069 }
070
071
072
073 public String getCalendarTypes() {
074 return calendarTypes;
075 }
076
077
078
079 public void setCalendarTypes(String calendarTypes) {
080 this.calendarTypes = calendarTypes;
081 }
082
083
084
085 public List<CalendarEntries> getCalendarEntries() {
086 return calendarEntries;
087 }
088
089
090
091 public void setCalendarEntries(List<CalendarEntries> calendarEntries) {
092 this.calendarEntries = calendarEntries;
093 }
094
095
096
097 public void setFlsaBeginDayConstant(int flsaBeginDayConstant) {
098 this.flsaBeginDayConstant = flsaBeginDayConstant;
099 }
100
101 public String getCalendarDescriptions() {
102 return calendarDescriptions;
103 }
104
105 public void setCalendarDescriptions(String calendarDescriptions) {
106 this.calendarDescriptions = calendarDescriptions;
107 }
108
109 public String getFlsaBeginDay() {
110 return flsaBeginDay;
111 }
112
113 public void setFlsaBeginDay(String flsaBeginDay) {
114 this.flsaBeginDay = flsaBeginDay;
115 this.setFlsaBeinDayConstant(flsaBeginDay);
116 }
117
118 public Time getFlsaBeginTime() {
119 return flsaBeginTime;
120 }
121
122 public void setFlsaBeginTime(Time flsaBeginTime) {
123 this.flsaBeginTime = flsaBeginTime;
124 }
125
126 /**
127 * This method sets a constant matching those listed in
128 * org.joda.time.DateTimeConstants for day comparisons.
129 *
130 * Currently this is 'hard-coded' to be English specific, it would
131 * be trivial to change and support more than one language/day naming
132 * convention.
133 *
134 * @param day
135 */
136 private void setFlsaBeinDayConstant(String day) {
137 if (!StringUtils.isEmpty(day)) {
138 day = day.toLowerCase().trim();
139
140 if (day.startsWith("m")) {
141 this.flsaBeginDayConstant = DateTimeConstants.MONDAY;
142 } else if (day.startsWith("tu")) {
143 this.flsaBeginDayConstant = DateTimeConstants.TUESDAY;
144 } else if (day.startsWith("w")) {
145 this.flsaBeginDayConstant = DateTimeConstants.WEDNESDAY;
146 } else if (day.startsWith("th")) {
147 this.flsaBeginDayConstant = DateTimeConstants.THURSDAY;
148 } else if (day.startsWith("f")) {
149 this.flsaBeginDayConstant = DateTimeConstants.FRIDAY;
150 } else if (day.startsWith("sa")) {
151 this.flsaBeginDayConstant = DateTimeConstants.SATURDAY;
152 } else if (day.startsWith("su")) {
153 this.flsaBeginDayConstant = DateTimeConstants.SUNDAY;
154 }
155 }
156 }
157
158 /**
159 * org.joda.time.DateTimeConstants.MONDAY
160 * ...
161 * org.joda.time.DateTimeConstants.SUNDAY
162 *
163 * @return an int representing the FLSA start day, sourced from
164 * org.joda.time.DateTimeConstants in the interval [1,7].
165 */
166 public int getFlsaBeginDayConstant() {
167 if (flsaBeginDayConstant < 0) {
168 this.setFlsaBeinDayConstant(this.getFlsaBeginDay());
169 }
170 return flsaBeginDayConstant;
171 }
172
173 @Override
174 public boolean equals(Object o) {
175 if (o instanceof Calendar) {
176 Calendar pc = (Calendar)o;
177 return this.getHrCalendarId().compareTo(pc.getHrCalendarId()) == 0;
178 } else {
179 return false;
180 }
181 }
182 }