DayAndPosition.java |
1 /** 2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved. 3 * 4 * The contents of this file are subject to the terms of the Liferay Enterprise 5 * Subscription License ("License"). You may not use this file except in 6 * compliance with the License. You can obtain a copy of the License by 7 * contacting Liferay, Inc. See the License for the specific language governing 8 * permissions and limitations under the License, including but not limited to 9 * distribution rights of the Software. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 17 * SOFTWARE. 18 */ 19 20 /* 21 * Copyright (c) 2000, Columbia University. All rights reserved. 22 * 23 * Redistribution and use in source and binary forms, with or without 24 * modification, are permitted provided that the following conditions are met: 25 * 26 * 1. Redistributions of source code must retain the above copyright 27 * notice, this list of conditions and the following disclaimer. 28 * 29 * 2. Redistributions in binary form must reproduce the above copyright 30 * notice, this list of conditions and the following disclaimer in the 31 * documentation and/or other materials provided with the distribution. 32 * 33 * 3. Neither the name of the University nor the names of its contributors 34 * may be used to endorse or promote products derived from this software 35 * without specific prior written permission. 36 * 37 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS 38 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 39 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 40 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 41 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 42 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 43 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 44 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 45 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 46 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 47 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 48 */ 49 50 package com.liferay.portal.kernel.cal; 51 52 import java.io.Serializable; 53 54 import java.util.Calendar; 55 56 /** 57 * <a href="DayAndPosition.java.html"><b><i>View Source</i></b></a> 58 * 59 * @author Jonathan Lennox 60 * 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 final static int NO_WEEKDAY = 0; 78 79 /** 80 * Constructor DayAndPosition 81 * 82 * 83 */ 84 public DayAndPosition() { 85 day = NO_WEEKDAY; 86 position = 0; 87 } 88 89 /** 90 * Constructor DayAndPosition 91 * 92 * 93 * @param d 94 * @param p 95 * 96 */ 97 public DayAndPosition(int d, int p) { 98 if (!isValidDayOfWeek(d)) { 99 throw new IllegalArgumentException("Invalid day of week"); 100 } 101 102 if (!isValidDayPosition(p)) { 103 throw new IllegalArgumentException("Invalid day position"); 104 } 105 106 day = d; 107 position = p; 108 } 109 110 /** 111 * Method getDayOfWeek 112 * 113 * 114 * @return int 115 * 116 */ 117 public int getDayOfWeek() { 118 return day; 119 } 120 121 /** 122 * Method setDayOfWeek 123 * 124 * 125 * @param d 126 * 127 */ 128 public void setDayOfWeek(int d) { 129 if (!isValidDayOfWeek(d)) { 130 throw new IllegalArgumentException("Invalid day of week"); 131 } 132 133 day = d; 134 } 135 136 /** 137 * Method getDayPosition 138 * 139 * 140 * @return int 141 * 142 */ 143 public int getDayPosition() { 144 return position; 145 } 146 147 /** 148 * Method setDayPosition 149 * 150 * 151 * @param p 152 * 153 */ 154 public void setDayPosition(int p) { 155 if (!isValidDayPosition(p)) { 156 throw new IllegalArgumentException(); 157 } 158 159 position = p; 160 } 161 162 /** 163 * Method equals 164 * 165 * 166 * @param obj 167 * 168 * @return boolean 169 * 170 */ 171 public boolean equals(Object obj) { 172 if (obj == null) { 173 return false; 174 } 175 176 if (this == obj) { 177 return true; 178 } 179 180 if (!(obj instanceof DayAndPosition)) { 181 return false; 182 } 183 184 DayAndPosition that = (DayAndPosition)obj; 185 186 return (getDayOfWeek() == that.getDayOfWeek()) 187 && (getDayPosition() == that.getDayPosition()); 188 } 189 190 /** 191 * Method isValidDayOfWeek 192 * 193 * 194 * @param d 195 * 196 * @return boolean 197 * 198 */ 199 public static boolean isValidDayOfWeek(int d) { 200 switch (d) { 201 202 case NO_WEEKDAY : 203 case Calendar.SUNDAY : 204 case Calendar.MONDAY : 205 case Calendar.TUESDAY : 206 case Calendar.WEDNESDAY : 207 case Calendar.THURSDAY : 208 case Calendar.FRIDAY : 209 case Calendar.SATURDAY : 210 return true; 211 212 default : 213 return false; 214 } 215 } 216 217 /** 218 * Method isValidDayPosition 219 * 220 * 221 * @param p 222 * 223 * @return boolean 224 * 225 */ 226 public static boolean isValidDayPosition(int p) { 227 return ((p >= -53) && (p <= 53)); 228 } 229 230 /** 231 * Method clone 232 * 233 * 234 * @return Object 235 * 236 */ 237 public Object clone() { 238 try { 239 DayAndPosition other = (DayAndPosition)super.clone(); 240 241 other.day = day; 242 other.position = position; 243 244 return other; 245 } 246 catch (CloneNotSupportedException e) { 247 throw new InternalError(); 248 } 249 } 250 251 /** 252 * Method toString 253 * 254 * 255 * @return String 256 * 257 */ 258 public String toString() { 259 StringBuilder sb = new StringBuilder(); 260 261 sb.append(getClass().getName()); 262 sb.append("[day="); 263 sb.append(day); 264 sb.append(",position="); 265 sb.append(position); 266 sb.append("]"); 267 268 return sb.toString(); 269 } 270 271 }