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