org.apache.xerces.impl.dv.xs

Class AbstractDateTimeDV

Known Direct 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 $

Authors:
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
M
protected static int
MONTH
protected static int
TOTAL_SIZE
protected static int
YEAR
protected static int
h
protected static int
hh
protected static int
m
protected static int
mm
protected static int
ms
protected static int
s
protected static int
utc

Fields inherited from class org.apache.xerces.impl.dv.xs.TypeValidator

EQUAL, GREATER_THAN, INDETERMINATE, LESS_THAN

Method Summary

protected void
append(StringBuffer message, int value, int nch)
int
compare(Object value1, 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 String
dateToString(int[] date)
protected int
fQuotient(int a, int b)
protected int
fQuotient(int temp, int low, int high)
protected int
findUTCSign(String buffer, int start, int end)
Return index of UTC char: 'Z', '+', '-'
short
getAllowedFacets()
protected int
getDate(String buffer, int start, int end, int[] date)
Parses date CCYY-MM-DD
protected void
getTime(String buffer, int start, int end, int[] data, int[] timeZone)
Parses time hh:mm:ss.sss and time zone if any
protected void
getTimeZone(String buffer, int[] data, int sign, int end, int[] timeZone)
Parses time zone: 'Z' or {+,-} followed by hh:mm
protected int
getYearMonth(String buffer, int start, int end, int[] date)
Parses date CCYY-MM
protected int
indexOf(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(String buffer, int start, int end)
Given start and end position, parses string value
protected int
parseIntYear(String buffer, int end)
protected void
parseTimeZone(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, compare, getActualValue, getAllowedFacets, getDataLength, getDigit, getFractionDigits, getTotalDigits, isDigit

Field Details

CY

protected static final int CY

Field Value:
0


D

protected static final int D

Field Value:
2


DAY

protected static final int DAY

Field Value:
15


M

protected static final int M

Field Value:
1


MONTH

protected static final int MONTH

Field Value:
1


TOTAL_SIZE

protected static final int TOTAL_SIZE

Field Value:
8


YEAR

protected static final int YEAR

Field Value:
2000


h

protected static final int h

Field Value:
3


hh

protected static final int hh

Field Value:
0


m

protected static final int m

Field Value:
4


mm

protected static final int mm

Field Value:
1


ms

protected static final int ms

Field Value:
6


s

protected static final int s

Field Value:
5


utc

protected static final int utc

Field Value:
7

Method Details

append

protected void append(StringBuffer message,
                      int value,
                      int nch)


compare

public int compare(Object value1,
                   Object value2)
Overrides:
compare in interface 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


dateToString

protected String dateToString(int[] date)


fQuotient

protected int fQuotient(int a,
                        int b)


fQuotient

protected int fQuotient(int temp,
                        int low,
                        int high)


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


getAllowedFacets

public short getAllowedFacets()
Overrides:
getAllowedFacets in interface TypeValidator


getDate

protected int getDate(String buffer,
                      int start,
                      int end,
                      int[] date)
            throws RuntimeException
Parses date CCYY-MM-DD

Parameters:
start -
end -


getTime

protected void getTime(String buffer,
                       int start,
                       int end,
                       int[] data,
                       int[] timeZone)
            throws RuntimeException
Parses time hh:mm:ss.sss and time zone if any

Parameters:
start -
end -
data -


getTimeZone

protected void getTimeZone(String buffer,
                           int[] data,
                           int sign,
                           int end,
                           int[] timeZone)
            throws RuntimeException
Parses time zone: 'Z' or {+,-} followed by hh:mm

Parameters:
data -
sign -


getYearMonth

protected int getYearMonth(String buffer,
                           int start,
                           int end,
                           int[] date)
            throws RuntimeException
Parses date CCYY-MM

Parameters:
start -
end -


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


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)


modulo

protected int modulo(int temp,
                     int low,
                     int high)


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


parseInt

protected int parseInt(String buffer,
                       int start,
                       int end)
            throws NumberFormatException
Given start and end position, parses string value

Parameters:
start - Start position
end - end position

Returns:
return integer representation of characters


parseIntYear

protected int parseIntYear(String buffer,
                           int end)


parseTimeZone

protected void parseTimeZone(String buffer,
                             int start,
                             int end,
                             int[] date,
                             int[] timeZone)
            throws RuntimeException
Shared code from Date and YearMonth datatypes. Finds if time zone sign is present

Parameters:
end -
date -


resetDateObj

protected void resetDateObj(int[] data)
Resets object representation of date/time

Parameters:
data - date/time object


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 -


Copyright B) 1999-2004 Apache XML Project. All Rights Reserved.