org.exolab.castor.types
Class DateTimeBase

java.lang.Object
  extended byorg.exolab.castor.types.DateTimeBase
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
Date, Time

public abstract class DateTimeBase
extends java.lang.Object
implements java.io.Serializable

The base class for date/time XML Schema types.

The validation of the date/time fields is done in the set methods and follows the ISO8601 Date and Time Format.

Note: the castor date/time type are mutable, unlike the date/time types of the JDK in Java2. This is needed by the Marshalling framework.

Version:
$Revision: 1.1.1.1 $
Author:
Arnaud Blandin
See Also:
Date, Time, Serialized Form

Field Summary
static int EQUALS
           
static int GREATER_THAN
           
static int INDETERMINATE
          Fields used for comparison methods
static int LESS_THAN
           
 
Constructor Summary
DateTimeBase()
           
 
Method Summary
 void addDuration(Duration duration)
          Adds a Duration to this Date/Time type as defined in Adding Duration to dateTimes (W3C XML Schema, part 2 appendix E). This version is using the algorithm defined in the document from W3C, next version may optimize it.
 int compareTo(DateTimeBase dateTime)
          Compares two date/time data types.
 boolean equals(java.lang.Object object)
          Overrides the java.lang.Object#equals method
 short getCentury()
           
 short getDay()
           
 short getHour()
           
 short getMilli()
           
 short getMinute()
           
 short getMonth()
           
 short getSeconds()
           
abstract  short[] getValues()
          returns an array of short with all the fields that describe a date/time type.
 short getYear()
           
 short getZoneHour()
           
 short getZoneMinute()
           
 int hashCode()
          Overrides the java.lang.Object#hashcode method.
 boolean isLeap(int year)
          Returns true if the given year represents a leap year A specific year is a leap year if it is either evenly divisible by 400 OR evenly divisible by 4 and not evenly divisible by 100
 boolean isNegative()
           
 boolean isUTC()
          return true if this date/time type is UTC.
 boolean isZoneNegative()
           
 void normalize()
          Normalizes a date/time datatype as defined in W3C XML Schema Recommendation document: if a timeZone is present but it is not Z then we convert the date/time datatype to Z using the addition operation defined in Adding Duration to dateTimes (W3C XML Schema, part 2 appendix E).
 void setCentury(short century)
          set the century field
 void setDay(short day)
          set the Day Field
 void setHour(short hour)
          set the hour field for this date/time type.
 void setMilliSecond(short millisecond)
          Sets the millisecond field for this date/time type
 void setMinute(short minute)
          set the minute field for this date/time type.
 void setMonth(short month)
          set the Month Field
 void setNegative()
          set the negative field to true
 void setSecond(short second)
          Sets the second field for this date/time type
 void setSecond(short second, short millsecond)
          set the second field for this date/time type
 void setUTC()
          set the UTC field.
abstract  void setValues(short[] values)
          Sets all the fields by reading the values in an array
 void setYear(short year)
          set the Year field Note: 0000 is not allowed
 void setZone(short hour, short minute)
          Sets the time zone fields for this date/time type.
 void setZoneHour(short hour)
          Sets the time zone hour field for this date/time type.
 void setZoneMinute(short minute)
          Sets the time zone minute field for this date/time type.
 void setZoneNegative(boolean zoneNegative)
          set the time zone negative field to true
 java.util.Calendar toCalendar()
          converts this Date/Time into a local java Calendar.
abstract  java.util.Date toDate()
          Returns a java.util.Date that represents the XML Schema Date datatype
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INDETERMINATE

public static final int INDETERMINATE
Fields used for comparison methods

See Also:
Constant Field Values

LESS_THAN

public static final int LESS_THAN
See Also:
Constant Field Values

EQUALS

public static final int EQUALS
See Also:
Constant Field Values

GREATER_THAN

public static final int GREATER_THAN
See Also:
Constant Field Values
Constructor Detail

DateTimeBase

public DateTimeBase()
Method Detail

setCentury

public void setCentury(short century)
set the century field

Parameters:
century - the value to set up

setYear

public void setYear(short year)
             throws OperationNotSupportedException
set the Year field Note: 0000 is not allowed

Throws:
OperationNotSupportedException

setMonth

public void setMonth(short month)
              throws OperationNotSupportedException
set the Month Field

Parameters:
month - the value to set up Note 1Throws:
OperationNotSupportedException

setDay

public void setDay(short day)
            throws OperationNotSupportedException
set the Day Field

Parameters:
day - the value to set up Note a validation is done on the day field
Throws:
OperationNotSupportedException

isLeap

public final boolean isLeap(int year)
Returns true if the given year represents a leap year A specific year is a leap year if it is either evenly divisible by 400 OR evenly divisible by 4 and not evenly divisible by 100

Parameters:
year - the year to test.
Returns:
true if the given year represents a leap year

setHour

public void setHour(short hour)
             throws OperationNotSupportedException
set the hour field for this date/time type.

Parameters:
hour - the hour to set
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the hour field is not allowed

setMinute

public void setMinute(short minute)
               throws OperationNotSupportedException
set the minute field for this date/time type.

Parameters:
minute - the minute to set.
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the minute field is not allowed

setSecond

public void setSecond(short second,
                      short millsecond)
               throws OperationNotSupportedException
set the second field for this date/time type

Parameters:
second - the second to set
millsecond - the millisecond to set
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the second field is not allowed

setSecond

public void setSecond(short second)
               throws OperationNotSupportedException
Sets the second field for this date/time type

Parameters:
second - the second to set
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the second field is not allowed

setMilliSecond

public void setMilliSecond(short millisecond)
                    throws OperationNotSupportedException
Sets the millisecond field for this date/time type

Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the second field is not allowed

setZone

public void setZone(short hour,
                    short minute)
             throws OperationNotSupportedException
Sets the time zone fields for this date/time type. A call to this method means that the date/time type used is UTC.

Parameters:
hour - the time zone hour to set
minute - the time zone minute to set
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the time zone fields is not allowed

setZoneHour

public void setZoneHour(short hour)
                 throws OperationNotSupportedException
Sets the time zone hour field for this date/time type. A call to this method means that the date/time type used is UTC.

Parameters:
hour - the time zone hour to set
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the time zone fields is not allowed

setZoneMinute

public void setZoneMinute(short minute)
                   throws OperationNotSupportedException
Sets the time zone minute field for this date/time type. A call to this method means that the date/time type used is UTC.

Parameters:
minute - the time zone minute to set
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the time zone fields is not allowed

setValues

public abstract void setValues(short[] values)
Sets all the fields by reading the values in an array

Parameters:
values - an array of shorts with the values

setNegative

public void setNegative()
set the negative field to true


toDate

public abstract java.util.Date toDate()
Returns a java.util.Date that represents the XML Schema Date datatype


setZoneNegative

public void setZoneNegative(boolean zoneNegative)
                     throws OperationNotSupportedException
set the time zone negative field to true

Throws:
OperationNotSupportedException - this exception is thrown when changing the time zone fields is not allowed

setUTC

public void setUTC()
set the UTC field.


getCentury

public short getCentury()

getYear

public short getYear()

getMonth

public short getMonth()

getDay

public short getDay()

getHour

public short getHour()

getMinute

public short getMinute()

getSeconds

public short getSeconds()

getMilli

public short getMilli()

getZoneHour

public short getZoneHour()

getZoneMinute

public short getZoneMinute()

getValues

public abstract short[] getValues()
returns an array of short with all the fields that describe a date/time type.

Returns:
an array of short with all the fields that describe a date/time type.

isUTC

public boolean isUTC()
return true if this date/time type is UTC. A date/time type is UTC if a 'Z' appears at the end of the lexical representation type or if it contains a time zone.


isNegative

public boolean isNegative()

isZoneNegative

public boolean isZoneNegative()

addDuration

public void addDuration(Duration duration)

Adds a Duration to this Date/Time type as defined in Adding Duration to dateTimes (W3C XML Schema, part 2 appendix E). This version is using the algorithm defined in the document from W3C, next version may optimize it.


normalize

public void normalize()

Normalizes a date/time datatype as defined in W3C XML Schema Recommendation document: if a timeZone is present but it is not Z then we convert the date/time datatype to Z using the addition operation defined in Adding Duration to dateTimes (W3C XML Schema, part 2 appendix E).

See Also:
addDuration(org.exolab.castor.types.Duration)

compareTo

public int compareTo(DateTimeBase dateTime)

Compares two date/time data types. The algorithm of comparison is defined in W3C XML Schema Recommendation (section 3.2.7.3)

The returned values can be:

Parameters:
dateTime - the dateTime to compare with the current instance.
Returns:
  • INDETERMINATE (-1)
  • LESS_THAN (0)
  • EQUALS (1)
  • GREATER_THAN (2)

hashCode

public int hashCode()
Overrides the java.lang.Object#hashcode method.


equals

public boolean equals(java.lang.Object object)
Overrides the java.lang.Object#equals method

See Also:
#equal

toCalendar

public java.util.Calendar toCalendar()
converts this Date/Time into a local java Calendar.

Returns:
a local calendar representing this Date or Time


Intalio Inc. (C) 1999-2004. All rights reserved http://www.intalio.com