Package 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
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.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final DatatypeFactory
protected static final int
protected static final int
protected static final int
Fields inherited from class org.apache.xerces.impl.dv.xs.TypeValidator
EQUAL, GREATER_THAN, INDETERMINATE, LESS_THAN
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected final void
append
(StringBuffer message, double value) protected final void
append
(StringBuffer message, int value, int nch) protected final void
append2
(StringBuffer message, double value) int
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 String
dateToString
(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
protected int
getDate
(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) Parses date CCYY-MM-DDprotected Duration
getDuration
(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) protected final BigDecimal
getFractionalSecondsAsBigDecimal
(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) protected void
getTime
(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 anyprotected void
getTimeZone
(String buffer, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, int sign, int end) Parses time zone: 'Z' or {+,-} followed by hh:mmprotected XMLGregorianCalendar
getXMLGregorianCalendar
(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) protected int
getYearMonth
(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) Parses date CCYY-MMprotected int
Computes index of given char within StringBufferboolean
isIdentical
(Object value1, Object value2) protected final boolean
isNextCharUTCSign
(String buffer, int start, int end) Returnstrue
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 monthprotected 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
Given start and end position, parses string valueprotected 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.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/timeprotected 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 org.apache.xerces.impl.dv.xs.TypeValidator
checkExtraRules, getActualValue, getDataLength, getDigit, getFractionDigits, getTotalDigits, isDigit
-
Field Details
-
YEAR
protected static final int YEAR- See Also:
-
MONTH
protected static final int MONTH- See Also:
-
DAY
protected static final int DAY- See Also:
-
datatypeFactory
-
-
Constructor Details
-
AbstractDateTimeDV
public AbstractDateTimeDV()
-
-
Method Details
-
getAllowedFacets
public short getAllowedFacets()- Specified by:
getAllowedFacets
in classTypeValidator
-
isIdentical
- Overrides:
isIdentical
in classTypeValidator
-
compare
- Overrides:
compare
in classTypeValidator
-
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 valuedate2
- normalized date representation of the second valuestrict
-- 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 objectdate2
- 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.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.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) throws RuntimeException Parses date CCYY-MM-DD- Parameters:
buffer
-start
- start positionend
- end positiondate
-- Throws:
RuntimeException
-
getYearMonth
protected int getYearMonth(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) throws RuntimeException Parses date CCYY-MM- Parameters:
buffer
-start
- start positionend
- end positiondate
-- Throws:
RuntimeException
-
parseTimeZone
protected void parseTimeZone(String buffer, int start, int end, 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.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
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
Return index of UTC char: 'Z', '+', '-'- Parameters:
start
-end
-- Returns:
- index of the UTC character that was found
-
isNextCharUTCSign
Returnstrue
if the character at start is 'Z', '+' or '-'. -
parseInt
Given start and end position, parses string value- Parameters:
buffer
- string to parsestart
- start positionend
- end position- Returns:
- return integer representation of characters
- Throws:
NumberFormatException
-
parseIntYear
-
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
-
append
-
append
-
append2
-
parseSecond
- Throws:
NumberFormatException
-
getXMLGregorianCalendar
protected XMLGregorianCalendar getXMLGregorianCalendar(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) -
getDuration
-
getFractionalSecondsAsBigDecimal
protected final BigDecimal getFractionalSecondsAsBigDecimal(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data)
-