1 /* 2 * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 27 package javax.print.attribute; 28 29 import java.io.Serializable; 30 31 import java.util.Date; 32 33 /** 34 * Class DateTimeSyntax is an abstract base class providing the common 35 * implementation of all attributes whose value is a date and time. 36 * <P> 37 * Under the hood, a date-time attribute is stored as a value of class 38 * {@code java.util.Date}. You can get a date-time attribute's Date value by 39 * calling {@link #getValue() getValue()}. A date-time attribute's 40 * Date value is established when it is constructed (see {@link 41 * #DateTimeSyntax(Date) DateTimeSyntax(Date)}). Once 42 * constructed, a date-time attribute's value is immutable. 43 * <P> 44 * To construct a date-time attribute from separate values of the year, month, 45 * day, hour, minute, and so on, use a {@code java.util.Calendar} 46 * object to construct a {@code java.util.Date} object, then use the 47 * {@code java.util.Date} object to construct the date-time attribute. 48 * To convert 49 * a date-time attribute to separate values of the year, month, day, hour, 50 * minute, and so on, create a {@code java.util.Calendar} object and 51 * set it to the {@code java.util.Date} from the date-time attribute. Class 52 * DateTimeSyntax stores its value in the form of a {@code java.util.Date} 53 * rather than a {@code java.util.Calendar} because it typically takes 54 * less memory to store and less time to compare a {@code java.util.Date} 55 * than a {@code java.util.Calendar}. 56 * 57 * @author Alan Kaminsky 58 */ 59 public abstract class DateTimeSyntax implements Serializable, Cloneable { 60 61 private static final long serialVersionUID = -1400819079791208582L; 62 63 // Hidden data members. 64 65 /** 66 * This date-time attribute's {@code java.util.Date} value. 67 * @serial 68 */ 69 private Date value; 70 71 // Hidden constructors. 72 73 /** 74 * Construct a new date-time attribute with the given 75 * {@code java.util.Date} value. 76 * 77 * @param value {@code java.util.Date} value. 78 * 79 * @exception NullPointerException 80 * (unchecked exception) Thrown if {@code theValue} is null. 81 */ 82 protected DateTimeSyntax(Date value) { 83 if (value == null) { 84 throw new NullPointerException("value is null"); 85 } 86 this.value = value; 87 } 88 89 // Exported operations. 90 91 /** 92 * Returns this date-time attribute's {@code java.util.Date} 93 * value. 94 * @return the Date. 95 */ 96 public Date getValue() { 97 return new Date (value.getTime()); 98 } 99 100 // Exported operations inherited and overridden from class Object. 101 102 /** 103 * Returns whether this date-time attribute is equivalent to the passed in 104 * object. To be equivalent, all of the following conditions must be true: 105 * <OL TYPE=1> 106 * <LI> 107 * {@code object} is not null. 108 * <LI> 109 * {@code object} is an instance of class DateTimeSyntax. 110 * <LI> 111 * This date-time attribute's {@code java.util.Date} value and 112 * {@code object}'s {@code java.util.Date} value are 113 * equal. </OL> 114 * 115 * @param object Object to compare to. 116 * 117 * @return True if {@code object} is equivalent to this date-time 118 * attribute, false otherwise. 119 */ 120 public boolean equals(Object object) { 121 return (object != null && 122 object instanceof DateTimeSyntax && 123 value.equals(((DateTimeSyntax) object).value)); 124 } 125 126 /** 127 * Returns a hash code value for this date-time attribute. The hashcode is 128 * that of this attribute's {@code java.util.Date} value. 129 */ 130 public int hashCode() { 131 return value.hashCode(); 132 } 133 134 /** 135 * Returns a string value corresponding to this date-time attribute. 136 * The string value is just this attribute's 137 * {@code java.util.Date} value 138 * converted to a string. 139 */ 140 public String toString() { 141 return "" + value; 142 } 143 144 } | 1 /* 2 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.print.attribute; 27 28 import java.io.Serializable; 29 import java.util.Date; 30 31 /** 32 * Class {@code DateTimeSyntax} is an abstract base class providing the common 33 * implementation of all attributes whose value is a date and time. 34 * <p> 35 * Under the hood, a date-time attribute is stored as a value of class 36 * {@code java.util.Date}. You can get a date-time attribute's {@code Date} 37 * value by calling {@link #getValue() getValue()}. A date-time attribute's 38 * {@code Date} value is established when it is constructed (see 39 * {@link #DateTimeSyntax(Date) DateTimeSyntax(Date)}). Once constructed, a 40 * date-time attribute's value is immutable. 41 * <p> 42 * To construct a date-time attribute from separate values of the year, month, 43 * day, hour, minute, and so on, use a {@code java.util.Calendar} object to 44 * construct a {@code java.util.Date} object, then use the 45 * {@code java.util.Date} object to construct the date-time attribute. To 46 * convert a date-time attribute to separate values of the year, month, day, 47 * hour, minute, and so on, create a {@code java.util.Calendar} object and set 48 * it to the {@code java.util.Date} from the date-time attribute. Class 49 * {@code DateTimeSyntax} stores its value in the form of a 50 * {@code java.util.Date} rather than a {@code java.util.Calendar} because it 51 * typically takes less memory to store and less time to compare a 52 * {@code java.util.Date} than a {@code java.util.Calendar}. 53 * 54 * @author Alan Kaminsky 55 */ 56 public abstract class DateTimeSyntax implements Serializable, Cloneable { 57 58 /** 59 * Use serialVersionUID from JDK 1.4 for interoperability. 60 */ 61 private static final long serialVersionUID = -1400819079791208582L; 62 63 // Hidden data members. 64 65 /** 66 * This date-time attribute's {@code java.util.Date} value. 67 * 68 * @serial 69 */ 70 private Date value; 71 72 // Hidden constructors. 73 74 /** 75 * Construct a new date-time attribute with the given {@code java.util.Date} 76 * value. 77 * 78 * @param value {@code java.util.Date} value 79 * @throws NullPointerException if {@code value} is {@code null} 80 */ 81 protected DateTimeSyntax(Date value) { 82 if (value == null) { 83 throw new NullPointerException("value is null"); 84 } 85 this.value = value; 86 } 87 88 // Exported operations. 89 90 /** 91 * Returns this date-time attribute's {@code java.util.Date} value. 92 * 93 * @return the {@code Date} 94 */ 95 public Date getValue() { 96 return new Date (value.getTime()); 97 } 98 99 // Exported operations inherited and overridden from class Object. 100 101 /** 102 * Returns whether this date-time attribute is equivalent to the passed in 103 * object. To be equivalent, all of the following conditions must be true: 104 * <ol type=1> 105 * <li>{@code object} is not {@code null}. 106 * <li>{@code object} is an instance of class {@code DateTimeSyntax}. 107 * <li>This date-time attribute's {@code java.util.Date} value and 108 * {@code object}'s {@code java.util.Date} value are equal. 109 * </ol> 110 * 111 * @param object {@code Object} to compare to 112 * @return {@code true} if {@code object} is equivalent to this date-time 113 * attribute, {@code false} otherwise 114 */ 115 public boolean equals(Object object) { 116 return (object != null && 117 object instanceof DateTimeSyntax && 118 value.equals(((DateTimeSyntax) object).value)); 119 } 120 121 /** 122 * Returns a hash code value for this date-time attribute. The hashcode is 123 * that of this attribute's {@code java.util.Date} value. 124 */ 125 public int hashCode() { 126 return value.hashCode(); 127 } 128 129 /** 130 * Returns a string value corresponding to this date-time attribute. The 131 * string value is just this attribute's {@code java.util.Date} value 132 * converted to a string. 133 */ 134 public String toString() { 135 return "" + value; 136 } 137 } |