## 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

# 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
`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
`AbstractDateTimeDV()`

Method Summary
`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)`
`short` `getAllowedFacets()`
`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
`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)` 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 Detail

### YEAR

    protected static final int YEAR

### MONTH

    protected static final int MONTH

### DAY

    protected static final int DAY

### datatypeFactory

    protected static final javax.xml.datatype.DatatypeFactory datatypeFactory

Constructor Detail

### AbstractDateTimeDV

    public AbstractDateTimeDV()

Method Detail

### getAllowedFacets

    public short getAllowedFacets()

  Overrides:
    `getAllowedFacets` in class `TypeValidator`

### 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`

### 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)

  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

### 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

### 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-2010 The Apache Software Foundation. All Rights Reserved.