| DayAndPosition.java |
1 /**
2 * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3 *
4 * This library is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License as published by the Free
6 * Software Foundation; either version 2.1 of the License, or (at your option)
7 * any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 * details.
13 */
14
15 /*
16 * Copyright (c) 2000, Columbia University. All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are met:
20 *
21 * 1. Redistributions of source code must retain the above copyright
22 * notice, this list of conditions and the following disclaimer.
23 *
24 * 2. Redistributions in binary form must reproduce the above copyright
25 * notice, this list of conditions and the following disclaimer in the
26 * documentation and/or other materials provided with the distribution.
27 *
28 * 3. Neither the name of the University nor the names of its contributors
29 * may be used to endorse or promote products derived from this software
30 * without specific prior written permission.
31 *
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
33 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
34 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
35 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
36 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
37 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
38 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
39 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
40 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
41 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
42 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43 */
44
45 package com.liferay.portal.kernel.cal;
46
47 import com.liferay.portal.kernel.util.StringBundler;
48
49 import java.io.Serializable;
50
51 import java.util.Calendar;
52
53 /**
54 * <a href="DayAndPosition.java.html"><b><i>View Source</i></b></a>
55 *
56 * @author Jonathan Lennox
57 */
58 public class DayAndPosition implements Cloneable, Serializable {
59
60 /**
61 * Field day
62 */
63 private int day;
64
65 /**
66 * Field position
67 */
68 private int position;
69
70 /**
71 * Field NO_WEEKDAY
72 */
73 public final static int NO_WEEKDAY = 0;
74
75 /**
76 * Constructor DayAndPosition
77 */
78 public DayAndPosition() {
79 day = NO_WEEKDAY;
80 position = 0;
81 }
82
83 /**
84 * Constructor DayAndPosition
85 */
86 public DayAndPosition(int d, int p) {
87 if (!isValidDayOfWeek(d)) {
88 throw new IllegalArgumentException("Invalid day of week");
89 }
90
91 if (!isValidDayPosition(p)) {
92 throw new IllegalArgumentException("Invalid day position");
93 }
94
95 day = d;
96 position = p;
97 }
98
99 /**
100 * Method getDayOfWeek
101 *
102 * @return int
103 */
104 public int getDayOfWeek() {
105 return day;
106 }
107
108 /**
109 * Method setDayOfWeek
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 * @return int
123 */
124 public int getDayPosition() {
125 return position;
126 }
127
128 /**
129 * Method setDayPosition
130 */
131 public void setDayPosition(int p) {
132 if (!isValidDayPosition(p)) {
133 throw new IllegalArgumentException();
134 }
135
136 position = p;
137 }
138
139 /**
140 * Method equals
141 *
142 * @return boolean
143 */
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 /**
164 * Method isValidDayOfWeek
165 *
166 * @return boolean
167 */
168 public static boolean isValidDayOfWeek(int d) {
169 switch (d) {
170
171 case NO_WEEKDAY :
172 case Calendar.SUNDAY :
173 case Calendar.MONDAY :
174 case Calendar.TUESDAY :
175 case Calendar.WEDNESDAY :
176 case Calendar.THURSDAY :
177 case Calendar.FRIDAY :
178 case Calendar.SATURDAY :
179 return true;
180
181 default :
182 return false;
183 }
184 }
185
186 /**
187 * Method isValidDayPosition
188 *
189 * @return boolean
190 */
191 public static boolean isValidDayPosition(int p) {
192 return ((p >= -53) && (p <= 53));
193 }
194
195 /**
196 * Method clone
197 *
198 * @return Object
199 */
200 public Object clone() {
201 try {
202 DayAndPosition other = (DayAndPosition)super.clone();
203
204 other.day = day;
205 other.position = position;
206
207 return other;
208 }
209 catch (CloneNotSupportedException e) {
210 throw new InternalError();
211 }
212 }
213
214 /**
215 * Method toString
216 *
217 * @return String
218 */
219 public String toString() {
220 StringBundler sb = new StringBundler(6);
221
222 sb.append(getClass().getName());
223 sb.append("[day=");
224 sb.append(day);
225 sb.append(",position=");
226 sb.append(position);
227 sb.append("]");
228
229 return sb.toString();
230 }
231
232 }