View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.el;
18  
19  import java.math.BigDecimal;
20  import java.math.BigInteger;
21  
22  import javax.servlet.jsp.el.ELException;
23  
24  /**
25   *
26   * <p>This is the superclass for all relational operators (except ==
27   * or !=)
28   * 
29   * @author Nathan Abramson - Art Technology Group
30   * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: bayard $
31   **/
32  
33  public abstract class RelationalOperator
34    extends BinaryOperator
35  {
36  
37    //-------------------------------------
38    /**
39     *
40     * Applies the operator to the given value
41     **/
42    public Object apply (Object pLeft, Object pRight)
43      throws ELException
44    {
45      return Coercions.applyRelationalOperator (pLeft, pRight, this);
46    }
47  
48    //-------------------------------------
49    /**
50     *
51     * Applies the operator to the given double values
52     **/
53    public abstract boolean apply (double pLeft,
54  				 double pRight
55                                   );
56    
57    //-------------------------------------
58    /**
59     *
60     * Applies the operator to the given long values
61     **/
62    public abstract boolean apply (long pLeft,
63  				 long pRight
64                                   );
65    
66    //-------------------------------------
67    /**
68     *
69     * Applies the operator to the given String values
70     **/
71    public abstract boolean apply (String pLeft,
72  				 String pRight
73                                   );
74  
75    //-------------------------------------
76  
77  
78      /**
79       * Applies the operator to the given BigDecimal values, returning a BigDecimal
80       **/
81      public abstract boolean apply(BigDecimal pLeft, BigDecimal pRight);
82  
83      //-------------------------------------
84  
85      /**
86       * Applies the operator to the given BigDecimal values, returning a BigDecimal
87       **/
88      public abstract boolean apply(BigInteger pLeft, BigInteger pRight);
89  
90      //-------------------------------------
91  
92  
93      /**
94       * Test return value of BigInteger/BigDecimal A.compareTo(B).
95       * @param val - result of BigInteger/BigDecimal compareTo() call
96       * @return - true if result is less than 0, otherwise false
97       */
98      protected boolean isLess(int val) {
99          if (val < 0)
100             return true;
101         else
102             return false;
103     }
104 
105     /**
106      * Test return value of BigInteger/BigDecimal A.compareTo(B).
107      * @param val - result of BigInteger/BigDecimal compareTo() call
108      * @return - true if result is equal to 0, otherwise false
109      */
110     protected boolean isEqual(int val) {
111         if (val == 0)
112             return true;
113         else
114             return false;
115     }
116 
117     /**
118      * Test return value of BigInteger/BigDecimal A.compareTo(B).
119      * @param val - result of BigInteger/BigDecimal compareTo() call
120      * @return - true if result is greater than 0, otherwise false
121      */
122     protected boolean isGreater(int val) {
123         if (val > 0)
124             return true;
125         else
126             return false;
127     }
128 }