mbenson     2004/04/26 12:20:25

  Modified:    src/main/org/apache/tools/ant/types/selectors Tag:
                        ANT_16_BRANCH DateSelector.java
               docs/manual/CoreTypes Tag: ANT_16_BRANCH selectors.html
               .        Tag: ANT_16_BRANCH WHATSNEW
  Log:
  Merge DateSelector pattern attribute to 1.6 branch.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.8.2.5   +43 -22    
ant/src/main/org/apache/tools/ant/types/selectors/DateSelector.java
  
  Index: DateSelector.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/types/selectors/DateSelector.java,v
  retrieving revision 1.8.2.4
  retrieving revision 1.8.2.5
  diff -u -r1.8.2.4 -r1.8.2.5
  --- DateSelector.java 9 Mar 2004 17:01:56 -0000       1.8.2.4
  +++ DateSelector.java 26 Apr 2004 19:20:24 -0000      1.8.2.5
  @@ -19,6 +19,7 @@
   
   import java.io.File;
   import java.text.DateFormat;
  +import java.text.SimpleDateFormat;
   import java.text.ParseException;
   import java.util.Locale;
   
  @@ -39,6 +40,7 @@
       private boolean includeDirs = false;
       private int granularity = 0;
       private int cmp = 2;
  +    private String pattern;
       /** Key to used for parameterized custom selector */
       public static final String MILLIS_KEY = "millis";
       /** Key to used for parameterized custom selector */
  @@ -49,6 +51,8 @@
       public static final String GRANULARITY_KEY = "granularity";
       /** Key to used for parameterized custom selector */
       public static final String WHEN_KEY = "when";
  +    /** Key to used for parameterized custom selector */
  +    public static final String PATTERN_KEY = "pattern";
   
       /**
        * Creates a new <code>DateSelector</code> instance.
  @@ -76,6 +80,9 @@
           }
           buf.append(" granularity: ");
           buf.append(granularity);
  +        if (pattern != null) {
  +            buf.append(" pattern: ").append(pattern);
  +        }
           buf.append("}");
           return buf.toString();
       }
  @@ -95,6 +102,9 @@
        * @return the millisecond value
        */
       public long getMillis() {
  +        if (dateTime != null) {
  +            validate();
  +        }
           return millis;
       }
   
  @@ -106,24 +116,6 @@
        */
       public void setDatetime(String dateTime) {
           this.dateTime = dateTime;
  -        if (dateTime != null) {
  -            DateFormat df = DateFormat.getDateTimeInstance(
  -                    DateFormat.SHORT,
  -                    DateFormat.SHORT,
  -                    Locale.US);
  -            try {
  -                setMillis(df.parse(dateTime).getTime());
  -                if (millis < 0) {
  -                    setError("Date of " + dateTime
  -                            + " results in negative milliseconds value 
relative"
  -                            + " to epoch (January 1, 1970, 00:00:00 GMT).");
  -                }
  -            } catch (ParseException pe) {
  -                setError("Date of " + dateTime
  -                        + " Cannot be parsed correctly. It should be in"
  -                        + " MM/DD/YYYY HH:MM AM_PM format.");
  -            }
  -        }
       }
   
       /**
  @@ -155,6 +147,15 @@
       }
   
       /**
  +     * Sets the pattern to be used for the SimpleDateFormat
  +     *
  +     * @param pattern the pattern that defines the date format
  +     */
  +    public void setPattern(String pattern) {
  +        this.pattern = pattern;
  +    }
  +
  +    /**
        * When using this as a custom selector, this method will be called.
        * It translates each parameter into the appropriate setXXX() call.
        *
  @@ -189,6 +190,8 @@
                       TimeComparisons cmp = new TimeComparisons();
                       cmp.setValue(parameters[i].getValue());
                       setWhen(cmp);
  +                } else if (PATTERN_KEY.equalsIgnoreCase(paramname)) {
  +                    setPattern(parameters[i].getValue());
                   } else {
                       setError("Invalid parameter " + paramname);
                   }
  @@ -204,10 +207,26 @@
           if (dateTime == null && millis < 0) {
               setError("You must provide a datetime or the number of "
                       + "milliseconds.");
  -        } else if (millis < 0) {
  -            setError("Date of " + dateTime
  -                    + " results in negative milliseconds value"
  -                    + " relative to epoch (January 1, 1970, 00:00:00 GMT).");
  +        } else if (millis < 0 && dateTime != null) {
  +            // check millis and only set it once.
  +            DateFormat df = ((pattern == null)
  +                ? DateFormat.getDateTimeInstance(
  +                    DateFormat.SHORT, DateFormat.SHORT, Locale.US)
  +                : new SimpleDateFormat(pattern));
  +
  +            try {
  +                setMillis(df.parse(dateTime).getTime());
  +                if (millis < 0) {
  +                    setError("Date of " + dateTime
  +                        + " results in negative milliseconds value"
  +                        + " relative to epoch (January 1, 1970, 00:00:00 
GMT).");
  +                }
  +            } catch (ParseException pe) {
  +                setError("Date of " + dateTime
  +                        + " Cannot be parsed correctly. It should be in"
  +                        + ((pattern == null)
  +                        ? " MM/DD/YYYY HH:MM AM_PM" : pattern) + " format.");
  +            }
           }
       }
   
  @@ -221,7 +240,9 @@
        * @return whether the file should be selected or not
        */
       public boolean isSelected(File basedir, String filename, File file) {
  +
           validate();
  +
           if (file.isDirectory() && (!includeDirs)) {
               return true;
           }
  
  
  
  No                   revision
  No                   revision
  1.15.2.6  +26 -7     ant/docs/manual/CoreTypes/selectors.html
  
  Index: selectors.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTypes/selectors.html,v
  retrieving revision 1.15.2.5
  retrieving revision 1.15.2.6
  diff -u -r1.15.2.5 -r1.15.2.6
  --- selectors.html    9 Feb 2004 22:12:10 -0000       1.15.2.5
  +++ selectors.html    26 Apr 2004 19:20:24 -0000      1.15.2.6
  @@ -134,8 +134,10 @@
         </tr>
         <tr>
           <td valign="top">datetime</td>
  -        <td valign="top">Specifies the date and time to test for using
  -          a string of the format MM/DD/YYYY HH:MM AM_or_PM.
  +        <td valign="top">Specifies the date and time to test for.
  +          Should be in the format MM/DD/YYYY HH:MM AM_or_PM, or
  +          an alternative pattern specified via the <i>pattern</i>
  +          attribute.
           </td>
           <td valign="top" align="center" rowspan="2">At least one of the 
two.</td>
         </tr>
  @@ -160,6 +162,23 @@
             The default is equal.
           <td valign="top" align="center">No</td>
         </tr>
  +      <tr>
  +        <td valign="top">granularity</td>
  +        <td valign="top">The number of milliseconds leeway to use when
  +          comparing file modification times. This is needed because not every
  +          file system supports tracking the last modified time to the
  +          millisecond level. Default is 0 milliseconds, or 2 seconds on DOS 
systems.
  +        </td>
  +        <td valign="top" align="center">No</td>
  +      </tr>
  +      <tr>
  +        <td valign="top">pattern</td>
  +        <td valign="top">The <CODE>SimpleDateFormat</CODE>-compatible pattern
  +          to use when interpreting the <i>datetime</i> attribute.
  +          <i>Since Ant 1.6.2</i>
  +        </td>
  +        <td valign="top" align="center">No</td>
  +      </tr>
       </table>
   
       <p>Here is an example of how to use the Date Selector:</p>
  @@ -675,8 +694,8 @@
       the following rules: <ul>
           <li> <b> algorithm </b>: same as attribute algorithm </li>
           <li> <b> cache </b>: same as attribute cache </li>
  -        <li> <b> comparator </b>: same as attribute cache </li>
  -        <li> <b> update </b>: same as attribute comparator </li>
  +        <li> <b> comparator </b>: same as attribute comparator </li>
  +        <li> <b> update </b>: same as attribute update </li>
           <li> <b> seldirs </b>: same as attribute seldirs </li>
           <li> <b> algorithm.* </b>: Value is transfered to the algorithm via 
its
                                      <i>set</i>XX-methods </li>
  @@ -687,7 +706,7 @@
       </ul></p>
   
       <table border="1" cellpadding="2" cellspacing="0">
  -      <tr><td colspan="2"><font size="+1"><b> Algorithm´s 
</b></font></td></tr>
  +      <tr><td colspan="2"><font size="+1"><b> Algorithm's 
</b></font></td></tr>
         <tr>
           <td valign="top"><b>Name</b></td>
           <td valign="top"><b>Description</b></td>
  @@ -710,7 +729,7 @@
             </ul>
           </td>
         </tr>
  -      <tr><td colspan="2"><font size="+1"><b> Cache´s </b></font></td></tr>
  +      <tr><td colspan="2"><font size="+1"><b> Cache's </b></font></td></tr>
         <tr>
           <td valign="top"> propertyfile </td>
           <td valign="top"> Use the java.util.Properties class and its 
possibility
  @@ -722,7 +741,7 @@
             </ul>
           </td>
         </tr>
  -      <tr><td colspan="2"><font size="+1"><b> Comparator´s 
</b></font></td></tr>
  +      <tr><td colspan="2"><font size="+1"><b> Comparator's 
</b></font></td></tr>
         <tr>
           <td valign="top"> equal </td>
           <td valign="top"> Very simple object comparison. </td>
  
  
  
  No                   revision
  No                   revision
  1.503.2.87 +2 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.503.2.86
  retrieving revision 1.503.2.87
  diff -u -r1.503.2.86 -r1.503.2.87
  --- WHATSNEW  23 Apr 2004 16:57:26 -0000      1.503.2.86
  +++ WHATSNEW  26 Apr 2004 19:20:24 -0000      1.503.2.87
  @@ -112,6 +112,8 @@
   
   * New attribute "negate" on <propertyset> to invert selection criteria.
   
  +* New "pattern" attribute for <date> selector.
  +
   Changes from Ant 1.6.0 to Ant 1.6.1
   ===================================
   
  
  
  

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

Reply via email to