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