org.apache.ibatis.ognl
Class OgnlOps

java.lang.Object
  extended by org.apache.ibatis.ognl.OgnlOps
All Implemented Interfaces:
NumericTypes

public abstract class OgnlOps
extends java.lang.Object
implements NumericTypes

This is an abstract class with static methods that define the operations of OGNL.

Author:
Luke Blanshard ([email protected]), Drew Davidson ([email protected])

Field Summary
 
Fields inherited from interface org.apache.ibatis.ognl.NumericTypes
BIGDEC, BIGINT, BOOL, BYTE, CHAR, DOUBLE, FLOAT, INT, LONG, MIN_REAL_TYPE, NONNUMERIC, SHORT
 
Constructor Summary
OgnlOps()
           
 
Method Summary
static java.lang.Object add(java.lang.Object v1, java.lang.Object v2)
           
static java.math.BigDecimal bigDecValue(java.lang.Object value)
          Evaluates the given object as a BigDecimal.
static java.math.BigInteger bigIntValue(java.lang.Object value)
          Evaluates the given object as a BigInteger.
static java.lang.Object binaryAnd(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object binaryOr(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object binaryXor(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object bitNegate(java.lang.Object value)
           
static boolean booleanValue(java.lang.Object value)
          Evaluates the given object as a boolean: if it is a Boolean object, it's easy; if it's a Number or a Character, returns true for non-zero objects; and otherwise returns true for non-null objects.
static int compareWithConversion(java.lang.Object v1, java.lang.Object v2)
          Compares two objects for equality, even if it has to convert one of them to the other type.
static int compareWithConversion(java.lang.Object v1, java.lang.Object v2, boolean equals)
          Compares two objects for equality, even if it has to convert one of them to the other type.
static java.lang.Object convertValue(java.lang.Object value, java.lang.Class toType)
          Returns the value converted numerically to the given class type

This method also detects when arrays are being converted and converts the components of one array to the type of the other.

static java.lang.Object divide(java.lang.Object v1, java.lang.Object v2)
           
static double doubleValue(java.lang.Object value)
          Evaluates the given object as a double-precision floating-point number.
static boolean equal(java.lang.Object v1, java.lang.Object v2)
           
static int getNumericType(int t1, int t2, boolean canBeNonNumeric)
          Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given types.
static int getNumericType(java.lang.Object value)
          Returns a constant from the NumericTypes interface that represents the numeric type of the given object.
static int getNumericType(java.lang.Object v1, java.lang.Object v2)
          Returns the constant from the NumericTypes interface that best expresses the type of a numeric operation on the two given objects.
static int getNumericType(java.lang.Object v1, java.lang.Object v2, boolean canBeNonNumeric)
          Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given objects.
static boolean greater(java.lang.Object v1, java.lang.Object v2)
           
static boolean in(java.lang.Object v1, java.lang.Object v2)
           
static boolean isEqual(java.lang.Object object1, java.lang.Object object2)
          Returns true if object1 is equal to object2 in either the sense that they are the same object or, if both are non-null if they are equal in the equals() sense.
static boolean less(java.lang.Object v1, java.lang.Object v2)
           
static long longValue(java.lang.Object value)
          Evaluates the given object as a long integer.
static java.lang.Object multiply(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object negate(java.lang.Object value)
           
static java.lang.Number newInteger(int type, long value)
          Returns a new Number object of an appropriate type to hold the given integer value.
static java.lang.Number newReal(int type, double value)
          Returns a new Number object of an appropriate type to hold the given real value.
static java.lang.Object remainder(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object shiftLeft(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object shiftRight(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.String stringValue(java.lang.Object value)
          Evaluates the given object as a String.
static java.lang.String stringValue(java.lang.Object value, boolean trim)
          Evaluates the given object as a String and trims it if the trim flag is true.
static java.lang.Object subtract(java.lang.Object v1, java.lang.Object v2)
           
static java.lang.Object unsignedShiftRight(java.lang.Object v1, java.lang.Object v2)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OgnlOps

public OgnlOps()
Method Detail

compareWithConversion

public static int compareWithConversion(java.lang.Object v1,
                                        java.lang.Object v2)
Compares two objects for equality, even if it has to convert one of them to the other type. If both objects are numeric they are converted to the widest type and compared. If one is non-numeric and one is numeric the non-numeric is converted to double and compared to the double numeric value. If both are non-numeric and Comparable and the types are compatible (i.e. v1 is of the same or superclass of v2's type) they are compared with Comparable.compareTo(). If both values are non-numeric and not Comparable or of incompatible classes this will throw and IllegalArgumentException.

Parameters:
v1 - First value to compare
v2 - second value to compare
Returns:
integer describing the comparison between the two objects. A negative number indicates that v1 < v2. Positive indicates that v1 > v2. Zero indicates v1 == v2.
Throws:
java.lang.IllegalArgumentException - if the objects are both non-numeric yet of incompatible types or do not implement Comparable.

compareWithConversion

public static int compareWithConversion(java.lang.Object v1,
                                        java.lang.Object v2,
                                        boolean equals)
Compares two objects for equality, even if it has to convert one of them to the other type. If both objects are numeric they are converted to the widest type and compared. If one is non-numeric and one is numeric the non-numeric is converted to double and compared to the double numeric value. If both are non-numeric and Comparable and the types are compatible (i.e. v1 is of the same or superclass of v2's type) they are compared with Comparable.compareTo(). If both values are non-numeric and not Comparable or of incompatible classes this will throw and IllegalArgumentException.

Parameters:
v1 - First value to compare
v2 - second value to compare
Returns:
integer describing the comparison between the two objects. A negative number indicates that v1 < v2. Positive indicates that v1 > v2. Zero indicates v1 == v2.
Throws:
java.lang.IllegalArgumentException - if the objects are both non-numeric yet of incompatible types or do not implement Comparable.

isEqual

public static boolean isEqual(java.lang.Object object1,
                              java.lang.Object object2)
Returns true if object1 is equal to object2 in either the sense that they are the same object or, if both are non-null if they are equal in the equals() sense.

Parameters:
v1 - First object to compare
v2 - Second object to compare
Returns:
true if v1 == v2

booleanValue

public static boolean booleanValue(java.lang.Object value)
Evaluates the given object as a boolean: if it is a Boolean object, it's easy; if it's a Number or a Character, returns true for non-zero objects; and otherwise returns true for non-null objects.

Parameters:
value - an object to interpret as a boolean
Returns:
the boolean value implied by the given object

longValue

public static long longValue(java.lang.Object value)
                      throws java.lang.NumberFormatException
Evaluates the given object as a long integer.

Parameters:
value - an object to interpret as a long integer
Returns:
the long integer value implied by the given object
Throws:
java.lang.NumberFormatException - if the given object can't be understood as a long integer

doubleValue

public static double doubleValue(java.lang.Object value)
                          throws java.lang.NumberFormatException
Evaluates the given object as a double-precision floating-point number.

Parameters:
value - an object to interpret as a double
Returns:
the double value implied by the given object
Throws:
java.lang.NumberFormatException - if the given object can't be understood as a double

bigIntValue

public static java.math.BigInteger bigIntValue(java.lang.Object value)
                                        throws java.lang.NumberFormatException
Evaluates the given object as a BigInteger.

Parameters:
value - an object to interpret as a BigInteger
Returns:
the BigInteger value implied by the given object
Throws:
java.lang.NumberFormatException - if the given object can't be understood as a BigInteger

bigDecValue

public static java.math.BigDecimal bigDecValue(java.lang.Object value)
                                        throws java.lang.NumberFormatException
Evaluates the given object as a BigDecimal.

Parameters:
value - an object to interpret as a BigDecimal
Returns:
the BigDecimal value implied by the given object
Throws:
java.lang.NumberFormatException - if the given object can't be understood as a BigDecimal

stringValue

public static java.lang.String stringValue(java.lang.Object value,
                                           boolean trim)
Evaluates the given object as a String and trims it if the trim flag is true.

Parameters:
value - an object to interpret as a String
Returns:
the String value implied by the given object as returned by the toString() method, or "null" if the object is null.

stringValue

public static java.lang.String stringValue(java.lang.Object value)
Evaluates the given object as a String.

Parameters:
value - an object to interpret as a String
Returns:
the String value implied by the given object as returned by the toString() method, or "null" if the object is null.

getNumericType

public static int getNumericType(java.lang.Object value)
Returns a constant from the NumericTypes interface that represents the numeric type of the given object.

Parameters:
value - an object that needs to be interpreted as a number
Returns:
the appropriate constant from the NumericTypes interface

convertValue

public static java.lang.Object convertValue(java.lang.Object value,
                                            java.lang.Class toType)
Returns the value converted numerically to the given class type

This method also detects when arrays are being converted and converts the components of one array to the type of the other.

Parameters:
value - an object to be converted to the given type
toType - class type to be converted to
Returns:
converted value of the type given, or value if the value cannot be converted to the given type.

getNumericType

public static int getNumericType(java.lang.Object v1,
                                 java.lang.Object v2)
Returns the constant from the NumericTypes interface that best expresses the type of a numeric operation on the two given objects.

Parameters:
v1 - one argument to a numeric operator
v2 - the other argument
Returns:
the appropriate constant from the NumericTypes interface

getNumericType

public static int getNumericType(int t1,
                                 int t2,
                                 boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given types.

Parameters:
t1 - type of one argument to an operator
t2 - type of the other argument
canBeNonNumeric - whether the operator can be interpreted as non-numeric
Returns:
the appropriate constant from the NumericTypes interface

getNumericType

public static int getNumericType(java.lang.Object v1,
                                 java.lang.Object v2,
                                 boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface that best expresses the type of an operation, which can be either numeric or not, on the two given objects.

Parameters:
v1 - one argument to an operator
v2 - the other argument
canBeNonNumeric - whether the operator can be interpreted as non-numeric
Returns:
the appropriate constant from the NumericTypes interface

newInteger

public static java.lang.Number newInteger(int type,
                                          long value)
Returns a new Number object of an appropriate type to hold the given integer value. The type of the returned object is consistent with the given type argument, which is a constant from the NumericTypes interface.

Parameters:
type - the nominal numeric type of the result, a constant from the NumericTypes interface
value - the integer value to convert to a Number object
Returns:
a Number object with the given value, of type implied by the type argument

newReal

public static java.lang.Number newReal(int type,
                                       double value)
Returns a new Number object of an appropriate type to hold the given real value. The type of the returned object is always either Float or Double, and is only Float if the given type tag (a constant from the NumericTypes interface) is FLOAT.

Parameters:
type - the nominal numeric type of the result, a constant from the NumericTypes interface
value - the real value to convert to a Number object
Returns:
a Number object with the given value, of type implied by the type argument

binaryOr

public static java.lang.Object binaryOr(java.lang.Object v1,
                                        java.lang.Object v2)

binaryXor

public static java.lang.Object binaryXor(java.lang.Object v1,
                                         java.lang.Object v2)

binaryAnd

public static java.lang.Object binaryAnd(java.lang.Object v1,
                                         java.lang.Object v2)

equal

public static boolean equal(java.lang.Object v1,
                            java.lang.Object v2)

less

public static boolean less(java.lang.Object v1,
                           java.lang.Object v2)

greater

public static boolean greater(java.lang.Object v1,
                              java.lang.Object v2)

in

public static boolean in(java.lang.Object v1,
                         java.lang.Object v2)
                  throws OgnlException
Throws:
OgnlException

shiftLeft

public static java.lang.Object shiftLeft(java.lang.Object v1,
                                         java.lang.Object v2)

shiftRight

public static java.lang.Object shiftRight(java.lang.Object v1,
                                          java.lang.Object v2)

unsignedShiftRight

public static java.lang.Object unsignedShiftRight(java.lang.Object v1,
                                                  java.lang.Object v2)

add

public static java.lang.Object add(java.lang.Object v1,
                                   java.lang.Object v2)

subtract

public static java.lang.Object subtract(java.lang.Object v1,
                                        java.lang.Object v2)

multiply

public static java.lang.Object multiply(java.lang.Object v1,
                                        java.lang.Object v2)

divide

public static java.lang.Object divide(java.lang.Object v1,
                                      java.lang.Object v2)

remainder

public static java.lang.Object remainder(java.lang.Object v1,
                                         java.lang.Object v2)

negate

public static java.lang.Object negate(java.lang.Object value)

bitNegate

public static java.lang.Object bitNegate(java.lang.Object value)


Copyright © 2010. All Rights Reserved.