1 /* 2 * Copyright (c) 2000, 2013, 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 <code> 38 * java.util.Date</code>. 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</code> 46 * object to construct a <code>java.util.Date</code> object, then use the 47 * <code>java.util.Date</code> 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</code> object and 51 * set it to the <code>java.util.Date</code> from the date-time attribute. Class 52 * DateTimeSyntax stores its value in the form of a <code>java.util.Date 53 * </code> 54 * rather than a <code>java.util.Calendar</code> because it typically takes 55 * less memory to store and less time to compare a <code>java.util.Date</code> 56 * than a <code>java.util.Calendar</code>. 57 * 58 * @author Alan Kaminsky 59 */ 60 public abstract class DateTimeSyntax implements Serializable, Cloneable { 61 62 private static final long serialVersionUID = -1400819079791208582L; 63 64 // Hidden data members. 65 66 /** 67 * This date-time attribute's<code>java.util.Date</code> value. 68 * @serial 69 */ 70 private Date value; 71 72 // Hidden constructors. 73 74 /** 75 * Construct a new date-time attribute with the given 76 * <code>java.util.Date </code> value. 77 * 78 * @param value <code>java.util.Date</code> value. 79 * 80 * @exception NullPointerException 81 * (unchecked exception) Thrown if <CODE>theValue</CODE> is null. 82 */ 83 protected DateTimeSyntax(Date value) { 84 if (value == null) { 85 throw new NullPointerException("value is null"); 86 } 87 this.value = value; 88 } 89 90 // Exported operations. 91 92 /** 93 * Returns this date-time attribute's <code>java.util.Date</code> 94 * value. 95 * @return the Date. 96 */ 97 public Date getValue() { 98 return new Date (value.getTime()); 99 } 100 101 // Exported operations inherited and overridden from class Object. 102 103 /** 104 * Returns whether this date-time attribute is equivalent to the passed in 105 * object. To be equivalent, all of the following conditions must be true: 106 * <OL TYPE=1> 107 * <LI> 108 * <CODE>object</CODE> is not null. 109 * <LI> 110 * <CODE>object</CODE> is an instance of class DateTimeSyntax. 111 * <LI> 112 * This date-time attribute's <code>java.util.Date</code> value and 113 * <CODE>object</CODE>'s <code>java.util.Date</code> value are 114 * equal. </OL> 115 * 116 * @param object Object to compare to. 117 * 118 * @return True if <CODE>object</CODE> is equivalent to this date-time 119 * attribute, false otherwise. 120 */ 121 public boolean equals(Object object) { 122 return (object != null && 123 object instanceof DateTimeSyntax && 124 value.equals(((DateTimeSyntax) object).value)); 125 } 126 127 /** 128 * Returns a hash code value for this date-time attribute. The hashcode is 129 * that of this attribute's <code>java.util.Date</code> value. 130 */ 131 public int hashCode() { 132 return value.hashCode(); 133 } 134 135 /** 136 * Returns a string value corresponding to this date-time attribute. 137 * The string value is just this attribute's 138 * <code>java.util.Date</code> value 139 * converted to a string. 140 */ 141 public String toString() { 142 return "" + value; 143 } 144 145 }