001: /*
002: * Copyright (c) 2000, Columbia University. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * 1. Redistributions of source code must retain the above copyright
008: * notice, this list of conditions and the following disclaimer.
009: *
010: * 2. Redistributions in binary form must reproduce the above copyright
011: * notice, this list of conditions and the following disclaimer in the
012: * documentation and/or other materials provided with the distribution.
013: *
014: * 3. Neither the name of the University nor the names of its contributors
015: * may be used to endorse or promote products derived from this software
016: * without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
019: * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
022: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
027: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
028: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package com.liferay.portal.kernel.cal;
032:
033: import com.liferay.portal.kernel.util.StringMaker;
034:
035: import java.io.Serializable;
036:
037: import java.util.Calendar;
038:
039: /**
040: * <a href="DayAndPosition.java.html"><b><i>View Source</i></b></a>
041: *
042: * @author Jonathan Lennox
043: *
044: */
045: public class DayAndPosition implements Cloneable, Serializable {
046:
047: /**
048: * Field day
049: */
050: private int day;
051:
052: /**
053: * Field position
054: */
055: private int position;
056:
057: /**
058: * Field NO_WEEKDAY
059: */
060: public final static int NO_WEEKDAY = 0;
061:
062: /**
063: * Constructor DayAndPosition
064: *
065: *
066: */
067: public DayAndPosition() {
068: day = NO_WEEKDAY;
069: position = 0;
070: }
071:
072: /**
073: * Constructor DayAndPosition
074: *
075: *
076: * @param d
077: * @param p
078: *
079: */
080: public DayAndPosition(int d, int p) {
081: if (!isValidDayOfWeek(d)) {
082: throw new IllegalArgumentException("Invalid day of week");
083: }
084:
085: if (!isValidDayPosition(p)) {
086: throw new IllegalArgumentException("Invalid day position");
087: }
088:
089: day = d;
090: position = p;
091: }
092:
093: /**
094: * Method getDayOfWeek
095: *
096: *
097: * @return int
098: *
099: */
100: public int getDayOfWeek() {
101: return day;
102: }
103:
104: /**
105: * Method setDayOfWeek
106: *
107: *
108: * @param d
109: *
110: */
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: /**
120: * Method getDayPosition
121: *
122: *
123: * @return int
124: *
125: */
126: public int getDayPosition() {
127: return position;
128: }
129:
130: /**
131: * Method setDayPosition
132: *
133: *
134: * @param p
135: *
136: */
137: public void setDayPosition(int p) {
138: if (!isValidDayPosition(p)) {
139: throw new IllegalArgumentException();
140: }
141:
142: position = p;
143: }
144:
145: /**
146: * Method equals
147: *
148: *
149: * @param obj
150: *
151: * @return boolean
152: *
153: */
154: public boolean equals(Object obj) {
155: if (obj == null) {
156: return false;
157: }
158:
159: if (this == obj) {
160: return true;
161: }
162:
163: if (!(obj instanceof DayAndPosition)) {
164: return false;
165: }
166:
167: DayAndPosition that = (DayAndPosition) obj;
168:
169: return (getDayOfWeek() == that.getDayOfWeek())
170: && (getDayPosition() == that.getDayPosition());
171: }
172:
173: /**
174: * Method isValidDayOfWeek
175: *
176: *
177: * @param d
178: *
179: * @return boolean
180: *
181: */
182: public static boolean isValidDayOfWeek(int d) {
183: switch (d) {
184:
185: case NO_WEEKDAY:
186: case Calendar.SUNDAY:
187: case Calendar.MONDAY:
188: case Calendar.TUESDAY:
189: case Calendar.WEDNESDAY:
190: case Calendar.THURSDAY:
191: case Calendar.FRIDAY:
192: case Calendar.SATURDAY:
193: return true;
194:
195: default:
196: return false;
197: }
198: }
199:
200: /**
201: * Method isValidDayPosition
202: *
203: *
204: * @param p
205: *
206: * @return boolean
207: *
208: */
209: public static boolean isValidDayPosition(int p) {
210: return ((p >= -53) && (p <= 53));
211: }
212:
213: /**
214: * Method clone
215: *
216: *
217: * @return Object
218: *
219: */
220: public Object clone() {
221: try {
222: DayAndPosition other = (DayAndPosition) super .clone();
223:
224: other.day = day;
225: other.position = position;
226:
227: return other;
228: } catch (CloneNotSupportedException e) {
229: throw new InternalError();
230: }
231: }
232:
233: /**
234: * Method toString
235: *
236: *
237: * @return String
238: *
239: */
240: public String toString() {
241: StringMaker sm = new StringMaker();
242:
243: sm.append(getClass().getName());
244: sm.append("[day=");
245: sm.append(day);
246: sm.append(",position=");
247: sm.append(position);
248: sm.append("]");
249:
250: return sm.toString();
251: }
252:
253: }
|