sandygao    2003/04/02 06:12:00

  Modified:    java/src/org/apache/xerces/impl/dv/xs
                        AbstractDateTimeDV.java
  Log:
  Fixing a bug in dateTime comparison algorithem.
  Sometimes 2 values aren't comparable if one has time zone and
  the other one doesn't.
  
  Revision  Changes    Path
  1.11      +14 -15    
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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractDateTimeDV.java   17 Mar 2003 15:51:15 -0000      1.10
  +++ AbstractDateTimeDV.java   2 Apr 2003 14:12:00 -0000       1.11
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -133,6 +133,8 @@
               tempDate[utc]='+';
               normalize(tempDate, timeZone);
               c1 = compareOrder(date1, tempDate);
  +            if (c1 == LESS_THAN)
  +                return c1;
   
               //compare date1>=(date2 with time zone +14)
               //
  @@ -142,13 +144,10 @@
               tempDate[utc]='-';
               normalize(tempDate, timeZone);
               c2 = compareOrder(date1, tempDate);
  +            if (c2 == GREATER_THAN)
  +                return c2;
   
  -            if ( (c1 < 0 && c2 > 0) ||
  -                 (c1 == 0 && c2 == 0) ) {
  -                return INDETERMINATE;
  -            }
  -            //REVISIT: wait for clarification on this case from schema
  -            return(c1!=INDETERMINATE)?c1:c2;
  +            return INDETERMINATE;
           }
           else if ( date2[utc]=='Z' ) {
   
  @@ -157,7 +156,6 @@
               cloneDate(date1, tempDate); //clones date1 value to global temporary 
storage: tempDate
               timeZone[hh]=14;
               timeZone[mm]=0;
  -
               tempDate[utc]='-';
               if (DEBUG) {
                  System.out.println("tempDate=" + dateToString(tempDate));
  @@ -168,6 +166,9 @@
                   System.out.println("date=" + dateToString(date2));
                   System.out.println("tempDate=" + dateToString(tempDate));
               }
  +            if (c1 == LESS_THAN)
  +                return c1;
  +
               //compare (date1 with time zone +14)<=date2
               //
               cloneDate(date1, tempDate); //clones date1 value to global temporary 
storage: tempDate
  @@ -179,12 +180,10 @@
               if (DEBUG) {
                  System.out.println("tempDate=" + dateToString(tempDate));
               }
  -            if ( (c1 < 0 && c2 > 0) ||
  -                 (c1 == 0 && c2 == 0) ) {
  -                return INDETERMINATE;
  -            }
  -            //REVISIT: wait for clarification on this case from schema
  -            return(c1!=INDETERMINATE)?c1:c2;
  +            if (c2 == GREATER_THAN)
  +                return c2;
  +
  +            return INDETERMINATE;
           }
           return INDETERMINATE;
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to