ariba.util.expr
Class ExprOps

java.lang.Object
  extended by ariba.util.expr.ExprOps
All Implemented Interfaces:
NumericTypes

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

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

Author:
Luke Blanshard (blanshlu@netscape.net), Drew Davidson (drew@ognl.org)

Field Summary
 
Fields inherited from interface ariba.util.fieldtype.NumericTypes
BIGDEC, BIGINT, BOOL, BYTE, CHAR, CUSTOMNUMERICTYPE, DOUBLE, FLOAT, INT, LONG, MIN_REAL_TYPE, NONNUMERIC, NULL, SHORT
 
Constructor Summary
ExprOps()
           
 
Method Summary
static java.lang.Object add(java.lang.Object v1, java.lang.Object v2, java.lang.String v1Type, java.lang.String v2Type)
           
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 concatenate(java.lang.Object v1, java.lang.Object v2)
           
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, java.lang.String v1Type)
           
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 ArithmeticOperations getArithmeticOperations(java.lang.String type)
          Returns the ArithmeticOperations for the operand of the given type.
static ArithmeticOperations getArithmeticOperations(java.lang.String type1, java.lang.String type2)
          Returns the ArithmeticOperations for the 2 operands of the given type1 and type2.
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 int getNumericType(java.lang.Object v1, java.lang.Object v2, java.lang.String type1, java.lang.String type2, boolean canBeNonNumeric)
           
static int getNumericType(java.lang.Object v, java.lang.String type, boolean canBeNonNumeric)
          Returns the constant from the NumericTypes interface for the given value> and fieldType.
static int getNumericTypeForName(java.lang.String typeName)
           
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 isNull(java.lang.Object v1)
           
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, java.lang.String v1Type, java.lang.String v2Type)
           
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 void registerNumericType(java.lang.String typeName)
          Registers the specified type as a non-built-in numeric type.
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, java.lang.String v1Type, java.lang.String v2Type)
           
static java.lang.Object unsignedShiftRight(java.lang.Object v1, java.lang.Object v2)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExprOps

public ExprOps()
Method Detail

registerNumericType

public static void registerNumericType(java.lang.String typeName)
Registers the specified type as a non-built-in numeric type.

Notes:


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:
object1 - First object to compare
object2 - 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

getNumericTypeForName

public static int getNumericTypeForName(java.lang.String typeName)

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

getNumericType

public static int getNumericType(java.lang.Object v,
                                 java.lang.String type,
                                 boolean canBeNonNumeric)
Returns the constant from the NumericTypes interface for the given value> and fieldType.


getNumericType

public static int getNumericType(java.lang.Object v1,
                                 java.lang.Object v2,
                                 java.lang.String type1,
                                 java.lang.String type2,
                                 boolean canBeNonNumeric)

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)

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,
                                   java.lang.String v1Type,
                                   java.lang.String v2Type)

concatenate

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

subtract

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

multiply

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

divide

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

isNull

public static boolean isNull(java.lang.Object v1)

getArithmeticOperations

public static ArithmeticOperations getArithmeticOperations(java.lang.String type1,
                                                           java.lang.String type2)
Returns the ArithmeticOperations for the 2 operands of the given type1 and type2.


getArithmeticOperations

public static ArithmeticOperations getArithmeticOperations(java.lang.String type)
Returns the ArithmeticOperations for the operand of the given type. If there is no ArithmeticOperations for the given type, null is returned.


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)


AribaWeb User Interface Development Framework
Copyright © 2000-2014 Ariba, Inc. All Rights Reserved.