001: package org.apache.torque.om;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import java.util.Date;
023:
024: /**
025: * This class can be used as an ObjectKey to uniquely identify an
026: * object within an application where the id is a Date.
027: *
028: * @author <a href="mailto:jmcnally@apache.org">John McNally</a>
029: * @version $Id: DateKey.java 476550 2006-11-18 16:08:37Z tfischer $
030: */
031: public class DateKey extends SimpleKey {
032: /**
033: * Serial version
034: */
035: private static final long serialVersionUID = 3102583536685348517L;
036:
037: /**
038: * Creates an DateKey whose internal representation will be
039: * set later, through a set method
040: */
041: public DateKey() {
042: }
043:
044: /**
045: * Creates a DateKey whose internal representation is a Date
046: * given by the long number given by the String
047: *
048: * @param key the key value
049: * @throws NumberFormatException if key is not valid
050: */
051: public DateKey(String key) {
052: this .key = new Date(Long.parseLong(key));
053: }
054:
055: /**
056: * Creates a DateKey
057: *
058: * @param key the key value
059: */
060: public DateKey(Date key) {
061: this .key = key;
062: }
063:
064: /**
065: * Creates a DateKey that is equivalent to key.
066: *
067: * @param key the key value
068: */
069: public DateKey(DateKey key) {
070: if (key != null) {
071: this .key = key.getValue();
072: } else {
073: this .key = null;
074: }
075: }
076:
077: /**
078: * Sets the internal representation to a String
079: *
080: * @param key the key value
081: */
082: public void setValue(String key) {
083: this .key = new Date(Long.parseLong(key));
084: }
085:
086: /**
087: * Sets the internal representation to the same object used by key.
088: *
089: * @param key the key value
090: */
091: public void setValue(DateKey key) {
092: if (key != null) {
093: this .key = key.getValue();
094: } else {
095: this .key = null;
096: }
097: }
098:
099: /**
100: * Access the underlying Date object.
101: *
102: * @return a <code>Date</code> value
103: */
104: public Date getDate() {
105: return (Date) key;
106: }
107:
108: /**
109: * keyObj is equal to this DateKey if keyObj is a DateKey or String
110: * that contains the same information this key contains. Two ObjectKeys
111: * that both contain null values are not considered equal.
112: *
113: * @param keyObj the comparison value
114: * @return whether the two objects are equal
115: */
116: public boolean equals(Object keyObj) {
117: boolean isEqual = false;
118:
119: if (key != null) {
120: if (keyObj instanceof String) {
121: isEqual = toString().equals(keyObj);
122: }
123: // check against a DateKey. Two keys are equal, if their
124: // internal keys equivalent.
125: else if (keyObj instanceof DateKey) {
126: Object obj = ((DateKey) keyObj).getValue();
127: isEqual = key.equals(obj);
128: }
129: }
130: return isEqual;
131: }
132:
133: /**
134: * get a String representation
135: *
136: * @return a String representation of the Date or an empty String if the
137: * Date is null
138: */
139: public String toString() {
140: Date dt = getDate();
141: return (dt == null ? "" : Long.toString(dt.getTime()));
142: }
143: }
|