001
014
015
044
045 package com.liferay.portal.kernel.cal;
046
047 import com.liferay.portal.kernel.util.HashCode;
048 import com.liferay.portal.kernel.util.HashCodeFactoryUtil;
049 import com.liferay.portal.kernel.util.StringBundler;
050
051 import java.io.Serializable;
052
053 import java.util.Calendar;
054
055
058 public class DayAndPosition implements Cloneable, Serializable {
059
060
063 private int day;
064
065
068 private int position;
069
070
073 public static final int NO_WEEKDAY = 0;
074
075
078 public DayAndPosition() {
079 day = NO_WEEKDAY;
080 position = 0;
081 }
082
083
086 public DayAndPosition(int d, int p) {
087 if (!isValidDayOfWeek(d)) {
088 throw new IllegalArgumentException("Invalid day of week");
089 }
090
091 if (!isValidDayPosition(p)) {
092 throw new IllegalArgumentException("Invalid day position");
093 }
094
095 day = d;
096 position = p;
097 }
098
099
104 public int getDayOfWeek() {
105 return day;
106 }
107
108
111 public void setDayOfWeek(int d) {
112 if (!isValidDayOfWeek(d)) {
113 throw new IllegalArgumentException("Invalid day of week");
114 }
115
116 day = d;
117 }
118
119
124 public int getDayPosition() {
125 return position;
126 }
127
128
131 public void setDayPosition(int p) {
132 if (!isValidDayPosition(p)) {
133 throw new IllegalArgumentException();
134 }
135
136 position = p;
137 }
138
139
144 public boolean equals(Object obj) {
145 if (obj == null) {
146 return false;
147 }
148
149 if (this == obj) {
150 return true;
151 }
152
153 if (!(obj instanceof DayAndPosition)) {
154 return false;
155 }
156
157 DayAndPosition that = (DayAndPosition)obj;
158
159 return (getDayOfWeek() == that.getDayOfWeek())
160 && (getDayPosition() == that.getDayPosition());
161 }
162
163 public int hashCode() {
164 HashCode hashCode = HashCodeFactoryUtil.getHashCode();
165
166 hashCode.append(day);
167 hashCode.append(position);
168
169 return hashCode.toHashCode();
170 }
171
172
177 public static boolean isValidDayOfWeek(int d) {
178 switch (d) {
179
180 case NO_WEEKDAY :
181 case Calendar.SUNDAY :
182 case Calendar.MONDAY :
183 case Calendar.TUESDAY :
184 case Calendar.WEDNESDAY :
185 case Calendar.THURSDAY :
186 case Calendar.FRIDAY :
187 case Calendar.SATURDAY :
188 return true;
189
190 default :
191 return false;
192 }
193 }
194
195
200 public static boolean isValidDayPosition(int p) {
201 return ((p >= -53) && (p <= 53));
202 }
203
204
209 public Object clone() {
210 try {
211 DayAndPosition other = (DayAndPosition)super.clone();
212
213 other.day = day;
214 other.position = position;
215
216 return other;
217 }
218 catch (CloneNotSupportedException e) {
219 throw new InternalError();
220 }
221 }
222
223
228 public String toString() {
229 StringBundler sb = new StringBundler(6);
230
231 sb.append(getClass().getName());
232 sb.append("[day=");
233 sb.append(day);
234 sb.append(",position=");
235 sb.append(position);
236 sb.append("]");
237
238 return sb.toString();
239 }
240
241 }