org.exolab.castor.types

Class DateTimeBase

Implemented Interfaces:
java.io.Serializable
Known Direct 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
protected static String
WRONGLY_PLACED

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.
protected boolean
equal(DateTimeBase dateTime)
Returns true if the present instance of date/time type is equal to the parameter.
boolean
equals(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
Calendar
toCalendar()
converts this Date/Time into a local java Calendar.
abstract Date
toDate()
Returns a java.util.Date that represents the XML Schema Date datatype

Field Details

EQUALS

public static final int EQUALS
Field Value:
1

GREATER_THAN

public static final int GREATER_THAN
Field Value:
2

INDETERMINATE

public static final int INDETERMINATE
Fields used for comparison methods
Field Value:
-1

LESS_THAN

public static final int LESS_THAN
Field Value:
0

WRONGLY_PLACED

protected static final String WRONGLY_PLACED

Method Details

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.
Parameters:

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:

  • INDETERMINATE (-1): this ? dateTime
  • LESS_THAN (0): this <32dateTime
  • EQUALS (1): this == dateTime
  • GREATER_THAN (2): this > dateTime
Parameters:
dateTime - the dateTime to compare with the current instance.
Returns:
  • INDETERMINATE (-1)
  • LESS_THAN (0)
  • EQUALS (1)
  • GREATER_THAN (2)

equal

protected boolean equal(DateTimeBase dateTime)
Returns true if the present instance of date/time type is equal to the parameter.

The equals relation is as defined in the W3C XML Schema Recommendation, part2.

Parameters:
dateTime - the date/time type to compare with the present instance
Returns:
true if the present instance is equal to the parameter false if not

equals

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

getCentury

public short getCentury()

getDay

public short getDay()

getHour

public short getHour()

getMilli

public short getMilli()

getMinute

public short getMinute()

getMonth

public short getMonth()

getSeconds

public short getSeconds()

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.

getYear

public short getYear()

getZoneHour

public short getZoneHour()

getZoneMinute

public short getZoneMinute()

hashCode

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

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

isNegative

public boolean isNegative()

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.

isZoneNegative

public boolean isZoneNegative()

normalize

public void normalize()

setCentury

public void setCentury(short century)
set the century field
Parameters:
century - the value to set up

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

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

setMilliSecond

public void setMilliSecond(short millisecond)
            throws OperationNotSupportedException
Sets the millisecond field for this date/time type
Parameters:
Throws:
OperationNotSupportedException - this exception is thrown when changing the value of the second 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

setMonth

public void setMonth(short month)
            throws OperationNotSupportedException
set the Month Field
Parameters:
month - the value to set up Note 1<12>

setNegative

public void setNegative()
set the negative field to true

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

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

setUTC

public void setUTC()
set the UTC field.

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

setYear

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

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

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

toCalendar

public Calendar toCalendar()
converts this Date/Time into a local java Calendar.
Returns:
a local calendar representing this Date or Time

toDate

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

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