Class DurationValue

    • Field Detail

      • negative

        protected boolean negative
      • years

        protected int years
      • months

        protected int months
      • days

        protected int days
      • hours

        protected int hours
      • minutes

        protected int minutes
      • seconds

        protected int seconds
      • microseconds

        protected int microseconds
      • normalized

        protected boolean normalized
    • Constructor Detail

      • DurationValue

        protected DurationValue()
        Private constructor for internal use
      • DurationValue

        public DurationValue​(boolean positive,
                             int years,
                             int months,
                             int days,
                             int hours,
                             int minutes,
                             int seconds,
                             int microseconds)
      • DurationValue

        public DurationValue​(java.lang.CharSequence s)
                      throws XPathException
        Constructor: create a duration value from a supplied string, in ISO 8601 format [-]PnYnMnDTnHnMnS
        Throws:
        XPathException
    • Method Detail

      • normalizeZeroDuration

        protected void normalizeZeroDuration()
      • badDuration

        protected void badDuration​(java.lang.String msg,
                                   java.lang.CharSequence s)
                            throws XPathException
        Throws:
        XPathException
      • convertPrimitive

        public AtomicValue convertPrimitive​(BuiltInAtomicType requiredType,
                                            boolean validate,
                                            XPathContext context)
        Convert to target data type
        Specified by:
        convertPrimitive in class AtomicValue
        Parameters:
        requiredType - an integer identifying the required atomic type
        validate - if set to false, the caller asserts that the value is known to be valid
        context -
        Returns:
        an AtomicValue, a value of the required type; or a ValidationErrorValue if the value cannot be converted.
      • normalizeDuration

        public DurationValue normalizeDuration()
        Normalize the duration, so that months<12, hours<24, minutes<60, seconds<60. At present we do this when converting to a string. It's possible that it should be done immediately on constructing the duration (so that component extraction functions get the normalized value). We're awaiting clarification of the spec (bugzilla 3369)
        Returns:
        a new, normalized duration
      • signum

        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
      • getStringValue

        public java.lang.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
        Specified by:
        getStringValue in interface ValueRepresentation
        Specified by:
        getStringValue in class AtomicValue
        Returns:
        the string value of the item
        See Also:
        Item.getStringValueCS()
      • getLengthInSeconds

        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.)
      • equals

        public boolean equals​(java.lang.Object other)
        Test if the two durations are of equal length. Note: this function is defined in XPath 2.0, but its semantics are currently unclear.
        Overrides:
        equals in class Value
        Throws:
        java.lang.ClassCastException - if the other value is not an xs:duration or subtype thereof
      • hashCode

        public int hashCode()
        Description copied from class: Value
        Return a hash code to support the equals() function
        Overrides:
        hashCode in class Value
      • negate

        public DurationValue negate()
        Negate a duration (same as subtracting from zero, but it preserves the type of the original duration)