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 greater 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 GreaterThanOrEqualsOperator
33 extends RelationalOperator
34 {
35 //-------------------------------------
36 // Singleton
37 //-------------------------------------
38
39 public static final GreaterThanOrEqualsOperator SINGLETON =
40 new GreaterThanOrEqualsOperator ();
41
42 //-------------------------------------
43 /**
44 *
45 * Constructor
46 **/
47 public GreaterThanOrEqualsOperator ()
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 (isGreater(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 (isGreater(pLeft.compareTo(pRight)) || isEqual(pLeft.compareTo(pRight)));
128 }
129
130 //-------------------------------------
131 }