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 | */
|
---|
54 | package ise.antelope.tasks.condition;
|
---|
55 |
|
---|
56 | import org.apache.tools.ant.taskdefs.condition.Equals;
|
---|
57 | import 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 | */
|
---|
65 | public 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 | }
|
---|