View Javadoc

1   /**
2    * 
3    */
4   package org.sourceforge.jemm.types;
5   
6   import java.io.Serializable;
7   import java.util.Date;
8   
9   /**
10   * JemmDate is an immutable date class.  This allows it to be stored as a valuetype like Integer 
11   * @author Rory Graves
12   *
13   */
14  public final class JemmDate implements Serializable {
15  	
16  	private static final long serialVersionUID = 1L;
17  
18  	/** The internal date representation. */
19      private final long dateRep;
20      
21      /**
22       * Create a new JemmDate representing the same date/time as the given java.util.Date.
23       * @param date The date to initialise from.
24       */
25      public JemmDate(Date date) {
26          this.dateRep = date.getTime();
27      }
28  
29      /**
30       * Create a new JemmDate given the number of milliseconds since January 1, 1970, 00:00:00 GMT.
31       * @param timestamp the number of milliseconds since January 1, 1970, 00:00:00 GMT of this time.
32       */
33      public JemmDate(long timestamp) {
34          this.dateRep = timestamp;
35      }
36      
37      /**
38       * Return this date value as a Date.
39       * @return The represented date value as a java.util.Date
40       */
41      public Date getAsDate() {
42          return new Date(dateRep);
43      }
44      
45      /**
46       * Return this date value as an sql Date.
47       * @return The represented date value as a java.sql.Date
48       */
49      public java.sql.Date getAsSqlDate() {
50          return new java.sql.Date(dateRep);
51      }
52  
53      /**
54       * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
55       * @return the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this date.
56       * @see java.util.Date#getTime()
57       */
58      public long getTime() {
59  		return dateRep; 
60      }
61      
62      @Override
63      public int hashCode() {
64          return (int) (dateRep ^ (dateRep >>> 32));
65      }
66  
67      @Override
68      public boolean equals(Object obj) {
69          if (this == obj)
70              return true;
71          if (obj == null)
72              return false;
73          if (getClass() != obj.getClass())
74              return false;
75          JemmDate other = (JemmDate) obj;
76          if (dateRep != other.dateRep)
77              return false;
78          return true;
79      }
80  }