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