org.apache.xerces.impl.dv.xs

## Class AbstractDateTimeDV

- java.lang.Object
- - org.apache.xerces.impl.dv.xs.TypeValidator
  - - org.apache.xerces.impl.dv.xs.AbstractDateTimeDV

- Direct Known Subclasses:
    DateTimeDV, DayDV, DurationDV, MonthDayDV, MonthDV, TimeDV, YearDV, YearMonthDV

      public abstract class AbstractDateTimeDV
      extends TypeValidator

  This is the base class of all date/time datatype validators. It implements common code for parsing, validating and comparing datatypes. Classes that extend this class, must implement parse() method. REVISIT: There are many instance variables, which would cause problems when we support grammar caching. A grammar is possibly used by two parser instances at the same time, then the same simple type decl object can be used to validate two strings at the same time. -SG
  Version:
    $Id: AbstractDateTimeDV.java 1156230 2011-08-10 15:27:50Z knoaman $
  Author:
    Elena Litani, Len Berman, Gopal Sharma, SUN Microsystems Inc.

  # INTERNAL:

    Usage of this class is not supported. It may be altered or removed at any time.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static javax.xml.datatype.DatatypeFactory` | `datatypeFactory`
    `protected static int` | `DAY`
    `protected static int` | `MONTH`
    `protected static int` | `YEAR`

    - ### Fields inherited from class org.apache.xerces.impl.dv.xs.TypeValidator

      `EQUAL, GREATER_THAN, INDETERMINATE, LESS_THAN`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractDateTimeDV()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `append(java.lang.StringBuffer message, double value)`
    `protected void` | `append(java.lang.StringBuffer message, int value, int nch)`
    `protected void` | `append2(java.lang.StringBuffer message, double value)`
    `int` | `compare(java.lang.Object value1, java.lang.Object value2)`
    `protected short` | `compareDates(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date2, boolean strict)` Compare algorithm described in dateDime (3.2.7).
    `protected short` | `compareOrder(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date2)` Given normalized values, determines order-relation between give date/time objects.
    `protected java.lang.String` | `dateToString(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)`
    `protected int` | `findUTCSign(java.lang.String buffer, int start, int end)` Return index of UTC char: 'Z', '+', '-'
    `protected int` | `fQuotient(int a, int b)`
    `protected int` | `fQuotient(int temp, int low, int high)`
    `protected int` | `getDate(java.lang.String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)` Parses date CCYY-MM-DD
    `protected javax.xml.datatype.Duration` | `getDuration(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)`
    `protected java.math.BigDecimal` | `getFractionalSecondsAsBigDecimal(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)`
    `protected void` | `getTime(java.lang.String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)` Parses time hh:mm:ss.sss and time zone if any
    `protected void` | `getTimeZone(java.lang.String buffer, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, int sign, int end)` Parses time zone: 'Z' or {+,-} followed by hh:mm
    `protected javax.xml.datatype.XMLGregorianCalendar` | `getXMLGregorianCalendar(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)`
    `protected int` | `getYearMonth(java.lang.String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)` Parses date CCYY-MM
    `boolean` | `hasTimeZone(java.lang.Object value)`
    `protected int` | `indexOf(java.lang.String buffer, int start, int end, char ch)` Computes index of given char within StringBuffer
    `boolean` | `isIdentical(java.lang.Object value1, java.lang.Object value2)`
    `protected boolean` | `isNextCharUTCSign(java.lang.String buffer, int start, int end)` Returns `true` if the character at start is 'Z', '+' or '-'.
    `protected int` | `maxDayInMonthFor(int year, int month)` Given {year,month} computes maximum number of days for given month
    `protected int` | `mod(int a, int b, int quotient)`
    `protected int` | `modulo(int temp, int low, int high)`
    `protected void` | `normalize(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)` If timezone present - normalize dateTime [E Adding durations to dateTimes]
    `protected int` | `parseInt(java.lang.String buffer, int start, int end)` Given start and end position, parses string value
    `protected int` | `parseIntYear(java.lang.String buffer, int end)`
    `protected double` | `parseSecond(java.lang.String buffer, int start, int end)`
    `protected void` | `parseTimeZone(java.lang.String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)` Shared code from Date and YearMonth datatypes.
    `protected void` | `resetDateObj(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)` Resets object representation of date/time
    `protected void` | `saveUnnormalized(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)`
    `protected void` | `validateDateTime(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, boolean isSchema11Type)` Validates given date/time object accoring to W3C PR Schema [D.1 ISO 8601 Conventions]

    - ### Methods inherited from class org.apache.xerces.impl.dv.xs.TypeValidator

      `checkExtraRules, getActualValue, getDataLength, getDigit, getFractionDigits, getPrecision, getTotalDigits, hasPrecision, isDigit`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### YEAR

          protected static final int YEAR

      See Also:
        Constant Field Values

    - #### MONTH

          protected static final int MONTH

      See Also:
        Constant Field Values

    - #### DAY

          protected static final int DAY

      See Also:
        Constant Field Values

    - #### datatypeFactory

          protected static final javax.xml.datatype.DatatypeFactory datatypeFactory

  - ### Constructor Detail

    - #### AbstractDateTimeDV

          public AbstractDateTimeDV()

  - ### Method Detail

    - #### isIdentical

          public boolean isIdentical(java.lang.Object value1,
                            java.lang.Object value2)

      Overrides:
        `isIdentical` in class `TypeValidator`

    - #### compare

          public int compare(java.lang.Object value1,
                    java.lang.Object value2)

      Overrides:
        `compare` in class `TypeValidator`

    - #### hasTimeZone

          public boolean hasTimeZone(java.lang.Object value)

      Overrides:
        `hasTimeZone` in class `TypeValidator`

    - #### compareDates

          protected short compareDates(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1,
                           org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date2,
                           boolean strict)

      Compare algorithm described in dateDime (3.2.7). Duration datatype overwrites this method
      Parameters:
        `date1` - normalized date representation of the first value
        `date2` - normalized date representation of the second value
        `strict` -
      Returns:
        less, greater, less_equal, greater_equal, equal

    - #### compareOrder

          protected short compareOrder(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1,
                           org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date2)

      Given normalized values, determines order-relation between give date/time objects.
      Parameters:
        `date1` - date/time object
        `date2` - date/time object
      Returns:
        0 if date1 and date2 are equal, a value less than 0 if date1 is less than date2, a value greater than 0 if date1 is greater than date2

    - #### getTime

          protected void getTime(java.lang.String buffer,
                     int start,
                     int end,
                     org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
                          throws java.lang.RuntimeException

      Parses time hh:mm:ss.sss and time zone if any
      Parameters:
        `start` -
        `end` -
        `data` -
      Throws:
        `java.lang.RuntimeException`

    - #### getDate

          protected int getDate(java.lang.String buffer,
                    int start,
                    int end,
                    org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
                         throws java.lang.RuntimeException

      Parses date CCYY-MM-DD
      Parameters:
        `buffer` -
        `start` - start position
        `end` - end position
        `date` -
      Throws:
        `java.lang.RuntimeException`

    - #### getYearMonth

          protected int getYearMonth(java.lang.String buffer,
                         int start,
                         int end,
                         org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
                              throws java.lang.RuntimeException

      Parses date CCYY-MM
      Parameters:
        `buffer` -
        `start` - start position
        `end` - end position
        `date` -
      Throws:
        `java.lang.RuntimeException`

    - #### parseTimeZone

          protected void parseTimeZone(java.lang.String buffer,
                           int start,
                           int end,
                           org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
                                throws java.lang.RuntimeException

      Shared code from Date and YearMonth datatypes. Finds if time zone sign is present
      Parameters:
        `end` -
        `date` -
      Throws:
        `java.lang.RuntimeException`

    - #### getTimeZone

          protected void getTimeZone(java.lang.String buffer,
                         org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data,
                         int sign,
                         int end)
                              throws java.lang.RuntimeException

      Parses time zone: 'Z' or {+,-} followed by hh:mm
      Parameters:
        `data` -
        `sign` -
      Throws:
        `java.lang.RuntimeException`

    - #### indexOf

          protected int indexOf(java.lang.String buffer,
                    int start,
                    int end,
                    char ch)

      Computes index of given char within StringBuffer
      Parameters:
        `start` -
        `end` -
        `ch` - character to look for in StringBuffer
      Returns:
        index of ch within StringBuffer

    - #### validateDateTime

          protected void validateDateTime(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data,
                              boolean isSchema11Type)

      Validates given date/time object accoring to W3C PR Schema [D.1 ISO 8601 Conventions]
      Parameters:
        `data` -

    - #### findUTCSign

          protected int findUTCSign(java.lang.String buffer,
                        int start,
                        int end)

      Return index of UTC char: 'Z', '+', '-'
      Parameters:
        `start` -
        `end` -
      Returns:
        index of the UTC character that was found

    - #### isNextCharUTCSign

          protected final boolean isNextCharUTCSign(java.lang.String buffer,
                                  int start,
                                  int end)

      Returns `true` if the character at start is 'Z', '+' or '-'.

    - #### parseInt

          protected int parseInt(java.lang.String buffer,
                     int start,
                     int end)
                          throws java.lang.NumberFormatException

      Given start and end position, parses string value
      Parameters:
        `buffer` - string to parse
        `start` - start position
        `end` - end position
      Returns:
        return integer representation of characters
      Throws:
        `java.lang.NumberFormatException`

    - #### parseIntYear

          protected int parseIntYear(java.lang.String buffer,
                         int end)

    - #### normalize

          protected void normalize(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)

      If timezone present - normalize dateTime [E Adding durations to dateTimes]
      Parameters:
        `date` - CCYY-MM-DDThh:mm:ss+03

    - #### saveUnnormalized

          protected void saveUnnormalized(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)

      Parameters:
        `date` -

    - #### resetDateObj

          protected void resetDateObj(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)

      Resets object representation of date/time
      Parameters:
        `data` - date/time object

    - #### maxDayInMonthFor

          protected int maxDayInMonthFor(int year,
                             int month)

      Given {year,month} computes maximum number of days for given month
      Parameters:
        `year` -
        `month` -
      Returns:
        integer containg the number of days in a given month

    - #### mod

          protected int mod(int a,
                int b,
                int quotient)

    - #### fQuotient

          protected int fQuotient(int a,
                      int b)

    - #### modulo

          protected int modulo(int temp,
                   int low,
                   int high)

    - #### fQuotient

          protected int fQuotient(int temp,
                      int low,
                      int high)

    - #### dateToString

          protected java.lang.String dateToString(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)

    - #### append

          protected final void append(java.lang.StringBuffer message,
                    int value,
                    int nch)

    - #### append

          protected final void append(java.lang.StringBuffer message,
                    double value)

    - #### append2

          protected final void append2(java.lang.StringBuffer message,
                     double value)

    - #### parseSecond

          protected double parseSecond(java.lang.String buffer,
                           int start,
                           int end)
                                throws java.lang.NumberFormatException

      Throws:
        `java.lang.NumberFormatException`

    - #### getXMLGregorianCalendar

          protected javax.xml.datatype.XMLGregorianCalendar getXMLGregorianCalendar(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)

    - #### getDuration

          protected javax.xml.datatype.Duration getDuration(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)

    - #### getFractionalSecondsAsBigDecimal

          protected final java.math.BigDecimal getFractionalSecondsAsBigDecimal(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)

Copyright © 1999-2022 The Apache Software Foundation. All Rights Reserved.