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>The implementation of the less than or equals operator
27   * 
28   * @author Nathan Abramson - Art Technology Group
29   * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: bayard $
30   **/
31  
32  public class LessThanOrEqualsOperator
33    extends RelationalOperator
34  {
35    //-------------------------------------
36    // Singleton
37    //-------------------------------------
38  
39    public static final LessThanOrEqualsOperator SINGLETON =
40      new LessThanOrEqualsOperator ();
41  
42    //-------------------------------------
43    /**
44     *
45     * Constructor
46     **/
47    public LessThanOrEqualsOperator ()
48    {
49    }
50  
51    //-------------------------------------
52    // Expression methods
53    //-------------------------------------
54    /**
55     *
56     * Returns the symbol representing the operator
57     **/
58    public String getOperatorSymbol ()
59    {
60      return "<=";
61    }
62  
63    //-------------------------------------
64    /**
65     *
66     * Applies the operator to the given value
67     **/
68    public Object apply (Object pLeft, Object pRight)
69      throws ELException
70    {
71      if (pLeft == pRight) {
72        return Boolean.TRUE;
73      }
74      else if (pLeft == null ||
75  	     pRight == null) {
76        return Boolean.FALSE;
77      }
78      else {
79        return super.apply (pLeft, pRight);
80      }
81    }
82  
83    //-------------------------------------
84    /**
85     *
86     * Applies the operator to the given double values
87     **/
88    public boolean apply (double pLeft, double pRight) {
89      return pLeft <= pRight;
90    }
91    
92    //-------------------------------------
93    /**
94     *
95     * Applies the operator to the given long values
96     **/
97    public boolean apply (long pLeft, long pRight) {
98      return pLeft <= pRight;
99    }
100   
101   //-------------------------------------
102   /**
103    *
104    * Applies the operator to the given String values
105    **/
106   public boolean apply (String pLeft, String pRight) {
107     return pLeft.compareTo (pRight) <= 0;
108   }
109 
110   //-------------------------------------
111 
112     /**
113      *
114      * Applies the operator to the given BigDecimal values, returning a BigDecimal
115      **/
116     public boolean apply(BigDecimal pLeft, BigDecimal pRight) {
117         return (isLess(pLeft.compareTo(pRight)) || isEqual(pLeft.compareTo(pRight)));
118     }
119 
120     //-------------------------------------
121 
122     /**
123      *
124      * Applies the operator to the given BigDecimal values, returning a BigDecimal
125      **/
126     public boolean apply(BigInteger pLeft, BigInteger pRight) {
127         return (isLess(pLeft.compareTo(pRight)) || isEqual(pLeft.compareTo(pRight)));
128     }
129 
130     //-------------------------------------
131 }