Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
net.sf.saxon.value.Value
net.sf.saxon.value.AtomicValue
net.sf.saxon.value.DurationValue
public class DurationValue
extends AtomicValue
Field Summary | |
protected int | |
protected int | |
protected boolean | |
protected long |
Fields inherited from class net.sf.saxon.value.AtomicValue | |
typeLabel |
Fields inherited from class net.sf.saxon.value.Value | |
EMPTY_CLASS_ARRAY , INDETERMINATE_ORDERING |
Fields inherited from interface net.sf.saxon.om.ValueRepresentation | |
EMPTY_VALUE_ARRAY |
Constructor Summary | |
| |
| |
|
Method Summary | |
DurationValue |
|
protected static ValidationFailure |
|
ConversionResult |
|
Object |
|
AtomicValue |
|
DecimalValue |
|
boolean |
|
AtomicValue |
|
int |
|
int |
|
double |
|
int |
|
int |
|
int |
|
BuiltInAtomicType |
|
Comparable |
|
static Comparable |
|
int |
|
String |
|
CharSequence |
|
Object |
|
int |
|
int |
|
static ConversionResult |
|
DurationValue |
|
DurationValue |
|
DurationValue |
|
protected void |
|
int |
|
protected static int |
|
DurationValue |
|
Methods inherited from class net.sf.saxon.value.AtomicValue | |
asAtomic , checkPermittedContents , convert , convert , convertPrimitive , copyAsSubType , effectiveBooleanValue , equals , getCardinality , getComponent , getItemType , getLength , getPrimitiveType , getSchemaComparable , getStringValue , getStringValueCS , getTypeLabel , getTypedValue , getXPathComparable , isNaN , itemAt , iterate , process , setTypeLabel , subsequence , toString |
Methods inherited from class net.sf.saxon.value.Value | |
asItem , asItem , asIterator , asValue , checkPermittedContents , convertJavaObjectToXPath , convertToJava , convertToJava , effectiveBooleanValue , equals , fromItem , getCanonicalLexicalRepresentation , getCardinality , getItemType , getIterator , getLength , getSchemaComparable , getStringValue , getStringValueCS , itemAt , iterate , iterate , makeQNameValue , process , reduce , stringToNumber , toString |
protected int microseconds
protected int months
protected boolean negative
protected long seconds
protected DurationValue()
Private constructor for internal use
public DurationValue(boolean positive, int years, int months, int days, int hours, int minutes, long seconds, int microseconds) throws IllegalArgumentException
Constructor for xs:duration taking the components of the duration. There is no requirement that the values are normalized, for example it is acceptable to specify months=18. The values of the individual components must all be non-negative.
- Parameters:
positive
- true if the duration is positive, false if negative. For a negative duration the components are all supplied as positive integers (or zero).years
- the number of yearsmonths
- the number of monthsdays
- the number of dayshours
- the number of hoursminutes
- the number of minutesseconds
- the number of secondsmicroseconds
- the number of microseconds
public DurationValue(boolean positive, int years, int months, int days, int hours, int minutes, long seconds, int microseconds, AtomicType type)
Constructor for xs:duration taking the components of the duration, plus a user-specified type which must be a subtype of xs:duration. There is no requirement that the values are normalized, for example it is acceptable to specify months=18. The values of the individual components must all be non-negative.
- Parameters:
positive
- true if the duration is positive, false if negative. For a negative duration the components are all supplied as positive integers (or zero).years
- the number of yearsmonths
- the number of monthsdays
- the number of dayshours
- the number of hoursminutes
- the number of minutesseconds
- the number of seconds (long to allow copying)microseconds
- the number of microsecondstype
- the user-defined subtype of xs:duration. Note that this constructor cannot be used to create an instance of xs:dayTimeDuration or xs:yearMonthDuration.
public DurationValue add(DurationValue other) throws XPathException
Add two durations
- Parameters:
other
- the duration to be added to this one
- Returns:
- the sum of the two durations
public ConversionResult convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type
- Overrides:
- convertPrimitive in interface AtomicValue
- Parameters:
requiredType
- an integer identifying the required atomic typevalidate
- if set to false, the caller asserts that the value is known to be validcontext
- the XPath dynamic context
- Returns:
- an AtomicValue, a value of the required type; or a
ValidationFailure
if the value cannot be converted.
public Object convertToJava(Class target, XPathContext context) throws XPathException
Convert to Java object (for passing to external functions)
- Overrides:
- convertToJava in interface Value
public AtomicValue copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
- Overrides:
- copyAsSubType in interface AtomicValue
- Parameters:
typeLabel
- the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.
public DecimalValue divide(DurationValue other) throws XPathException
Divide a duration by a another duration
- Parameters:
other
- the duration to divide by
- Returns:
- the result of the division
public boolean equals(Object other)
Test if the two durations are of equal length.
- Overrides:
- equals in interface AtomicValue
public AtomicValue getComponent(int component) throws XPathException
Get a component of the normalized value
- Overrides:
- getComponent in interface AtomicValue
public int getDays()
Get the days component
- Returns:
- the number of days in the normalized duration; always positive
public int getHours()
Get the hours component
- Returns:
- the number of hours in the normalized duration; always positive
public double getLengthInSeconds()
Get length of duration in seconds, assuming an average length of month. (Note, this defines a total ordering on durations which is different from the partial order defined in XML Schema; XPath 2.0 currently avoids defining an ordering at all. But the ordering here is consistent with the ordering of the two duration subtypes in XPath 2.0.)
- Returns:
- the duration in seconds, as a double
public int getMicroseconds()
Get the microseconds component
- Returns:
- the number of microseconds in the normalized duration; always positive
public int getMinutes()
Get the minutes component
- Returns:
- the number of minutes in the normalized duration; always positive
public int getMonths()
Get the months component
- Returns:
- the number of months in the normalized duration; always positive
public BuiltInAtomicType getPrimitiveType()
Determine the primitive type of the value. This delivers the same answer as getItemType().getPrimitiveItemType(). The primitive types are the 19 primitive types of XML Schema, plus xs:integer, xs:dayTimeDuration and xs:yearMonthDuration, and xs:untypedAtomic. For external objects, the result is AnyAtomicType.
- Overrides:
- getPrimitiveType in interface AtomicValue
public Comparable getSchemaComparable()
Get a Comparable value that implements the XML Schema ordering comparison semantics for this value. This implementation handles the ordering rules for durations in XML Schema. It is overridden for the two subtypes DayTimeDuration and YearMonthDuration.
- Overrides:
- getSchemaComparable in interface AtomicValue
- Returns:
- a suitable Comparable
public static Comparable getSchemaComparable(DurationValue value)
Get a Comparable value that implements the XML Schema ordering comparison semantics for this value. This implementation handles the ordering rules for durations in XML Schema.
- Parameters:
value
- the duration for which a comparison key is required
- Returns:
- a suitable Comparable
public int getSeconds()
Get the seconds component
- Returns:
- the number of whole seconds in the normalized duration; always positive
public String getStringValue()
Convert the value to a string, using the serialization rules. For atomic values this is the same as a cast; for sequence values it gives a space-separated list. This method is refined for AtomicValues so that it never throws an Exception.
- Specified by:
- getStringValue in interface Item
- getStringValue in interface ValueRepresentation
- Overrides:
- getStringValue in interface AtomicValue
public CharSequence getStringValueCS()
Convert to string
- Specified by:
- getStringValueCS in interface Item
- getStringValueCS in interface ValueRepresentation
- Overrides:
- getStringValueCS in interface AtomicValue
- Returns:
- ISO 8601 representation.
public Object getXPathComparable(boolean ordered, StringCollator collator, XPathContext context)
Get an object value that implements the XPath equality and ordering comparison semantics for this value. If the ordered parameter is set to true, the result will be a Comparable and will support a compareTo() method with the semantics of the XPath lt/gt operator, provided that the other operand is also obtained using the getXPathComparable() method. In all cases the result will support equals() and hashCode() methods that support the semantics of the XPath eq operator, again provided that the other operand is also obtained using the getXPathComparable() method. A context argument is supplied for use in cases where the comparison semantics are context-sensitive, for example where they depend on the implicit timezone or the default collation.
- Overrides:
- getXPathComparable in interface AtomicValue
- Parameters:
ordered
- true if an ordered comparison is required. In this case the result is null if the type is unordered; in other cases the returned value will be a Comparable.collator
- collation used for comparing string valuescontext
- the XPath dynamic evaluation context, used in cases where the comparison is context sensitive @return an Object whose equals() and hashCode() methods implement the XPath comparison semantics with respect to this atomic value. If ordered is specified, the result will either be null if no ordering is defined, or will be a Comparable
public int getYears()
Get the year component
- Returns:
- the number of years in the normalized duration; always positive
public int hashCode()
public static ConversionResult makeDuration(CharSequence s)
Static factory method: create a duration value from a supplied string, in ISO 8601 format [-]PnYnMnDTnHnMnS
- Parameters:
s
- a string in the lexical space of xs:duration
- Returns:
- the constructed xs:duration value, or a
ValidationFailure
if the supplied string is lexically invalid.
public DurationValue multiply(double factor) throws XPathException
Multiply a duration by a number
- Parameters:
factor
- the number to multiply by
- Returns:
- the result of the multiplication
public DurationValue negate()
Negate a duration (same as subtracting from zero, but it preserves the type of the original duration)
- Returns:
- the original duration with its sign reversed, retaining its type
public DurationValue normalizeDuration()
Deprecated. since 9.0 - the method does nothing
Normalize the duration, so that months<12, hours<24, minutes<60, seconds<60. Since durations are now always normalized, this method has become a no-op, but is retained for backwards compatibility
- Returns:
- the duration unchanged
protected void normalizeZeroDuration()
Ensure that a zero duration is considered positive
public int signum()
Return the signum of the value
- Returns:
- -1 if the duration is negative, zero if it is zero-length, +1 if it is positive
protected static int simpleInteger(String s)
Parse a simple unsigned integer
- Parameters:
s
- the string containing the sequence of digits. No sign or whitespace is allowed.
- Returns:
- the integer. Return -1 if the string is not a sequence of digits or exceeds 2^31
public DurationValue subtract(DurationValue other) throws XPathException
Subtract two durations
- Parameters:
other
- the duration to be subtracted from this one
- Returns:
- the difference of the two durations