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

INTERNAL:

Usage of this class is not supported. It may be altered or removed at any time.
Version:
$Id: AbstractDateTimeDV.java 965250 2010-07-18 16:04:58Z mrglavas $
Author:
Elena Litani, Len Berman, Gopal Sharma, SUN Microsystems Inc.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final DatatypeFactory
     
    protected static final int
     
    protected static final int
     
    protected static final int
     

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

    EQUAL, GREATER_THAN, INDETERMINATE, LESS_THAN
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final void
    append(StringBuffer message, double value)
     
    protected final void
    append(StringBuffer message, int value, int nch)
     
    protected final void
    append2(StringBuffer message, double value)
     
    int
    compare(Object value1, 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 String
    dateToString(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
     
    protected int
    findUTCSign(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)
     
    short
     
    protected int
    getDate(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
    Parses date CCYY-MM-DD
    protected Duration
    getDuration(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
     
    protected final BigDecimal
    getFractionalSecondsAsBigDecimal(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
     
    protected void
    getTime(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(String buffer, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, int sign, int end)
    Parses time zone: 'Z' or {+,-} followed by hh:mm
    getXMLGregorianCalendar(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
     
    protected int
    getYearMonth(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
    Parses date CCYY-MM
    protected int
    indexOf(String buffer, int start, int end, char ch)
    Computes index of given char within StringBuffer
    boolean
    isIdentical(Object value1, Object value2)
     
    protected final boolean
    isNextCharUTCSign(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(String buffer, int start, int end)
    Given start and end position, parses string value
    protected int
    parseIntYear(String buffer, int end)
     
    protected double
    parseSecond(String buffer, int start, int end)
     
    protected void
    parseTimeZone(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)
    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, getTotalDigits, isDigit

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • AbstractDateTimeDV

      public AbstractDateTimeDV()
  • Method Details

    • getAllowedFacets

      public short getAllowedFacets()
      Specified by:
      getAllowedFacets in class TypeValidator
    • isIdentical

      public boolean isIdentical(Object value1, Object value2)
      Overrides:
      isIdentical in class TypeValidator
    • compare

      public int compare(Object value1, Object value2)
      Overrides:
      compare 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(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) throws RuntimeException
      Parses time hh:mm:ss.sss and time zone if any
      Parameters:
      start -
      end -
      data -
      Throws:
      RuntimeException
    • getDate

      protected int getDate(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) throws RuntimeException
      Parses date CCYY-MM-DD
      Parameters:
      buffer -
      start - start position
      end - end position
      date -
      Throws:
      RuntimeException
    • getYearMonth

      protected int getYearMonth(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) throws RuntimeException
      Parses date CCYY-MM
      Parameters:
      buffer -
      start - start position
      end - end position
      date -
      Throws:
      RuntimeException
    • parseTimeZone

      protected void parseTimeZone(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) throws RuntimeException
      Shared code from Date and YearMonth datatypes. Finds if time zone sign is present
      Parameters:
      end -
      date -
      Throws:
      RuntimeException
    • getTimeZone

      protected void getTimeZone(String buffer, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, int sign, int end) throws RuntimeException
      Parses time zone: 'Z' or {+,-} followed by hh:mm
      Parameters:
      data -
      sign -
      Throws:
      RuntimeException
    • indexOf

      protected int indexOf(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)
      Validates given date/time object accoring to W3C PR Schema [D.1 ISO 8601 Conventions]
      Parameters:
      data -
    • findUTCSign

      protected int findUTCSign(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(String buffer, int start, int end)
      Returns true if the character at start is 'Z', '+' or '-'.
    • parseInt

      protected int parseInt(String buffer, int start, int end) throws 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:
      NumberFormatException
    • parseIntYear

      protected int parseIntYear(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 String dateToString(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
    • append

      protected final void append(StringBuffer message, int value, int nch)
    • append

      protected final void append(StringBuffer message, double value)
    • append2

      protected final void append2(StringBuffer message, double value)
    • parseSecond

      protected double parseSecond(String buffer, int start, int end) throws NumberFormatException
      Throws:
      NumberFormatException
    • getXMLGregorianCalendar

      protected XMLGregorianCalendar getXMLGregorianCalendar(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
    • getDuration

      protected Duration getDuration(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
    • getFractionalSecondsAsBigDecimal

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