You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by an...@apache.org on 2005/02/22 20:32:30 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl/dv/xs AbstractDateTimeDV.java DurationDV.java

ankitp      2005/02/22 11:32:30

  Modified:    java/src/org/apache/xerces/xs/datatypes ByteList.java
                        XSDateTime.java ObjectList.java
               java/src/org/apache/xerces/impl/dv/xs
                        AbstractDateTimeDV.java DurationDV.java
  Log:
  fixes to interfaces
  
  Revision  Changes    Path
  1.6       +2 -2      xml-xerces/java/src/org/apache/xerces/xs/datatypes/ByteList.java
  
  Index: ByteList.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xs/datatypes/ByteList.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ByteList.java	11 Feb 2005 21:31:51 -0000	1.5
  +++ ByteList.java	22 Feb 2005 19:32:30 -0000	1.6
  @@ -47,7 +47,7 @@
       public boolean contains(byte item);
       
       /**
  -     * Returns the <code>index</code>of the item in the collection. The index 
  +     * Returns the <code>index</code>th item in the collection. The index 
        * starts at 0. 
        * @param index  index into the collection. 
        * @return  The <code>byte</code> at the <code>index</code>th 
  
  
  
  1.7       +68 -46    xml-xerces/java/src/org/apache/xerces/xs/datatypes/XSDateTime.java
  
  Index: XSDateTime.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xs/datatypes/XSDateTime.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XSDateTime.java	11 Feb 2005 21:49:28 -0000	1.6
  +++ XSDateTime.java	22 Feb 2005 19:32:30 -0000	1.7
  @@ -27,53 +27,75 @@
    */
   public interface XSDateTime {
   	
  -	/**
  -	 * @return year
  -	 */
  -	public int getYear();
  -	
  -	/**
  -	 * @return month
  -	 */
  -	public int getMonth();
  -	
  -	/**
  -	 * @return day
  -	 */
  -	public int getDay();
  -	
  -	/**
  -	 * @return hour
  -	 */
  -	public int getHour();
  -	
  -	/**
  -	 * @return minutes
  -	 */
  -	public int getMinutes();
  -	
  -	/**
  -	 * @return seconds
  -	 */
  -	public double getSeconds();
  -	
  -	/**
  -	 * @return whether a timezone is specified
  -	 */
  -	public boolean hasTimeZone();
  -	
  -	/**
  -	 * @return time hours
  -	 */
  -	public int getTimeZoneHours();
  -	
  -	/**
  -	 * @return timezone minutes
  -	 */
  -	public int getTimeZoneMinutes();
  +    /**
  +     * @return years � can be negative for datetime;
  +     *          returns 0 for duration types
  +     */
  +    public int getYears();
  +    
  +    /**
  +     * @return months � can be negative only for durations;
  +     *                  For duration types, it returns years*12 + months
  +     */
  +    public int getMonths();
  +    
  +    /**
  +     * @return days � cannot be negative;
  +     *          returns 0 for duration types 
  +     */
  +    public int getDays();
  +    
  +    /**
  +     * @return hours � cannot be negative;
  +     *          returns 0 for duration types
  +     */
  +    public int getHours();
  +    
  +    /**
  +     * @return minutes � cannot be negative;
  +     *          returns 0 for duration types
  +     */
  +    public int getMinutes();
  +    
  +    /**
  +     * @return seconds � can be negative only for durations;
  +     *                   For duration types, it returns days*24*3600 + hours*3600 
  +     *                                                  + minutes*60 + seconds 
  +     */
  +    public double getSeconds();
  +    
  +    /**
  +     * @return boolean (true when timezone exists)
  +     */
  +    public boolean hasTimeZone();
  +    
  +    /**
  +     * @return timezone hours (for GMT-xx:xx this will be negative),
  +     *                          not valid for duration types
  +     */
  +    public int getTimeZoneHours();
  +    
  +    /**
  +     * @return timezone minutes (for GMT-xx:xx this will be negative),
  +     *                          not valid for duration types
  +     */
  +    public int getTimeZoneMinutes();
       
       /**
  -     * @return original lexical value
  +     * @return the original lexical value
        */
       public String getLexicalValue();
  +    
  +    /**
  +     * @return a new datetime object with normalized values
  +     *         (has no effect on durations or objects already
  +     *          normalized)
  +     */
  +    public XSDateTime normalize();
  +    
  +    /**
  +     * @return whether a datetime object is normalized or not
  +     *         (value is not useful for durations)
  +     */
  +    public boolean isNormalized();
   }
  
  
  
  1.6       +4 -3      xml-xerces/java/src/org/apache/xerces/xs/datatypes/ObjectList.java
  
  Index: ObjectList.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xs/datatypes/ObjectList.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ObjectList.java	8 Oct 2004 15:20:39 -0000	1.5
  +++ ObjectList.java	22 Feb 2005 19:32:30 -0000	1.6
  @@ -1,5 +1,5 @@
   /*
  - * Copyright 2004 The Apache Software Foundation.
  + * Copyright 2004, 2005 The Apache Software Foundation.
    * 
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -51,7 +51,8 @@
        * @param index  index into the collection. 
        * @return  The <code>Object</code> at the <code>index</code>th 
        *   position in the <code>ObjectList</code>, or <code>null</code> if 
  -     *   the index specified is not valid. 
  +     *   the index specified is not valid - greater than or equal to the
  +     *   number of items in the list or less than zero. 
        */
       public Object item(int index);
       
  
  
  
  1.33      +126 -57   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.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- AbstractDateTimeDV.java	11 Feb 2005 21:49:28 -0000	1.32
  +++ AbstractDateTimeDV.java	22 Feb 2005 19:32:30 -0000	1.33
  @@ -569,6 +569,8 @@
   		//          should consider reorganizing it.
   		//
   		
  +        //save unnormalized values
  +        saveUnnormalized(date);
   		//add minutes (from time zone)
   		int negate = -1;
   		
  @@ -619,6 +621,18 @@
   	
   	
   	/**
  +     * @param date
  +     */
  +    private void saveUnnormalized(DateTimeData date) {
  +        date.unNormYear = date.year;
  +        date.unNormMonth = date.month;
  +        date.unNormDay = date.day;
  +        date.unNormHour = date.hour;
  +        date.unNormMinute = date.minute;
  +        date.unNormSecond = date.second;
  +    }
  +
  +    /**
   	 * Resets object representation of date/time
   	 *
   	 * @param data   date/time object
  @@ -803,7 +817,15 @@
   		int year, month, day, hour, minute, utc;
   		double second;
   		int timezoneHr, timezoneMin;
  -        String originalValue;
  +        private String originalValue;
  +        boolean normalized = false;
  +        
  +        int unNormYear;
  +        int unNormMonth;
  +        int unNormDay;
  +        int unNormHour;
  +        int unNormMinute;
  +        double unNormSecond;
   		
   		// used for comparisons - to decide the 'interesting' portions of
   		// a date/time based data type.
  @@ -818,7 +840,7 @@
   			this.type = type;
   		}
   		public DateTimeData(int year, int month, int day, int hour, int minute,
  -				double second, int utc, String originalValue, AbstractDateTimeDV type) {
  +				double second, int utc, String originalValue, boolean normalized, AbstractDateTimeDV type) {
   			this.year = year;
   			this.month = month;
   			this.day = day;
  @@ -840,65 +862,112 @@
   			}
   			return canonical;
   		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getYear()
  -		 */
  -		public int getYear() {
  -			return year;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getMonth()
  -		 */
  -		public int getMonth() {
  -			return month;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getDay()
  -		 */
  -		public int getDay() {
  -			return day;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getHour()
  -		 */
  -		public int getHour() {
  -			return hour;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getMinutes()
  -		 */
  -		public int getMinutes() {
  -			return minute;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getSeconds()
  -		 */
  -		public double getSeconds() {
  -			return second;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#hasTimeZone()
  -		 */
  -		public boolean hasTimeZone() {
  -			return utc != 0;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getTimeZoneHours()
  -		 */
  -		public int getTimeZoneHours() {
  -			return timezoneHr;
  -		}
  -		/* (non-Javadoc)
  -		 * @see org.apache.xerces.xs.datatypes.XSDateTime#getTimeZoneMinutes()
  -		 */
  -		public int getTimeZoneMinutes() {
  -			return timezoneMin;
  -		}
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getYear()
  +         */
  +        public int getYears() {
  +            if(type instanceof DurationDV)
  +                return 0;
  +            return normalized?year:unNormYear;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getMonth()
  +         */
  +        public int getMonths() {
  +            if(type instanceof DurationDV) {
  +                return year*12 + month;
  +            }
  +            return normalized?month:unNormMonth;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getDay()
  +         */
  +        public int getDays() {
  +            if(type instanceof DurationDV)
  +                return 0;
  +            return normalized?day:unNormDay;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getHour()
  +         */
  +        public int getHours() {
  +            if(type instanceof DurationDV)
  +                return 0;
  +            return normalized?hour:unNormHour;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getMinutes()
  +         */
  +        public int getMinutes() {
  +            if(type instanceof DurationDV)
  +                return 0;
  +            return normalized?minute:unNormMinute;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getSeconds()
  +         */
  +        public double getSeconds() {
  +            if(type instanceof DurationDV) {
  +                return day*24*60*60 + hour*60*60 + minute*60 + second;
  +            }
  +            return normalized?second:unNormSecond;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#hasTimeZone()
  +         */
  +        public boolean hasTimeZone() {
  +            return utc != 0;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getTimeZoneHours()
  +         */
  +        public int getTimeZoneHours() {
  +            return timezoneHr;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#getTimeZoneMinutes()
  +         */
  +        public int getTimeZoneMinutes() {
  +            return timezoneMin;
  +        }
           /* (non-Javadoc)
            * @see org.apache.xerces.xs.datatypes.XSDateTime#getLexicalValue()
            */
           public String getLexicalValue() {
               return originalValue;
           }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#normalize()
  +         */
  +        public XSDateTime normalize() {
  +            if(!normalized) {
  +                DateTimeData dt = (DateTimeData)this.clone();
  +                dt.normalized = true;
  +                return dt;
  +            }
  +            return this;
  +        }
  +        /* (non-Javadoc)
  +         * @see org.apache.xerces.xs.datatypes.XSDateTime#isNormalized()
  +         */
  +        public boolean isNormalized() {
  +            return normalized;
  +        }
  +        
  +        public Object clone() {
  +            DateTimeData dt = new DateTimeData(this.year, this.month, this.day, this.hour, 
  +                    this.minute, this.second, this.utc, this.originalValue, this.normalized, this.type);
  +            dt.canonical = this.canonical;
  +            dt.position = position;
  +            dt.timezoneHr = this.timezoneHr;
  +            dt.timezoneMin = this.timezoneMin;
  +            dt.unNormYear = this.unNormYear;
  +            dt.unNormMonth = this.unNormMonth;
  +            dt.unNormDay = this.unNormDay;
  +            dt.unNormHour = this.unNormHour;
  +            dt.unNormMinute = this.unNormMinute;
  +            dt.unNormSecond = this.unNormSecond;
  +            return dt;
  +        }
   	}
   }
  
  
  
  1.17      +7 -6      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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- DurationDV.java	17 Dec 2004 20:21:24 -0000	1.16
  +++ DurationDV.java	22 Feb 2005 19:32:30 -0000	1.17
  @@ -1,5 +1,5 @@
   /*
  - * Copyright 1999-2002,2004 The Apache Software Foundation.
  + * Copyright 1999-2002,2004, 2005 The Apache Software Foundation.
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -40,10 +40,10 @@
       //
       // the dates are in format: {CCYY,MM,DD, H, S, M, MS, timezone}
       private final static DateTimeData[] DATETIMES= {
  -        new DateTimeData(1696, 9, 1, 0, 0, 0, 'Z', null, null),
  -        new DateTimeData(1697, 2, 1, 0, 0, 0, 'Z', null, null),
  -        new DateTimeData(1903, 3, 1, 0, 0, 0, 'Z', null, null),
  -        new DateTimeData(1903, 7, 1, 0, 0, 0, 'Z', null, null)};
  +        new DateTimeData(1696, 9, 1, 0, 0, 0, 'Z', null, true, null),
  +        new DateTimeData(1697, 2, 1, 0, 0, 0, 'Z', null, true, null),
  +        new DateTimeData(1903, 3, 1, 0, 0, 0, 'Z', null, true, null),
  +        new DateTimeData(1903, 7, 1, 0, 0, 0, 'Z', null, true, null)};
   
       public Object getActualValue(String content, ValidationContext context) throws InvalidDatatypeValueException{
           try{
  @@ -64,6 +64,7 @@
       protected DateTimeData parse(String str, int durationType) throws SchemaDateTimeException{
           int len = str.length();
           DateTimeData date= new DateTimeData(str, this);
  +        date.normalized = true;
           
           int start = 0;
           char c=str.charAt(start++);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org