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
    Version:
    $Id$
    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​(StringBuffer message, double value)  
      protected void append​(StringBuffer message, int value, int nch)  
      protected void append2​(StringBuffer message, double value)  
      int compare​(Object value1, Object value2)  
      protected short compareDates​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1, org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date2, boolean strict)
      Compare algorithm described in dateDime (3.2.7).
      protected short compareOrder​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1, org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date2)
      Given normalized values, determines order-relation between give date/time objects.
      protected String dateToString​(org.smooks.engine.delivery.sax.ng.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 getAllowedFacets()  
      protected int getDate​(String buffer, int start, int end, org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
      Parses date CCYY-MM-DD
      protected Duration getDuration​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)  
      protected BigDecimal getFractionalSecondsAsBigDecimal​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)  
      protected void getTime​(String buffer, int start, int end, org.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, int sign, int end)
      Parses time zone: 'Z' or {+,-} followed by hh:mm
      protected XMLGregorianCalendar getXMLGregorianCalendar​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)  
      protected int getYearMonth​(String buffer, int start, int end, org.smooks.engine.delivery.sax.ng.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 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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
      Shared code from Date and YearMonth datatypes.
      protected void resetDateObj​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
      Resets object representation of date/time
      protected void saveUnnormalized​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)  
      protected void validateDateTime​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
      Validates given date/time object accoring to W3C PR Schema [D.1 ISO 8601 Conventions]
    • Constructor Detail

      • AbstractDateTimeDV

        public AbstractDateTimeDV()
    • Method Detail

      • compareDates

        protected short compareDates​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1,
                                     org.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date1,
                                     org.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date)
        Parameters:
        date -
      • resetDateObj

        protected void resetDateObj​(org.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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)
      • getXMLGregorianCalendar

        protected XMLGregorianCalendar getXMLGregorianCalendar​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
      • getDuration

        protected Duration getDuration​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
      • getFractionalSecondsAsBigDecimal

        protected final BigDecimal getFractionalSecondsAsBigDecimal​(org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)