mbenson 2004/04/07 15:46:51 Modified: . CONTRIBUTORS docs/manual/CoreTypes selectors.html src/main/org/apache/tools/ant/types/selectors DateSelector.java Log: Add pattern attribute to DateSelector. Document granularity attribute. Submitted by: David Kavanagh Revision Changes Path 1.10 +1 -0 ant/CONTRIBUTORS Index: CONTRIBUTORS =================================================================== RCS file: /home/cvs/ant/CONTRIBUTORS,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- CONTRIBUTORS 7 Apr 2004 13:30:30 -0000 1.9 +++ CONTRIBUTORS 7 Apr 2004 22:46:51 -0000 1.10 @@ -34,6 +34,7 @@ Danno Ferrin Davanum Srinivas David A. Herman +David Kavanagh David Maclean David Rees Denis Hennessy 1.21 +24 -5 ant/docs/manual/CoreTypes/selectors.html Index: selectors.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTypes/selectors.html,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- selectors.html 29 Mar 2004 21:47:04 -0000 1.20 +++ selectors.html 7 Apr 2004 22:46:51 -0000 1.21 @@ -133,8 +133,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> @@ -159,6 +161,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> @@ -686,7 +705,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> @@ -709,7 +728,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 @@ -721,7 +740,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> 1.13 +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.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- DateSelector.java 9 Mar 2004 16:48:47 -0000 1.12 +++ DateSelector.java 7 Apr 2004 22:46:51 -0000 1.13 @@ -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; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]