Class ImmutableXMLGregorianCalendar
- java.lang.Object
- javax.xml.datatype.XMLGregorianCalendar
- com.iizix.value.ImmutableXMLGregorianCalendar
- All Implemented Interfaces:
java.lang.Cloneable
public class ImmutableXMLGregorianCalendar extends javax.xml.datatype.XMLGregorianCalendarAn immutable version of theXMLGregorianCalendar.The following methods throws
IllegalStateException:clear()reset()setYear(BigInteger year)setYear(int year)setMonth(int month)setDay(int day)setTimezone(int offset)setHour(int hour)setMinute(int minute)setSecond(int second)setMillisecond(int millisecond)setFractionalSecond(BigDecimal fractional)add(Duration duration)
The
XMLGregorianCalendar normalize()method returned a new cloned instance that is normalized.- Author:
- Christopher Mindus
Constructor Summary
Constructors Constructor Description ImmutableXMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar xc)Constructs the immutable XMLGregorianCalendar instance, cloning the parameter.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(javax.xml.datatype.Duration duration)voidclear()ImmutableXMLGregorianCalendarclone()Clones the instance.intcompare(javax.xml.datatype.XMLGregorianCalendar xmlGregorianCalendar)Compare two instances of W3C XML Schema 1.0 date/time datatypes according to partial order relation defined in W3C XML Schema 1.0 Part 2, Section 3.2.7.3, Order relation on dateTime.booleanequals(java.lang.Object obj)Compares this calendar to the specified object.intgetDay()Return day in month orDatatypeConstants.FIELD_UNDEFINED.java.math.BigIntegergetEon()Return high order component for XML Schema 1.0 dateTime datatype field foryear.java.math.BigIntegergetEonAndYear()Return XML Schema 1.0 dateTime datatype field foryear.java.math.BigDecimalgetFractionalSecond()Return fractional seconds.intgetHour()Return hours orDatatypeConstants.FIELD_UNDEFINED.intgetMillisecond()Return millisecond precision ofgetFractionalSecond().intgetMinute()Return minutes orDatatypeConstants.FIELD_UNDEFINED.intgetMonth()Return number of month orDatatypeConstants.FIELD_UNDEFINED.intgetSecond()Return seconds orDatatypeConstants.FIELD_UNDEFINED.intgetTimezone()Return timezone offset in minutes orDatatypeConstants.FIELD_UNDEFINEDif this optional field is not defined.java.util.TimeZonegetTimeZone(int defaultZoneoffset)Returns ajava.util.TimeZonefor this class.javax.xml.namespace.QNamegetXMLSchemaType()Return the name of the XML Schema date/time type that this instance maps to.intgetYear()Return low order component for XML Schema 1.0 dateTime datatype field foryearorDatatypeConstants.FIELD_UNDEFINED.inthashCode()Returns a hash code consistent with the definition of the equals method.booleanisValid()Validate instance bygetXMLSchemaType()constraints.javax.xml.datatype.XMLGregorianCalendarnormalize()Normalize this instance to UTC.voidreset()voidsetDay(int day)voidsetFractionalSecond(java.math.BigDecimal fractional)voidsetHour(int hour)voidsetMillisecond(int millisecond)voidsetMinute(int minute)voidsetMonth(int month)voidsetSecond(int second)voidsetTimezone(int offset)voidsetYear(int year)voidsetYear(java.math.BigInteger year)java.util.GregorianCalendartoGregorianCalendar()Convert thisXMLGregorianCalendarto aGregorianCalendar.java.util.GregorianCalendartoGregorianCalendar(java.util.TimeZone timezone, java.util.Locale aLocale, javax.xml.datatype.XMLGregorianCalendar defaults)Convert thisXMLGregorianCalendaralong with provided parameters to aGregorianCalendarinstance.java.lang.StringtoString()Returns aStringrepresentation of thisXMLGregorianCalendarObject.java.lang.StringtoXMLFormat()Return the lexical representation ofthisinstance.java.lang.StringtoXMLFormat(javax.xml.namespace.QName datatype)Formats the string in XML for the datatype if possible.
Method Detail
clone
public ImmutableXMLGregorianCalendar clone()
Clones the instance.- Specified by:
clonein classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- A cloned instance.
getEon
public java.math.BigInteger getEon()
Return high order component for XML Schema 1.0 dateTime datatype field foryear.nullif this optional part of the year field is not defined.Value constraints for this value are summarized in year field of date/time field mapping table.
- Specified by:
getEonin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- eon of this
XMLGregorianCalendar. The value returned is an integer multiple of 10^9. - See Also:
getYear(),getEonAndYear()
getYear
public int getYear()
Return low order component for XML Schema 1.0 dateTime datatype field foryearorDatatypeConstants.FIELD_UNDEFINED.Value constraints for this value are summarized in year field of date/time field mapping table.
- Specified by:
getYearin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- year of this
XMLGregorianCalendar. - See Also:
getEon(),getEonAndYear()
getEonAndYear
public java.math.BigInteger getEonAndYear()
Return XML Schema 1.0 dateTime datatype field foryear.Value constraints for this value are summarized in year field of date/time field mapping table.
getMonth
public int getMonth()
Return number of month orDatatypeConstants.FIELD_UNDEFINED.Value constraints for this value are summarized in month field of date/time field mapping table.
- Specified by:
getMonthin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- year of this
XMLGregorianCalendar.
getDay
public int getDay()
Return day in month orDatatypeConstants.FIELD_UNDEFINED.Value constraints for this value are summarized in day field of date/time field mapping table.
- Specified by:
getDayin classjavax.xml.datatype.XMLGregorianCalendar
getTimezone
public int getTimezone()
Return timezone offset in minutes orDatatypeConstants.FIELD_UNDEFINEDif this optional field is not defined.Value constraints for this value are summarized in timezone field of date/time field mapping table.
- Specified by:
getTimezonein classjavax.xml.datatype.XMLGregorianCalendar
getHour
public int getHour()
Return hours orDatatypeConstants.FIELD_UNDEFINED.Returns
DatatypeConstants.FIELD_UNDEFINEDif this field is not defined.Value constraints for this value are summarized in hour field of date/time field mapping table.
- Specified by:
getHourin classjavax.xml.datatype.XMLGregorianCalendar
getMinute
public int getMinute()
Return minutes orDatatypeConstants.FIELD_UNDEFINED.Returns
DatatypeConstants.FIELD_UNDEFINEDif this field is not defined.Value constraints for this value are summarized in minute field of date/time field mapping table.
- Specified by:
getMinutein classjavax.xml.datatype.XMLGregorianCalendar
getSecond
public int getSecond()
Return seconds orDatatypeConstants.FIELD_UNDEFINED.Returns
DatatypeConstants.FIELD_UNDEFINEDif this field is not defined. When this field is not defined, the optional xs:dateTime fractional seconds field, represented bygetFractionalSecond()andgetMillisecond(), must not be defined.Value constraints for this value are summarized in second field of date/time field mapping table.
- Specified by:
getSecondin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- Second of this
XMLGregorianCalendar. - See Also:
getFractionalSecond(),getMillisecond()
getMillisecond
public int getMillisecond()
Return millisecond precision ofgetFractionalSecond().This method represents a convenience accessor to infinite precision fractional second value returned by
getFractionalSecond(). The returned value is the rounded down to milliseconds value ofgetFractionalSecond(). WhengetFractionalSecond()returnsnull, this method must returnDatatypeConstants.FIELD_UNDEFINED.Value constraints for this value are summarized in second field of date/time field mapping table.
- Overrides:
getMillisecondin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- Millisecond of this
XMLGregorianCalendar. - See Also:
getFractionalSecond()
getFractionalSecond
public java.math.BigDecimal getFractionalSecond()
Return fractional seconds.nullis returned when this optional field is not defined.Value constraints are detailed in second field of date/time field mapping table.
This optional field can only have a defined value when the xs:dateTime second field, represented by
getSecond(), does not returnDatatypeConstants.FIELD_UNDEFINED.- Specified by:
getFractionalSecondin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- fractional seconds of this
XMLGregorianCalendar. - See Also:
getSecond()
compare
public int compare(javax.xml.datatype.XMLGregorianCalendar xmlGregorianCalendar)
Compare two instances of W3C XML Schema 1.0 date/time datatypes according to partial order relation defined in W3C XML Schema 1.0 Part 2, Section 3.2.7.3, Order relation on dateTime.xsd:dateTimedatatype field mapping to accessors of this class are defined in date/time field mapping table.- Specified by:
comparein classjavax.xml.datatype.XMLGregorianCalendar- Parameters:
xmlGregorianCalendar- Instance ofXMLGregorianCalendarto compare- Returns:
- The relationship between
thisXMLGregorianCalendarand the specifiedxmlGregorianCalendarasDatatypeConstants.LESSER,DatatypeConstants.EQUAL,DatatypeConstants.GREATERorDatatypeConstants.INDETERMINATE. - Throws:
java.lang.NullPointerException- ifxmlGregorianCalendaris null.
equals
public boolean equals(java.lang.Object obj)
Compares this calendar to the specified object. The result istrueif and only if the argument is not null and is anXMLGregorianCalendarobject that represents the same instant in time as this object.- Overrides:
equalsin classjavax.xml.datatype.XMLGregorianCalendar- Parameters:
obj- to compare.- Returns:
truewhenobjis an instance ofXMLGregorianCalendarandcompare(XMLGregorianCalendar obj)returnsDatatypeConstants.EQUAL, otherwisefalse.
hashCode
public int hashCode()
Returns a hash code consistent with the definition of the equals method.- Overrides:
hashCodein classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- hash code of this object.
toXMLFormat
public java.lang.String toXMLFormat()
Return the lexical representation ofthisinstance. The format is specified in XML Schema 1.0 Part 2, Section 3.2.[7-14].1, Lexical Representation".Specific target lexical representation format is determined by
getXMLSchemaType().- Specified by:
toXMLFormatin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- XML, as
String, representation of thisXMLGregorianCalendar - Throws:
java.lang.IllegalStateException- if the combination of set fields does not match one of the eight defined XML Schema builtin date/time datatypes.
getXMLSchemaType
public javax.xml.namespace.QName getXMLSchemaType()
Return the name of the XML Schema date/time type that this instance maps to. Type is computed based on fields that are set.Required fields for XML Schema 1.0 Date/Time Datatypes.
(timezone is optional for all date/time datatypes)Datatype year month day hour minute second DatatypeConstants.DATETIMEX X X X X X DatatypeConstants.DATEX X X DatatypeConstants.TIMEX X X DatatypeConstants.GYEARMONTHX X DatatypeConstants.GMONTHDAYX X DatatypeConstants.GYEARX DatatypeConstants.GMONTHX DatatypeConstants.GDAYX - Specified by:
getXMLSchemaTypein classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- One of the following class constants:
DatatypeConstants.DATETIME,DatatypeConstants.TIME,DatatypeConstants.DATE,DatatypeConstants.GYEARMONTH,DatatypeConstants.GMONTHDAY,DatatypeConstants.GYEAR,DatatypeConstants.GMONTHorDatatypeConstants.GDAY. - Throws:
java.lang.IllegalStateException- if the combination of set fields does not match one of the eight defined XML Schema builtin date/time datatypes.
toString
public java.lang.String toString()
Returns aStringrepresentation of thisXMLGregorianCalendarObject.The result is a lexical representation generated by
toXMLFormat().- Overrides:
toStringin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- A non-
nullvalidStringrepresentation of thisXMLGregorianCalendar. - Throws:
java.lang.IllegalStateException- if the combination of set fields does not match one of the eight defined XML Schema builtin date/time datatypes.- See Also:
toXMLFormat()
isValid
public boolean isValid()
Validate instance bygetXMLSchemaType()constraints.- Specified by:
isValidin classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- true if data values are valid.
toGregorianCalendar
public java.util.GregorianCalendar toGregorianCalendar()
Convert thisXMLGregorianCalendarto aGregorianCalendar.When
thisinstance has an undefined field, this conversion relies on thejava.util.GregorianCalendardefault for its corresponding field. A notable difference between XML Schema 1.0 date/time datatypes andjava.util.GregorianCalendaris that Timezone value is optional for date/time datatypes and it is a required field forjava.util.GregorianCalendar. See javadoc forjava.util.TimeZone.getDefault()on how the default is determined. To explicitly specify theTimeZoneinstance, seetoGregorianCalendar(TimeZone, Locale, XMLGregorianCalendar).
* designates possible loss of precision during the conversion due to source datatype having higher precision than target datatype.Field by Field Conversion from this class to java.util.GregorianCalendarjava.util.GregorianCalendarfieldjavax.xml.datatype.XMLGregorianCalendarfieldERAgetEonAndYear().signum() < 0 ? GregorianCalendar.BC : GregorianCalendar.ADYEARgetEonAndYear().abs().intValue()*MONTHgetMonth()-DatatypeConstants.JANUARY+Calendar.JANUARYDAY_OF_MONTHgetDay()HOUR_OF_DAYgetHour()MINUTEgetMinute()SECONDgetSecond()MILLISECONDget millisecond order from getFractionalSecond()*GregorianCalendar.setTimeZone(TimeZone)getTimezone()formatted into Custom timezone idTo ensure consistency in conversion implementations, the new
GregorianCalendarshould be instantiated in following manner.- Using
timeZonevalue as defined above, create a newjava.util.GregorianCalendar(timeZone,Locale.getDefault()). - Initialize all GregorianCalendar fields by calling
Calendar.clear(). - Obtain a pure Gregorian Calendar by invoking
GregorianCalendar.setGregorianChange( new Date(Long.MIN_VALUE)). - Its fields ERA, YEAR, MONTH, DAY_OF_MONTH, HOUR_OF_DAY, MINUTE, SECOND and MILLISECOND are set using the method
Calendar.set(int,int)
- Specified by:
toGregorianCalendarin classjavax.xml.datatype.XMLGregorianCalendar- See Also:
toGregorianCalendar(java.util.TimeZone, java.util.Locale, XMLGregorianCalendar)
- Using
toGregorianCalendar
public java.util.GregorianCalendar toGregorianCalendar(java.util.TimeZone timezone, java.util.Locale aLocale, javax.xml.datatype.XMLGregorianCalendar defaults)Convert thisXMLGregorianCalendaralong with provided parameters to aGregorianCalendarinstance.Since XML Schema 1.0 date/time datetypes has no concept of timezone ids or daylight savings timezone ids, this conversion operation allows the user to explicitly specify one with
timezoneparameter.To compute the return value's
TimeZonefield,- when parameter
timeZoneis non-null, it is the timezone field. - else when
this.getTimezone() != FIELD_UNDEFINED, create ajava.util.TimeZonewith a custom timezone id using thethis.getTimezone(). - else when
defaults.getTimezone() != FIELD_UNDEFINED, create ajava.util.TimeZonewith a custom timezone id usingdefaults.getTimezone(). - else use the
GregorianCalendardefault timezone value for the host is defined as specified byjava.util.TimeZone.getDefault().
To ensure consistency in conversion implementations, the new
GregorianCalendarshould be instantiated in following manner.- Create a new
java.util.GregorianCalendar(TimeZone, Locale)with TimeZone set as specified above and theLocaleparameter. - Initialize all GregorianCalendar fields by calling
Calendar.clear() - Obtain a pure Gregorian Calendar by invoking
GregorianCalendar.setGregorianChange( new Date(Long.MIN_VALUE)). - Its fields ERA, YEAR, MONTH, DAY_OF_MONTH, HOUR_OF_DAY, MINUTE, SECOND and MILLISECOND are set using the method
Calendar.set(int,int)
- Specified by:
toGregorianCalendarin classjavax.xml.datatype.XMLGregorianCalendar- Parameters:
timezone- provide Timezone.nullis a legal value.aLocale- provide explicit Locale. Use default GregorianCalendar locale if value isnull.defaults- provide default field values to use when corresponding field for this instance is FIELD_UNDEFINED or null. Ifdefaultsisnullor a field within the specifieddefaultsis undefined, just usejava.util.GregorianCalendardefaults.- Returns:
- a java.util.GregorianCalendar conversion of this instance.
- when parameter
getTimeZone
public java.util.TimeZone getTimeZone(int defaultZoneoffset)
Returns ajava.util.TimeZonefor this class.If timezone field is defined for this instance, returns TimeZone initialized with custom timezone id of zoneoffset. If timezone field is undefined, try the defaultZoneoffset that was passed in. If defaultZoneoffset is FIELD_UNDEFINED, return default timezone for this host. (Same default as java.util.GregorianCalendar).
- Specified by:
getTimeZonein classjavax.xml.datatype.XMLGregorianCalendar- Parameters:
defaultZoneoffset- default zoneoffset if this zoneoffset isDatatypeConstants.FIELD_UNDEFINED.- Returns:
- TimeZone for this.
toXMLFormat
public java.lang.String toXMLFormat(javax.xml.namespace.QName datatype) throws java.lang.IllegalArgumentException, java.lang.IllegalStateExceptionFormats the string in XML for the datatype if possible.- Parameters:
datatype- The XML date/time datatype.- Throws:
java.lang.IllegalArgumentException- If the datatypejava.lang.IllegalStateException- If the combination of set fields does not match one of the eight defined XML Schema built-in date/time datatypes.
clear
public void clear()
- Specified by:
clearin classjavax.xml.datatype.XMLGregorianCalendar
reset
public void reset()
- Specified by:
resetin classjavax.xml.datatype.XMLGregorianCalendar
setYear
public void setYear(java.math.BigInteger year)
- Specified by:
setYearin classjavax.xml.datatype.XMLGregorianCalendar
setYear
public void setYear(int year)
- Specified by:
setYearin classjavax.xml.datatype.XMLGregorianCalendar
setMonth
public void setMonth(int month)
- Specified by:
setMonthin classjavax.xml.datatype.XMLGregorianCalendar
setDay
public void setDay(int day)
- Specified by:
setDayin classjavax.xml.datatype.XMLGregorianCalendar
setTimezone
public void setTimezone(int offset)
- Specified by:
setTimezonein classjavax.xml.datatype.XMLGregorianCalendar
setHour
public void setHour(int hour)
- Specified by:
setHourin classjavax.xml.datatype.XMLGregorianCalendar
setMinute
public void setMinute(int minute)
- Specified by:
setMinutein classjavax.xml.datatype.XMLGregorianCalendar
setSecond
public void setSecond(int second)
- Specified by:
setSecondin classjavax.xml.datatype.XMLGregorianCalendar
setMillisecond
public void setMillisecond(int millisecond)
- Specified by:
setMillisecondin classjavax.xml.datatype.XMLGregorianCalendar
setFractionalSecond
public void setFractionalSecond(java.math.BigDecimal fractional)
- Specified by:
setFractionalSecondin classjavax.xml.datatype.XMLGregorianCalendar
add
public void add(javax.xml.datatype.Duration duration)
- Specified by:
addin classjavax.xml.datatype.XMLGregorianCalendar
normalize
public javax.xml.datatype.XMLGregorianCalendar normalize()
Normalize this instance to UTC.
2000-03-04T23:00:00+03:00 normalizes to 2000-03-04T20:00:00Z
Implements W3C XML Schema Part 2, Section 3.2.7.3 (A).
- Specified by:
normalizein classjavax.xml.datatype.XMLGregorianCalendar- Returns:
- A
clone()'d instance ofXMLGregorianCalendarnormalized to UTC.