DayAndPosition.java |
1 /* 2 * Copyright (c) 2000, Columbia University. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * 3. Neither the name of the University nor the names of its contributors 15 * may be used to endorse or promote products derived from this software 16 * without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS 19 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 25 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 27 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 28 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 package com.liferay.portal.kernel.cal; 32 33 import com.liferay.portal.kernel.util.StringMaker; 34 35 import java.io.Serializable; 36 37 import java.util.Calendar; 38 39 /** 40 * <a href="DayAndPosition.java.html"><b><i>View Source</i></b></a> 41 * 42 * @author Jonathan Lennox 43 * 44 */ 45 public class DayAndPosition implements Cloneable, Serializable { 46 47 /** 48 * Field day 49 */ 50 private int day; 51 52 /** 53 * Field position 54 */ 55 private int position; 56 57 /** 58 * Field NO_WEEKDAY 59 */ 60 public final static int NO_WEEKDAY = 0; 61 62 /** 63 * Constructor DayAndPosition 64 * 65 * 66 */ 67 public DayAndPosition() { 68 day = NO_WEEKDAY; 69 position = 0; 70 } 71 72 /** 73 * Constructor DayAndPosition 74 * 75 * 76 * @param d 77 * @param p 78 * 79 */ 80 public DayAndPosition(int d, int p) { 81 if (!isValidDayOfWeek(d)) { 82 throw new IllegalArgumentException("Invalid day of week"); 83 } 84 85 if (!isValidDayPosition(p)) { 86 throw new IllegalArgumentException("Invalid day position"); 87 } 88 89 day = d; 90 position = p; 91 } 92 93 /** 94 * Method getDayOfWeek 95 * 96 * 97 * @return int 98 * 99 */ 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 } 229 catch (CloneNotSupportedException e) { 230 throw new InternalError(); 231 } 232 } 233 234 /** 235 * Method toString 236 * 237 * 238 * @return String 239 * 240 */ 241 public String toString() { 242 StringMaker sm = new StringMaker(); 243 244 sm.append(getClass().getName()); 245 sm.append("[day="); 246 sm.append(day); 247 sm.append(",position="); 248 sm.append(position); 249 sm.append("]"); 250 251 return sm.toString(); 252 } 253 254 }