| 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.util.cal;
46
47 import com.liferay.portal.kernel.util.HashCode;
48 import com.liferay.portal.kernel.util.HashCodeFactoryUtil;
49 import com.liferay.portal.kernel.util.StringBundler;
50
51 import java.io.Serializable;
52
53 import java.util.Calendar;
54
55 /**
56 * <a href="DayAndPosition.java.html"><b><i>View Source</i></b></a>
57 *
58 * @author Jonathan Lennox
59 * @deprecated This class has been repackaged at
60 * <code>com.liferay.portal.kernel.cal</code>.
61 */
62 public class DayAndPosition implements Cloneable, Serializable {
63
64 /**
65 * Field day
66 */
67 private int day;
68
69 /**
70 * Field position
71 */
72 private int position;
73
74 /**
75 * Field NO_WEEKDAY
76 */
77 public static final int NO_WEEKDAY = 0;
78
79 /**
80 * Constructor DayAndPosition
81 */
82 public DayAndPosition() {
83 day = NO_WEEKDAY;
84 position = 0;
85 }
86
87 /**
88 * Constructor DayAndPosition
89 */
90 public DayAndPosition(int d, int p) {
91 if (!isValidDayOfWeek(d)) {
92 throw new IllegalArgumentException("Invalid day of week");
93 }
94
95 if (!isValidDayPosition(p)) {
96 throw new IllegalArgumentException("Invalid day position");
97 }
98
99 day = d;
100 position = p;
101 }
102
103 /**
104 * Method getDayOfWeek
105 *
106 * @return int
107 */
108 public int getDayOfWeek() {
109 return day;
110 }
111
112 /**
113 * Method setDayOfWeek
114 */
115 public void setDayOfWeek(int d) {
116 if (!isValidDayOfWeek(d)) {
117 throw new IllegalArgumentException("Invalid day of week");
118 }
119
120 day = d;
121 }
122
123 /**
124 * Method getDayPosition
125 *
126 * @return int
127 */
128 public int getDayPosition() {
129 return position;
130 }
131
132 /**
133 * Method setDayPosition
134 */
135 public void setDayPosition(int p) {
136 if (!isValidDayPosition(p)) {
137 throw new IllegalArgumentException();
138 }
139
140 position = p;
141 }
142
143 /**
144 * Method equals
145 *
146 * @return boolean
147 */
148 public boolean equals(Object obj) {
149 if (obj == null) {
150 return false;
151 }
152
153 if (this == obj) {
154 return true;
155 }
156
157 if (!(obj instanceof DayAndPosition)) {
158 return false;
159 }
160
161 DayAndPosition that = (DayAndPosition)obj;
162
163 return (getDayOfWeek() == that.getDayOfWeek())
164 && (getDayPosition() == that.getDayPosition());
165 }
166
167 public int hashCode() {
168 HashCode hashCode = HashCodeFactoryUtil.getHashCode();
169
170 hashCode.append(day);
171 hashCode.append(position);
172
173 return hashCode.toHashCode();
174 }
175
176 /**
177 * Method isValidDayOfWeek
178 *
179 * @return boolean
180 */
181 public static boolean isValidDayOfWeek(int d) {
182 switch (d) {
183
184 case NO_WEEKDAY :
185 case Calendar.SUNDAY :
186 case Calendar.MONDAY :
187 case Calendar.TUESDAY :
188 case Calendar.WEDNESDAY :
189 case Calendar.THURSDAY :
190 case Calendar.FRIDAY :
191 case Calendar.SATURDAY :
192 return true;
193
194 default :
195 return false;
196 }
197 }
198
199 /**
200 * Method isValidDayPosition
201 *
202 * @return boolean
203 */
204 public static boolean isValidDayPosition(int p) {
205 return ((p >= -53) && (p <= 53));
206 }
207
208 /**
209 * Method clone
210 *
211 * @return Object
212 */
213 public Object clone() {
214 try {
215 DayAndPosition other = (DayAndPosition)super.clone();
216
217 other.day = day;
218 other.position = position;
219
220 return other;
221 }
222 catch (CloneNotSupportedException e) {
223 throw new InternalError();
224 }
225 }
226
227 /**
228 * Method toString
229 *
230 * @return String
231 */
232 public String toString() {
233 StringBundler sb = new StringBundler(6);
234
235 sb.append(getClass().getName());
236 sb.append("[day=");
237 sb.append(day);
238 sb.append(",position=");
239 sb.append(position);
240 sb.append("]");
241
242 return sb.toString();
243 }
244
245 }