source: release-kits/wirk3/ant-scripts/tasks/antelope/src/ise/antelope/tasks/condition/DateTimeBefore.java@ 15023

Last change on this file since 15023 was 15023, checked in by oranfry, 16 years ago

did the bulk of the work on wirk3

File size: 5.1 KB
Line 
1/*
2* The Apache Software License, Version 1.1
3*
4* Copyright (c) 2001-2002 The Apache Software Foundation. All rights
5* reserved.
6*
7* Redistribution and use in source and binary forms, with or without
8* modification, are permitted provided that the following conditions
9* are met:
10*
11* 1. Redistributions of source code must retain the above copyright
12* notice, this list of conditions and the following disclaimer.
13*
14* 2. Redistributions in binary form must reproduce the above copyright
15* notice, this list of conditions and the following disclaimer in
16* the documentation and/or other materials provided with the
17* distribution.
18*
19* 3. The end-user documentation included with the redistribution, if
20* any, must include the following acknowlegement:
21* "This product includes software developed by the
22* Apache Software Foundation (http://www.apache.org/)."
23* Alternately, this acknowlegement may appear in the software itself,
24* if and wherever such third-party acknowlegements normally appear.
25*
26* 4. The names "The Jakarta Project", "Ant", and "Apache Software
27* Foundation" must not be used to endorse or promote products derived
28* from this software without prior written permission. For written
29* permission, please contact [email protected].
30*
31* 5. Products derived from this software may not be called "Apache"
32* nor may "Apache" appear in their names without prior written
33* permission of the Apache Group.
34*
35* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46* SUCH DAMAGE.
47* ====================================================================
48*
49* This software consists of voluntary contributions made by many
50* individuals on behalf of the Apache Software Foundation. For more
51* information on the Apache Software Foundation, please see
52* <http://www.apache.org/>.
53*/
54package ise.antelope.tasks.condition;
55
56import java.text.*;
57import java.util.*;
58import org.apache.tools.ant.BuildException;
59import org.apache.tools.ant.PropertyHelper;
60
61import org.apache.tools.ant.taskdefs.condition.*;
62
63/**
64 * Condition that validates if one datetime is before another datetime.
65 *
66 * @author Dale Anson
67 * @version $Revision: 1.1 $
68 */
69public class DateTimeBefore extends IsTrue implements Condition {
70
71 private String date1, date2;
72
73 private String format = null;
74 private boolean lenient = true;
75
76
77 /**
78 * Sets the first date/timestamp, required.
79 *
80 * @param date a string representing a date or time.
81 */
82 public void setDatetime1(String date) {
83 if (date == null)
84 return;
85 if (date1 == null)
86 date1 = date;
87 }
88
89 /**
90 * Sets the other date/time stamp, required.
91 *
92 * @param date a string representing a date or time.
93 */
94 public void setDatetime2(String date) {
95 if (date == null)
96 return;
97 if (date2 == null)
98 date2 = date;
99 }
100
101
102 /**
103 * Sets the format of the datetimes, this is a required attribute. See
104 * java.text.SimpleDateFormat for the format.
105 *
106 * @param format The new format value
107 */
108 public void setFormat(String format) {
109 this.format = format;
110 }
111
112
113 /**
114 * Sets whether the datetime parser should use lenient parsing. This is an
115 * optional setting, default is true, use lenient parsing.
116 *
117 * @param b The new lenient value
118 */
119 public void setLenient(boolean b) {
120 lenient = b;
121 }
122
123
124 /**
125 * @return true if datetime1 is before datetime2.
126 * @exception BuildException if the attributes are not set correctly
127 */
128 public boolean eval() throws BuildException {
129 try {
130 Date d1;
131 Date d2;
132 if (format == null)
133 throw new BuildException("format is required");
134
135 SimpleDateFormat df = new SimpleDateFormat(format);
136 df.setLenient(lenient);
137
138 if (date1 != null && date2 != null) {
139 // handle date difference
140 d1 = df.parse(date1);
141 d2 = df.parse(date2);
142 }
143 else
144 throw new BuildException("Both datetime1 and datetime2 must be set.");
145
146 Calendar cal1 = Calendar.getInstance();
147 Calendar cal2 = Calendar.getInstance();
148 cal1.setTime(d1);
149 cal2.setTime(d2);
150
151 return cal1.before(cal2);
152 }
153 catch (Exception e) {
154 throw new BuildException(e.getMessage());
155 }
156 }
157}
158
Note: See TracBrowser for help on using the repository browser.