ankitp 2004/11/29 10:21:45 Modified: java/src/org/apache/xerces/impl/dv/xs YearDV.java TimeDV.java DateTimeDV.java DateDV.java MonthDayDV.java AbstractDateTimeDV.java DurationDV.java YearMonthDV.java MonthDV.java Log: fixes for date/time comparisons Revision Changes Path 1.14 +2 -22 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/YearDV.java Index: YearDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/YearDV.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- YearDV.java 25 Nov 2004 22:03:49 -0000 1.13 +++ YearDV.java 29 Nov 2004 18:21:45 -0000 1.14 @@ -82,28 +82,9 @@ if ( date.utc!=0 && date.utc!='Z' ) { normalize(date); } + date.position = 0; return date; } - - /** - * Given normalized values, determines order-relation - * between give date/time objects. - * - * @param date1 date/time object - * @param date2 date/time object - * @return 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 - */ - protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.year < date2.year) - return -1; - if (date1.year > date2.year) - return 1; - if (date1.utc < date2.utc) - return -1; - if (date1.utc > date2.utc) - return 1; - return 0; - } /** * Converts year object representation to String @@ -117,7 +98,6 @@ append(message, (char)date.utc, 0); return message.toString(); } - } 1.15 +22 -30 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/TimeDV.java Index: TimeDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/TimeDV.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- TimeDV.java 25 Nov 2004 22:03:49 -0000 1.14 +++ TimeDV.java 29 Nov 2004 18:21:45 -0000 1.15 @@ -62,7 +62,7 @@ // initialize to default values date.year=YEAR; date.month=MONTH; - date.day=DAY; + date.day=15; getTime(str, 0, len, date); //validate and normalize @@ -72,36 +72,9 @@ if ( date.utc!=0 ) { normalize(date); } + date.position = 2; return date; } - - /** - * Given normalized values, determines order-relation - * between give date/time objects. - * - * @param date1 date/time object - * @param date2 date/time object - * @return 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 - */ - protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.hour < date2.hour) - return -1; - if (date1.hour > date2.hour) - return 1; - if (date1.minute < date2.minute) - return -1; - if (date1.minute > date2.minute) - return 1; - if (date1.second < date2.second) - return -1; - if (date1.second > date2.second) - return 1; - if (date1.utc < date2.utc) - return -1; - if (date1.utc > date2.utc) - return 1; - return 0; - } /** * Converts time object representation to String @@ -120,5 +93,24 @@ append(message, (char)date.utc, 0); return message.toString(); } + + /* (non-Javadoc) + * @see org.apache.xerces.impl.dv.xs.AbstractDateTimeDV#compareOrder2(org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData, org.apache.xerces.impl.dv.xs.AbstractDateTimeDV.DateTimeData) + */ + protected short compareOrder2(DateTimeData date1, DateTimeData date2) { + if (date1.hour < date2.hour) + return -1; + if (date1.hour > date2.hour) + return 1; + if (date1.minute < date2.minute) + return -1; + if (date1.minute > date2.minute) + return 1; + if (date1.second < date2.second) + return -1; + if (date1.second > date2.second) + return 1; + return 0; + } } 1.13 +1 -2 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java Index: DateTimeDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- DateTimeDV.java 6 Oct 2004 14:56:47 -0000 1.12 +++ DateTimeDV.java 29 Nov 2004 18:21:45 -0000 1.13 @@ -74,5 +74,4 @@ } return date; } - } 1.16 +1 -27 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DateDV.java Index: DateDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DateDV.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- DateDV.java 25 Nov 2004 22:03:49 -0000 1.15 +++ DateDV.java 29 Nov 2004 18:21:45 -0000 1.16 @@ -62,32 +62,6 @@ } return date; } - - /** - * Given normalized values, determines order-relation - * between give date/time objects. - * - * @param date1 date/time object - * @param date2 date/time object - * @return 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 - */ - protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.year < date2.year) - return -1; - if (date1.year > date2.year) - return 1; - if (date1.month < date2.month) - return -1; - if (date1.month > date2.month) - return 1; - if (date1.day < date2.day) - return -1; - if (date1.day > date2.day) - return 1; - if (date1.utc > date2.utc) - return 1; - return 0; - } protected String dateToString(DateTimeData date) { StringBuffer message = new StringBuffer(25); 1.14 +2 -26 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java Index: MonthDayDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- MonthDayDV.java 25 Nov 2004 22:03:49 -0000 1.13 +++ MonthDayDV.java 29 Nov 2004 18:21:45 -0000 1.14 @@ -92,32 +92,9 @@ if ( date.utc!=0 && date.utc!='Z' ) { normalize(date); } + date.position = 1; return date; } - - /** - * Given normalized values, determines order-relation - * between give date/time objects. - * - * @param date1 date/time object - * @param date2 date/time object - * @return 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 - */ - protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.month < date2.month) - return -1; - if (date1.month > date2.month) - return 1; - if (date1.day < date2.day) - return -1; - if (date1.day > date2.day) - return 1; - if (date1.utc < date2.utc) - return -1; - if (date1.utc > date2.utc) - return 1; - return 0; - } /** * Converts gMonthDay object representation to String @@ -135,6 +112,5 @@ append(message, (char)date.utc, 0); return message.toString(); } - } 1.23 +23 -11 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java Index: AbstractDateTimeDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- AbstractDateTimeDV.java 17 Nov 2004 20:19:36 -0000 1.22 +++ AbstractDateTimeDV.java 29 Nov 2004 18:21:45 -0000 1.23 @@ -50,7 +50,7 @@ //all date/time excluding duration protected final static int YEAR=2000; protected final static int MONTH=01; - protected final static int DAY = 15; + protected final static int DAY = 01; public short getAllowedFacets(){ return ( XSSimpleTypeDecl.FACET_PATTERN | XSSimpleTypeDecl.FACET_WHITESPACE | XSSimpleTypeDecl.FACET_ENUMERATION |XSSimpleTypeDecl.FACET_MAXINCLUSIVE |XSSimpleTypeDecl.FACET_MININCLUSIVE | XSSimpleTypeDecl.FACET_MAXEXCLUSIVE | XSSimpleTypeDecl.FACET_MINEXCLUSIVE ); @@ -94,7 +94,7 @@ */ protected short compareDates(DateTimeData date1, DateTimeData date2, boolean strict) { if (date1.utc == date2.utc) { - return compareOrder(date1, date2); + return compareOrder2(date1, date2); } short c1, c2; @@ -165,6 +165,10 @@ return INDETERMINATE; } + + protected short compareOrder2(DateTimeData date1, DateTimeData date2) { + return compareOrder(date1, date2); + } /** * Given normalized values, determines order-relation @@ -175,14 +179,18 @@ * @return 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 */ protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.year < date2.year) - return -1; - if (date1.year > date2.year) - return 1; - if (date1.month < date2.month) - return -1; - if (date1.month > date2.month) - return 1; + if(date1.position < 1) { + if (date1.year < date2.year) + return -1; + if (date1.year > date2.year) + return 1; + } + if(date1.position < 2) { + if (date1.month < date2.month) + return -1; + if (date1.month > date2.month) + return 1; + } if (date1.day < date2.day) return -1; if (date1.day > date2.day) @@ -788,6 +796,10 @@ int year, month, day, hour, minute, utc; double second; int timezoneHr, timezoneMin; + + // used for comparisons - to decide the 'interesting' portions of + // a date/time based data type. + int position; // a pointer to the type that was used go generate this data // note that this is not the actual simple type, but one of the // statically created XXXDV objects, so this won't cause any GC problem. 1.15 +1 -2 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DurationDV.java Index: DurationDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DurationDV.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- DurationDV.java 25 Nov 2004 19:24:06 -0000 1.14 +++ DurationDV.java 29 Nov 2004 18:21:45 -0000 1.15 @@ -202,7 +202,6 @@ //add constA to both durations short resultA, resultB= INDETERMINATE; - //try and see if the objects are equal resultA = compareOrder (date1, date2); if ( resultA == 0 ) { 1.14 +2 -26 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java Index: YearMonthDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- YearMonthDV.java 25 Nov 2004 22:03:49 -0000 1.13 +++ YearMonthDV.java 29 Nov 2004 18:21:45 -0000 1.14 @@ -69,32 +69,9 @@ if ( date.utc!=0 && date.utc!='Z' ) { normalize(date); } + date.position = 0; return date; } - - /** - * Given normalized values, determines order-relation - * between give date/time objects. - * - * @param date1 date/time object - * @param date2 date/time object - * @return 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 - */ - protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.year < date2.year) - return -1; - if (date1.year > date2.year) - return 1; - if (date1.month < date2.month) - return -1; - if (date1.month > date2.month) - return 1; - if (date1.utc < date2.utc) - return -1; - if (date1.utc > date2.utc) - return 1; - return 0; - } protected String dateToString(DateTimeData date) { StringBuffer message = new StringBuffer(25); @@ -104,7 +81,6 @@ append(message, (char)date.utc, 0); return message.toString(); } - } 1.16 +2 -22 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/MonthDV.java Index: MonthDV.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/MonthDV.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- MonthDV.java 25 Nov 2004 22:03:49 -0000 1.15 +++ MonthDV.java 29 Nov 2004 18:21:45 -0000 1.16 @@ -89,28 +89,9 @@ if ( date.utc!=0 && date.utc!='Z' ) { normalize(date); } + date.position = 1; return date; } - - /** - * Given normalized values, determines order-relation - * between give date/time objects. - * - * @param date1 date/time object - * @param date2 date/time object - * @return 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 - */ - protected short compareOrder(DateTimeData date1, DateTimeData date2) { - if (date1.month < date2.month) - return -1; - if (date1.month > date2.month) - return 1; - if (date1.utc < date2.utc) - return -1; - if (date1.utc > date2.utc) - return 1; - return 0; - } /** * Overwrite compare algorithm to optimize month comparison @@ -168,5 +149,4 @@ append(message, (char)date.utc, 0); return message.toString(); } - }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]