## 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,v 1.12 2003/06/16 18:15:51 sandygao Exp $
Author:
  Elena Litani, Len Berman, Gopal Sharma, SUN Microsystems Inc.

Field Summary
`protected static int` `CY`
`protected static int` `D`
`protected static int` `DAY`
`protected static int` `h`
`protected static int` `hh`
`protected static int` `m`
`protected static int` `M`
`protected static int` `mm`
`protected static int` `MONTH`
`protected static int` `ms`
`protected static int` `s`
`protected static int` `TOTAL_SIZE`
`protected static int` `utc`
`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, int value, int nch)`
`int` `compare(java.lang.Object value1, java.lang.Object value2)`
`protected short` `compareDates(int[] date1, int[] date2, boolean strict)` Compare algorithm described in dateDime (3.2.7).
`protected short` `compareOrder(int[] date1, int[] date2)` Given normalized values, determines order-relation between give date/time objects.
`protected java.lang.String` `dateToString(int[] 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, int[] date)` Parses date CCYY-MM-DD
`protected void` `getTime(java.lang.String buffer, int start, int end, int[] data, int[] timeZone)` Parses time hh:mm:ss.sss and time zone if any
`protected void` `getTimeZone(java.lang.String buffer, int[] data, int sign, int end, int[] timeZone)` Parses time zone: 'Z' or {+,-} followed by hh:mm
`protected int` `getYearMonth(java.lang.String buffer, int start, int end, int[] 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
`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(int[] date, int[] timeZone)` 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 void` `parseTimeZone(java.lang.String buffer, int start, int end, int[] date, int[] timeZone)` Shared code from Date and YearMonth datatypes.
`protected void` `resetDateObj(int[] data)` Resets object representation of date/time
`protected void` `validateDateTime(int[] data, int[] timeZone)` 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

### CY

    protected static final int CY

See Also:
  Constant Field Values

### M

    protected static final int M

See Also:
  Constant Field Values

### D

    protected static final int D

See Also:
  Constant Field Values

### h

    protected static final int h

See Also:
  Constant Field Values

### m

    protected static final int m

See Also:
  Constant Field Values

### s

    protected static final int s

See Also:
  Constant Field Values

### ms

    protected static final int ms

See Also:
  Constant Field Values

### utc

    protected static final int utc

See Also:
  Constant Field Values

### hh

    protected static final int hh

See Also:
  Constant Field Values

### mm

    protected static final int mm

See Also:
  Constant Field Values

### TOTAL_SIZE

    protected static final int TOTAL_SIZE

See Also:
  Constant Field Values

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

Constructor Detail

### AbstractDateTimeDV

    public AbstractDateTimeDV()

Method Detail

### getAllowedFacets

    public short getAllowedFacets()

  Specified by:
    `getAllowedFacets` in class `TypeValidator`

### compare

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

  Overrides:
    `compare` in class `TypeValidator`

### compareDates

    protected short compareDates(int[] date1,
                                 int[] 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(int[] date1,
                                 int[] 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,
                           int[] data,
                           int[] timeZone)
                    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,
                          int[] date)
                   throws java.lang.RuntimeException

  Parses date CCYY-MM-DD

  Parameters:
    `start` -
    `end` -
  Throws:
    `java.lang.RuntimeException`

### getYearMonth

    protected int getYearMonth(java.lang.String buffer,
                               int start,
                               int end,
                               int[] date)
                        throws java.lang.RuntimeException

  Parses date CCYY-MM

  Parameters:
    `start` -
    `end` -
  Throws:
    `java.lang.RuntimeException`

### parseTimeZone

    protected void parseTimeZone(java.lang.String buffer,
                                 int start,
                                 int end,
                                 int[] date,
                                 int[] timeZone)
                          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,
                               int[] data,
                               int sign,
                               int end,
                               int[] timeZone)
                        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(int[] data,
                                    int[] timeZone)

  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

### 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:
    `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(int[] date,
                             int[] timeZone)

  If timezone present - normalize dateTime [E Adding durations to dateTimes]

  Parameters:
    `date` - CCYY-MM-DDThh:mm:ss+03
  Returns:
    CCYY-MM-DDThh:mm:ssZ

### resetDateObj

    protected void resetDateObj(int[] 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(int[] date)

### append

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

Copyright © 1999-2004 Apache XML Project. All Rights Reserved.