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.3 2002/01/29 01:15:12 lehors 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  java.lang.StringBuffer fBuffer
           
protected  int[] fDateValue
           
protected  int fEnd
           
protected  int fEnumSize
           
protected  int fStart
           
protected static int h
           
protected static int hh
           
protected static int m
           
protected static int M
           
protected  java.lang.StringBuffer message
           
protected static int mm
           
protected static int MONTH
           
protected static int MONTH_SIZE
           
protected static int ms
           
protected static int s
           
protected  int[] timeZone
           
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
 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(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  void getDate(int start, int end, int[] date)
          Parses date CCYY-MM-DD
protected  void getTime(int start, int end, int[] data)
          Parses time hh:mm:ss.sss and time zone if any
protected  void getTimeZone(int[] data, int sign)
          Parses time zone: 'Z' or {+,-} followed by hh:mm
protected  void getYearMonth(int start, int end, int[] date)
          Parses date CCYY-MM
protected  int indexOf(int start, int end, char ch)
          Computes index of given char within StringBuffer
protected  void initializeValues()
           
 boolean isEqual(java.lang.Object value1, java.lang.Object value2)
           
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)
          If timezone present - normalize dateTime [E Adding durations to dateTimes]
protected abstract  int[] parse(java.lang.String content, int[] date)
          Implemented by each subtype, calling appropriate function to parse given date/time
protected  int parseInt(int start, int end)
          Given start and end position, parses string value
protected  int parseIntYear(int end)
           
protected  void parseTimeZone(int end, int[] date)
          Shared code from Date and YearMonth datatypes.
protected  void reportError(java.lang.String msg, java.lang.String value)
          Use this function to report errors in constructor
protected  void resetBuffer(java.lang.String str)
          Resets fBuffer to store string representation of date/time
protected  void resetDateObj(int[] data)
          Resets object representation of date/time
protected  void validateDateTime(int[] 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, getFractionDigits, getTotalDigits
 
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

M

protected static final int M

D

protected static final int D

h

protected static final int h

m

protected static final int m

s

protected static final int s

ms

protected static final int ms

utc

protected static final int utc

hh

protected static final int hh

mm

protected static final int mm

TOTAL_SIZE

protected static final int TOTAL_SIZE

MONTH_SIZE

protected static final int MONTH_SIZE

YEAR

protected static final int YEAR

MONTH

protected static final int MONTH

DAY

protected static final int DAY

timeZone

protected int[] timeZone

fEnumSize

protected int fEnumSize

fEnd

protected int fEnd

fStart

protected int fStart

fBuffer

protected java.lang.StringBuffer fBuffer

fDateValue

protected int[] fDateValue

message

protected java.lang.StringBuffer message
Constructor Detail

AbstractDateTimeDV

public AbstractDateTimeDV()
Method Detail

initializeValues

protected void initializeValues()

getAllowedFacets

public short getAllowedFacets()
Overrides:
getAllowedFacets in class TypeValidator

isEqual

public boolean isEqual(java.lang.Object value1,
                       java.lang.Object value2)
Overrides:
isEqual in class TypeValidator

compare

public int compare(java.lang.Object value1,
                   java.lang.Object value2)
Overrides:
compare in class TypeValidator

parse

protected abstract int[] parse(java.lang.String content,
                               int[] date)
                        throws SchemaDateTimeException
Implemented by each subtype, calling appropriate function to parse given date/time
Parameters:
content - String value of the date/time
date - Storage to represent date/time object. If null - new object will be created, otherwise date will be reset and reused
Returns:
updated date/time object
Throws:
SchemaDateTimeException -  

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(int start,
                       int end,
                       int[] 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 void getDate(int start,
                       int end,
                       int[] date)
                throws java.lang.RuntimeException
Parses date CCYY-MM-DD
Parameters:
start -  
end -  
data -  
Throws:
java.lang.RuntimeException -  

getYearMonth

protected void getYearMonth(int start,
                            int end,
                            int[] date)
                     throws java.lang.RuntimeException
Parses date CCYY-MM
Parameters:
start -  
end -  
data -  
Throws:
java.lang.RuntimeException -  

parseTimeZone

protected void parseTimeZone(int end,
                             int[] 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(int[] data,
                           int sign)
                    throws java.lang.RuntimeException
Parses time zone: 'Z' or {+,-} followed by hh:mm
Parameters:
data -  
sign -  
Throws:
java.lang.RuntimeException -  

indexOf

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

findUTCSign

protected int findUTCSign(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(int start,
                       int end)
                throws java.lang.NumberFormatException
Given start and end position, parses string value
Parameters:
value - string to parse
start - Start position
end - end position
Returns:
return integer representation of characters

parseIntYear

protected int parseIntYear(int end)

normalize

protected void normalize(int[] date)
If timezone present - normalize dateTime [E Adding durations to dateTimes]
Parameters:
date - CCYY-MM-DDThh:mm:ss+03
Returns:
CCYY-MM-DDThh:mm:ssZ

resetBuffer

protected void resetBuffer(java.lang.String str)
Resets fBuffer to store string representation of date/time
Parameters:
str - Lexical representation of date/time

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)

reportError

protected void reportError(java.lang.String msg,
                           java.lang.String value)
Use this function to report errors in constructor
Parameters:
msg -  
value -  


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