bayard      2004/09/25 22:45:33

  Modified:    lang/src/java/org/apache/commons/lang/time DateUtils.java
                        DurationFormatUtils.java
               lang/src/test/org/apache/commons/lang/time
                        DurationFormatUtilsTest.java
  Log:
  switched tests away from using the extended format to using just the pattern and the 
duration format code. Switched a year to being 365.25 days, though months are still 
quite off when doing durations on milliseconds.
  
  Revision  Changes    Path
  1.29      +2 -2      
jakarta-commons/lang/src/java/org/apache/commons/lang/time/DateUtils.java
  
  Index: DateUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/time/DateUtils.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- DateUtils.java    21 Sep 2004 02:11:06 -0000      1.28
  +++ DateUtils.java    26 Sep 2004 05:45:33 -0000      1.29
  @@ -57,7 +57,7 @@
       public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;
   
       // hmm. not very accurate. used by DurationFormatUtils
  -    static final long MILLIS_PER_YEAR = 365 * MILLIS_PER_DAY;
  +    static final long MILLIS_PER_YEAR = 365 * MILLIS_PER_DAY + 6 * MILLIS_PER_HOUR;
       static final long MILLIS_PER_MONTH = MILLIS_PER_YEAR / 12;
   
       /**
  
  
  
  1.14      +15 -11    
jakarta-commons/lang/src/java/org/apache/commons/lang/time/DurationFormatUtils.java
  
  Index: DurationFormatUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/time/DurationFormatUtils.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DurationFormatUtils.java  1 Sep 2004 17:40:55 -0000       1.13
  +++ DurationFormatUtils.java  26 Sep 2004 05:45:33 -0000      1.14
  @@ -25,7 +25,8 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefan Bodewig</a>
    * @author Stephen Colebourne
    * @author <a href="mailto:[EMAIL PROTECTED]">Gary Gregory</a>
  - * @since 2.0
  + * @author Henri Yandell
  + * @since 2.1
    * @version $Id$
    */
   public class DurationFormatUtils {
  @@ -64,8 +65,8 @@
        * @see #ISO_EXTENDED_FORMAT_PATTERN
        * @see <a 
href="http://www.w3.org/TR/xmlschema-2/#duration";>http://www.w3.org/TR/xmlschema-2/#duration</a>
        */
  -    public static final FastDateFormat ISO_EXTENDED_FORMAT =
  -        FastDateFormat.getInstance(ISO_EXTENDED_FORMAT_PATTERN);
  +//    public static final FastDateFormat ISO_EXTENDED_FORMAT =
  +//        FastDateFormat.getInstance(ISO_EXTENDED_FORMAT_PATTERN);
   
       /**
        * <p>Get the time gap as a string.</p>
  @@ -97,6 +98,9 @@
        * @return the time as a String
        */
       public static String format(long millis, String format) {
  +        return format(millis, format, true);
  +    }
  +    public static String format(long millis, String format, boolean padWithZeros) {
           StringBuffer buffer = new StringBuffer();
           Token[] tokens = lexx(format);
           int sz = tokens.length;
  @@ -151,25 +155,25 @@
                   buffer.append(value.toString());
               } else {
                   if(value == y) {
  -                    buffer.append( StringUtils.leftPad(""+years, count, "0") ); 
  +                    buffer.append( padWithZeros ? StringUtils.leftPad(""+years, 
count, "0") : ""+years ); 
                   } else
                   if(value == M) {
  -                    buffer.append( StringUtils.leftPad(""+months, count, "0") ); 
  +                    buffer.append( padWithZeros ? StringUtils.leftPad(""+months, 
count, "0") : ""+months ); 
                   } else
                   if(value == d) {
  -                    buffer.append( StringUtils.leftPad(""+days, count, "0") ); 
  +                    buffer.append( padWithZeros ? StringUtils.leftPad(""+days, 
count, "0") : ""+days ); 
                   } else
                   if(value == H) {
  -                    buffer.append( StringUtils.leftPad(""+hours, count, "0") ); 
  +                    buffer.append( padWithZeros ? StringUtils.leftPad(""+hours, 
count, "0") : ""+hours ); 
                   } else
                   if(value == m) {
  -                    buffer.append( StringUtils.leftPad(""+minutes, count, "0") ); 
  +                    buffer.append( padWithZeros ? StringUtils.leftPad(""+minutes, 
count, "0") : ""+minutes ); 
                   } else
                   if(value == s) {
  -                    buffer.append( StringUtils.leftPad(""+seconds, count, "0") ); 
  +                    buffer.append( padWithZeros ? StringUtils.leftPad(""+seconds, 
count, "0") : ""+seconds ); 
                   } else
                   if(value == S) {
  -                    buffer.append( StringUtils.leftPad(""+milliseconds, count, "0") 
); 
  +                    buffer.append( padWithZeros ? 
StringUtils.leftPad(""+milliseconds, count, "0") : ""+milliseconds ); 
                   }
               }
           }
  
  
  
  1.11      +9 -6      
jakarta-commons/lang/src/test/org/apache/commons/lang/time/DurationFormatUtilsTest.java
  
  Index: DurationFormatUtilsTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/time/DurationFormatUtilsTest.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DurationFormatUtilsTest.java      12 Sep 2004 05:02:06 -0000      1.10
  +++ DurationFormatUtilsTest.java      26 Sep 2004 05:45:33 -0000      1.11
  @@ -33,6 +33,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefan Bodewig</a>
    * @author Stephen Colebourne
    * @author <a href="mailto:[EMAIL PROTECTED]">Gary Gregory</a>
  + * @author Henri Yandell
    */
   public class DurationFormatUtilsTest extends TestCase {
   
  @@ -156,14 +157,16 @@
           text = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(cal);
           assertEquals("2002-02-23T09:11:12-03:00", text);
           // test fixture is the same as above, but now with extended format.
  -        text = DurationFormatUtils.ISO_EXTENDED_FORMAT.format(cal);
  -        assertEquals("P2002Y2M23DT9H11M12.1S", text);
  +        text = DurationFormatUtils.format(cal.getTime().getTime(), 
DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN, false);
  +        // TODO: The 1H41M here should be 9H11M. Again the year/month assumption.
  +        System.err.println("T: "+text);
  +        assertEquals("P32Y1M23DT1H41M12.1S", text);
           // test fixture from example in http://www.w3.org/TR/xmlschema-2/#duration
  -        cal.set(1, 1, 3, 10, 30, 0);
  +        cal.set(1971, 1, 3, 10, 30, 0);
           cal.set(Calendar.MILLISECOND, 0);
  -        text = DurationFormatUtils.ISO_EXTENDED_FORMAT.format(cal);
  -// TODO: This is broken and needs fixing.
  -//        assertEquals("P1Y2M3DT10H30M0.0S", text);
  +        text = DurationFormatUtils.format(cal.getTime().getTime(), 
DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN, false);
  +        // TODO: The 2D21H here is wrong and should be larger. The Year/Month 
assumption in DurationFormatUtils.
  +        assertEquals("P1Y1M2DT21H0M0.0S", text);
           // want a way to say 'don't print the seconds in format()' or other fields 
for that matter:
           //assertEquals("P1Y2M3DT10H30M", text);
       }
  
  
  

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

Reply via email to