Method from javax.xml.datatype.DatatypeFactory Detail: |
abstract public Duration newDuration(String lexicalRepresentation)
Obtain a new instance of a Duration
specifying the Duration as its string representation, "PnYnMnDTnHnMnS",
as defined in XML Schema 1.0 section 3.2.6.1.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration as:
duration represents a duration of time.
The value space of duration is a six-dimensional space where the coordinates designate the
Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively.
These components are ordered in their significance by their order of appearance i.e. as
year, month, day, hour, minute, and second.
All six values are set and available from the created Duration
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
|
abstract public Duration newDuration(long durationInMilliSeconds)
Obtain a new instance of a Duration
specifying the Duration as milliseconds.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration as:
duration represents a duration of time.
The value space of duration is a six-dimensional space where the coordinates designate the
Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively.
These components are ordered in their significance by their order of appearance i.e. as
year, month, day, hour, minute, and second.
All six values are set by computing their values from the specified milliseconds
and are available using the get methods of the created Duration .
The values conform to and are defined by:
The default start instance is defined by GregorianCalendar 's use of the start of the epoch: i.e.,
java.util.Calendar#YEAR = 1970,
java.util.Calendar#MONTH = java.util.Calendar#JANUARY ,
java.util.Calendar#DATE = 1, etc.
This is important as there are variations in the Gregorian Calendar,
e.g. leap years have different days in the month = java.util.Calendar#FEBRUARY
so the result of Duration#getMonths() and Duration#getDays() can be influenced.
|
abstract public Duration newDuration(boolean isPositive,
BigInteger years,
BigInteger months,
BigInteger days,
BigInteger hours,
BigInteger minutes,
BigDecimal seconds)
Obtain a new instance of a Duration
specifying the Duration as isPositive, years, months, days, hours, minutes, seconds.
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
A null value indicates that field is not set.
|
public Duration newDuration(boolean isPositive,
int years,
int months,
int days,
int hours,
int minutes,
int seconds) {
// years may not be set
BigInteger realYears = (years != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) years) : null;
// months may not be set
BigInteger realMonths = (months != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) months) : null;
// days may not be set
BigInteger realDays = (days != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) days) : null;
// hours may not be set
BigInteger realHours = (hours != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) hours) : null;
// minutes may not be set
BigInteger realMinutes = (minutes != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) minutes) : null;
// seconds may not be set
BigDecimal realSeconds = (seconds != DatatypeConstants.FIELD_UNDEFINED) ? BigDecimal.valueOf((long) seconds) : null;
return newDuration(
isPositive,
realYears,
realMonths,
realDays,
realHours,
realMinutes,
realSeconds
);
}
Obtain a new instance of a Duration
specifying the Duration as isPositive, years, months, days, hours, minutes, seconds.
A DatatypeConstants#FIELD_UNDEFINED value indicates that field is not set.
|
public Duration newDurationDayTime(String lexicalRepresentation) {
if (lexicalRepresentation == null) {
throw new NullPointerException("The lexical representation cannot be null.");
}
// The lexical representation must match the pattern [^YM]*(T.*)?
int pos = lexicalRepresentation.indexOf('T');
int length = (pos >= 0) ? pos : lexicalRepresentation.length();
for (int i = 0; i < length; ++i) {
char c = lexicalRepresentation.charAt(i);
if (c == 'Y' || c == 'M') {
throw new IllegalArgumentException("Invalid dayTimeDuration value: " + lexicalRepresentation);
}
}
return newDuration(lexicalRepresentation);
}
Create a Duration of type xdt:dayTimeDuration by parsing its String representation,
"PnDTnHnMnS",
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes .
All four values are set and available from the created Duration
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
|
public Duration newDurationDayTime(long durationInMilliseconds) {
long _durationInMilliseconds = durationInMilliseconds;
if (_durationInMilliseconds == 0) {
return newDuration(true, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, 0, 0, 0, 0);
}
boolean tooLong = false;
final boolean isPositive;
if (_durationInMilliseconds < 0) {
isPositive = false;
if (_durationInMilliseconds == Long.MIN_VALUE) {
_durationInMilliseconds++;
tooLong = true;
}
_durationInMilliseconds *= -1;
}
else {
isPositive = true;
}
long val = _durationInMilliseconds;
int milliseconds = (int) (val % 60000L); // 60000 milliseconds per minute
if (tooLong) {
++milliseconds;
}
if (milliseconds % 1000 == 0) {
int seconds = milliseconds / 1000;
val = val / 60000L;
int minutes = (int) (val % 60L); // 60 minutes per hour
val = val / 60L;
int hours = (int) (val % 24L); // 24 hours per day
long days = val / 24L;
if (days < = ((long) Integer.MAX_VALUE)) {
return newDuration(isPositive, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, (int) days, hours, minutes, seconds);
}
else {
return newDuration(isPositive, null, null,
BigInteger.valueOf(days), BigInteger.valueOf(hours),
BigInteger.valueOf(minutes), BigDecimal.valueOf(milliseconds, 3));
}
}
BigDecimal seconds = BigDecimal.valueOf(milliseconds, 3);
val = val / 60000L;
BigInteger minutes = BigInteger.valueOf(val % 60L); // 60 minutes per hour
val = val / 60L;
BigInteger hours = BigInteger.valueOf(val % 24L); // 24 hours per day
val = val / 24L;
BigInteger days = BigInteger.valueOf(val);
return newDuration(isPositive, null, null, days, hours, minutes, seconds);
}
Create a Duration of type xdt:dayTimeDuration using the specified milliseconds as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes .
All four values are set by computing their values from the specified milliseconds
and are available using the get methods of the created Duration .
The values conform to and are defined by:
The default start instance is defined by GregorianCalendar 's use of the start of the epoch: i.e.,
java.util.Calendar#YEAR = 1970,
java.util.Calendar#MONTH = java.util.Calendar#JANUARY ,
java.util.Calendar#DATE = 1, etc.
This is important as there are variations in the Gregorian Calendar,
e.g. leap years have different days in the month = java.util.Calendar#FEBRUARY
so the result of Duration#getDays() can be influenced.
Any remaining milliseconds after determining the day, hour, minute and second are discarded.
|
public Duration newDurationDayTime(boolean isPositive,
BigInteger day,
BigInteger hour,
BigInteger minute,
BigInteger second) {
return newDuration(
isPositive,
null, // years
null, // months
day,
hour,
minute,
(second != null)? new BigDecimal(second):null
);
}
Create a Duration of type xdt:dayTimeDuration using the specified
day , hour , minute and second as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes .
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
A null value indicates that field is not set.
|
public Duration newDurationDayTime(boolean isPositive,
int day,
int hour,
int minute,
int second) {
return newDuration(isPositive,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
day, hour, minute, second);
}
Create a Duration of type xdt:dayTimeDuration using the specified
day , hour , minute and second as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes .
A DatatypeConstants#FIELD_UNDEFINED value indicates that field is not set.
|
public Duration newDurationYearMonth(String lexicalRepresentation) {
if (lexicalRepresentation == null) {
throw new NullPointerException("The lexical representation cannot be null.");
}
// The lexical representation must match the pattern [^DT]*.
int length = lexicalRepresentation.length();
for (int i = 0; i < length; ++i) {
char c = lexicalRepresentation.charAt(i);
if (c == 'D' || c == 'T') {
throw new IllegalArgumentException("Invalid yearMonthDuration value: " + lexicalRepresentation);
}
}
return newDuration(lexicalRepresentation);
}
Create a Duration of type xdt:yearMonthDuration by parsing its String representation,
"PnYnM",
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration is a subtype of xs:duration
whose lexical representation contains only year and month components.
This datatype resides in the namespace javax.xml.XMLConstants#W3C_XPATH_DATATYPE_NS_URI .
Both values are set and available from the created Duration
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
|
public Duration newDurationYearMonth(long durationInMilliseconds) {
return newDuration(durationInMilliseconds);
}
|
public Duration newDurationYearMonth(boolean isPositive,
BigInteger year,
BigInteger month) {
return newDuration(
isPositive,
year,
month,
null, // days
null, // hours
null, // minutes
null // seconds
);
}
Create a Duration of type xdt:yearMonthDuration using the specified
year and month as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
A null value indicates that field is not set.
|
public Duration newDurationYearMonth(boolean isPositive,
int year,
int month) {
return newDuration(isPositive, year, month,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED);
}
|
public static DatatypeFactory newInstance() throws DatatypeConfigurationException {
try {
return (DatatypeFactory) FactoryFinder.find(
/* The default property name according to the JAXP spec */
DATATYPEFACTORY_PROPERTY,
/* The fallback implementation class name */
DATATYPEFACTORY_IMPLEMENTATION_CLASS);
}
catch (FactoryFinder.ConfigurationError e) {
throw new DatatypeConfigurationException(e.getMessage(), e.getException());
}
}
Obtain a new instance of a DatatypeFactory .
The implementation resolution mechanisms are defined in this
Class 's documentation.
|
public static DatatypeFactory newInstance(String factoryClassName,
ClassLoader classLoader) throws DatatypeConfigurationException {
if (factoryClassName == null) {
throw new DatatypeConfigurationException("factoryClassName cannot be null.");
}
if (classLoader == null) {
classLoader = SecuritySupport.getContextClassLoader();
}
try {
return (DatatypeFactory) FactoryFinder.newInstance(factoryClassName, classLoader);
}
catch (FactoryFinder.ConfigurationError e) {
throw new DatatypeConfigurationException(e.getMessage(), e.getException());
}
}
|
abstract public XMLGregorianCalendar newXMLGregorianCalendar()
|
abstract public XMLGregorianCalendar newXMLGregorianCalendar(String lexicalRepresentation)
Create a new XMLGregorianCalendar by parsing the String as a lexical representation.
Parsing the lexical string representation is defined in
XML Schema 1.0 Part 2, Section 3.2.[7-14].1,
Lexical Representation.
The string representation may not have any leading and trailing whitespaces.
The parsing is done field by field so that
the following holds for any lexically correct String x:
newXMLGregorianCalendar(x).toXMLFormat().equals(x)
Except for the noted lexical/canonical representation mismatches
listed in
XML Schema 1.0 errata, Section 3.2.7.2. |
abstract public XMLGregorianCalendar newXMLGregorianCalendar(GregorianCalendar cal)
Create an XMLGregorianCalendar from a GregorianCalendar .
*conversion loss of information. It is not possible to represent
a java.util.GregorianCalendar daylight savings timezone id in the
XML Schema 1.0 date/time datatype representation.
To compute the return value's TimeZone field,
- when
this.getTimezone() != FIELD_UNDEFINED ,
create a java.util.TimeZone with a custom timezone id
using the this.getTimezone() .
- else use the
GregorianCalendar default timezone value
for the host is defined as specified by
java.util.TimeZone.getDefault() .
|
abstract public XMLGregorianCalendar newXMLGregorianCalendar(BigInteger year,
int month,
int day,
int hour,
int minute,
int second,
BigDecimal fractionalSecond,
int timezone)
Constructor allowing for complete value spaces allowed by
W3C XML Schema 1.0 recommendation for xsd:dateTime and related
builtin datatypes. Note that year parameter supports
arbitrarily large numbers and fractionalSecond has infinite
precision.
A null value indicates that field is not set.
|
public XMLGregorianCalendar newXMLGregorianCalendar(int year,
int month,
int day,
int hour,
int minute,
int second,
int millisecond,
int timezone) {
// year may be undefined
BigInteger realYear = (year != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) year) : null;
// millisecond may be undefined
// millisecond must be >= 0 millisecond < = 1000
BigDecimal realMillisecond = null; // undefined value
if (millisecond != DatatypeConstants.FIELD_UNDEFINED) {
if (millisecond < 0 || millisecond > 1000) {
throw new IllegalArgumentException(
"javax.xml.datatype.DatatypeFactory#newXMLGregorianCalendar("
+ "int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)"
+ "with invalid millisecond: " + millisecond
);
}
realMillisecond = BigDecimal.valueOf((long) millisecond, 3);
}
return newXMLGregorianCalendar(
realYear,
month,
day,
hour,
minute,
second,
realMillisecond,
timezone
);
}
Constructor of value spaces that a
java.util.GregorianCalendar instance would need to convert to an
XMLGregorianCalendar instance.
XMLGregorianCalendar eon and
fractionalSecond are set to null
A DatatypeConstants#FIELD_UNDEFINED value indicates that field is not set.
|
public XMLGregorianCalendar newXMLGregorianCalendarDate(int year,
int month,
int day,
int timezone) {
return newXMLGregorianCalendar(
year,
month,
day,
DatatypeConstants.FIELD_UNDEFINED, // hour
DatatypeConstants.FIELD_UNDEFINED, // minute
DatatypeConstants.FIELD_UNDEFINED, // second
DatatypeConstants.FIELD_UNDEFINED, // millisecond
timezone);
}
|
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours,
int minutes,
int seconds,
int timezone) {
return newXMLGregorianCalendar(
DatatypeConstants.FIELD_UNDEFINED, // Year
DatatypeConstants.FIELD_UNDEFINED, // Month
DatatypeConstants.FIELD_UNDEFINED, // Day
hours,
minutes,
seconds,
DatatypeConstants.FIELD_UNDEFINED, //Millisecond
timezone);
}
|
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours,
int minutes,
int seconds,
BigDecimal fractionalSecond,
int timezone) {
return newXMLGregorianCalendar(
null, // year
DatatypeConstants.FIELD_UNDEFINED, // month
DatatypeConstants.FIELD_UNDEFINED, // day
hours,
minutes,
seconds,
fractionalSecond,
timezone);
}
Create a Java instance of XML Schema builtin datatype time.
A null value indicates that field is not set.
A DatatypeConstants#FIELD_UNDEFINED value indicates that field is not set.
|
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours,
int minutes,
int seconds,
int milliseconds,
int timezone) {
// millisecond may be undefined
// millisecond must be >= 0 millisecond < = 1000
BigDecimal realMilliseconds = null; // undefined value
if (milliseconds != DatatypeConstants.FIELD_UNDEFINED) {
if (milliseconds < 0 || milliseconds > 1000) {
throw new IllegalArgumentException(
"javax.xml.datatype.DatatypeFactory#newXMLGregorianCalendarTime("
+ "int hours, int minutes, int seconds, int milliseconds, int timezone)"
+ "with invalid milliseconds: " + milliseconds
);
}
realMilliseconds = BigDecimal.valueOf((long) milliseconds, 3);
}
return newXMLGregorianCalendarTime(
hours,
minutes,
seconds,
realMilliseconds,
timezone
);
}
|