Class 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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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)  
      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 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
      • 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
        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)