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 DatatypeFactoryprotected static final intprotected static final intprotected static final intFields 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 voidappend(StringBuffer message, double value) protected final voidappend(StringBuffer message, int value, int nch) protected final voidappend2(StringBuffer message, double value) intprotected shortcompareDates(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 shortcompareOrder(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 StringdateToString(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) protected intfindUTCSign(String buffer, int start, int end) Return index of UTC char: 'Z', '+', '-'protected intfQuotient(int a, int b) protected intfQuotient(int temp, int low, int high) shortprotected intgetDate(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) Parses date CCYY-MM-DDprotected DurationgetDuration(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) protected final BigDecimalgetFractionalSecondsAsBigDecimal(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) protected voidgetTime(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 voidgetTimeZone(String buffer, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data, int sign, int end) Parses time zone: 'Z' or {+,-} followed by hh:mmprotected XMLGregorianCalendargetXMLGregorianCalendar(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) protected intgetYearMonth(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) Parses date CCYY-MMprotected intComputes index of given char within StringBufferbooleanisIdentical(Object value1, Object value2) protected final booleanisNextCharUTCSign(String buffer, int start, int end) Returnstrueif the character at start is 'Z', '+' or '-'.protected intmaxDayInMonthFor(int year, int month) Given {year,month} computes maximum number of days for given monthprotected intmod(int a, int b, int quotient) protected intmodulo(int temp, int low, int high) protected voidnormalize(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) If timezone present - normalize dateTime [E Adding durations to dateTimes]protected intGiven start and end position, parses string valueprotected intparseIntYear(String buffer, int end) protected doubleparseSecond(String buffer, int start, int end) protected voidparseTimeZone(String buffer, int start, int end, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) Shared code from Date and YearMonth datatypes.protected voidresetDateObj(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData data) Resets object representation of date/timeprotected voidsaveUnnormalized(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData date) protected voidvalidateDateTime(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:
getAllowedFacetsin classTypeValidator
-
isIdentical
- Overrides:
isIdenticalin classTypeValidator
-
compare
- Overrides:
comparein 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
Returnstrueif 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)
-