source: release-kits/wirk3/ant-scripts/tasks/antelope/src/ise/antelope/tasks/condition/MathEquals.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: 4.3 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 org.apache.tools.ant.taskdefs.condition.Equals;
57import org.apache.tools.ant.BuildException;
58
59/**
60 * Extends Equals condition to test if the first argument is greater than the
61 * second argument. Will handle base 10 integer and decimal numbers, otherwise,
62 * treats arguments as Strings.
63 * @author Dale Anson
64 */
65public class MathEquals extends Equals {
66
67 private String arg1, arg2;
68 private boolean trim = false;
69 private boolean caseSensitive = true;
70
71 public void setArg1(String a1) {
72 arg1 = a1;
73 }
74
75 public void setArg2(String a2) {
76 arg2 = a2;
77 }
78
79 /**
80 * Should we want to trim the arguments before comparing them?
81 *
82 * @since Revision: 1.3, Ant 1.5
83 */
84 public void setTrim(boolean b) {
85 trim = b;
86 }
87
88 /**
89 * Should the comparison be case sensitive?
90 *
91 * @since Revision: 1.3, Ant 1.5
92 */
93 public void setCasesensitive(boolean b) {
94 caseSensitive = b;
95 }
96
97 public boolean eval() throws BuildException {
98 if (arg1 == null || arg2 == null) {
99 throw new BuildException("both arg1 and arg2 are required in "
100 + "math equals");
101 }
102
103 if (trim) {
104 arg1 = arg1.trim();
105 arg2 = arg2.trim();
106 }
107
108 // check if args are numbers
109 boolean first_is_num = arg1.matches("\\d*[.]?\\d*");
110 boolean second_is_num = arg2.matches("\\d*[.]?\\d*");
111 if (first_is_num && second_is_num) {
112 double first_double = Double.parseDouble(arg1);
113 double second_double = Double.parseDouble(arg2);
114 return first_double == second_double;
115 }
116
117
118 return caseSensitive ? arg1.compareTo(arg2) == 0 : arg1.compareToIgnoreCase(arg2) == 0;
119 }
120
121}
Note: See TracBrowser for help on using the repository browser.