ABLE 2.0.0 07/02/2003 10:25:01

com.ibm.able.data
Class AbleNewObjectLiteral

java.lang.Object
  |
  +--com.ibm.able.data.AbleLiteral
        |
        +--com.ibm.able.data.AbleNewObjectLiteral
All Implemented Interfaces:
AbleRd, java.io.Serializable

public class AbleNewObjectLiteral
extends AbleLiteral

This class dynamically creates a new instance of an object by performing a method invocation to a constructor on the class. Each time this class is called, it will return a new object. Instances of this class are used to create initial values on AbleVariables and to dynamically create instances of objects as part of rules in AbleRuleSets.

The data type name and corresponding data type class name must be provided on the constructor of this class.

See Also:
Serialized Form

Field Summary
protected  java.util.Vector myArgs
          The arguments to the constructor (A vector of AbleRd objects)
protected  AbleDataContext myContext
           
protected  java.lang.reflect.Constructor myCtor
          The constructor we call to create the new object
protected  java.lang.String myDataType
          The data type.
protected  java.lang.String myDataTypeClassName
          The data type class name.
protected  AbleRd myIndexExpression
          The array index expression (if any).
 
Constructor Summary
AbleNewObjectLiteral(AbleDataContext theContext, java.lang.String theDataType, java.lang.String theDataTypeClassName, java.util.Vector theArgs, AbleRd theIndexExpression)
          Create a new Able new object literal with the specified information.
AbleNewObjectLiteral(AbleNewObjectLiteral theLiteral, java.util.Vector theArgs, AbleRd theIndexExpression)
          Create a copy of this method literal with replacement args
AbleNewObjectLiteral(java.lang.String theDataType, java.lang.String theDataTypeClassName, java.util.Vector theArgs, AbleRd theIndexExpression)
          Create a new Able new object literal with the specified information.
 
Method Summary
 java.lang.String arlCRdString()
          Return a formal ARL "clause read" string that describes this data object.
 boolean cmpEq(AbleRd theRhs)
          Comparison, equal to: compare the current value of this data object to the current value of theRhs.
 boolean cmpGt(AbleRd theRhs)
          Comparison, greater than: compare the current value of this data object to the current value of theRhs.
 boolean cmpGtEq(AbleRd theRhs)
          Comparison, greater than or equal to: compare the current value of this data object to the current value of theRhs.
 double cmpIs(AbleRd theRhs)
          Comparison, fuzzy equal to: compare the current value of this data object to the current value of theRhs.
 boolean cmpLt(AbleRd theRhs)
          Comparison, less than: compare the current value of this data object to the current value of theRhs.
 boolean cmpLtEq(AbleRd theRhs)
          Comparison, less than or equal to: compare the current value of this data object to the current value of theRhs.
 boolean cmpNeq(AbleRd theRhs)
          Comparison, not equal to: compare the current value of this data object to the current value of theRhs.
 java.lang.Object createInstance()
          Create the new object instance
 void ctorBuiltInHelper()
           
protected  java.lang.Object[] cvtArgs(java.util.Vector theArgs)
           
protected  java.lang.Class[] getArgClasses(java.util.Vector theArgs)
           
 boolean getBooleanValue()
          Retrieve the value of this data object as a boolean value.
 int getDataType()
          Retrieve the data type of this data object.
 java.lang.Class getDataTypeClass()
          Retrieve the actual class of this object's underlying data type.
 java.lang.String getDataTypeClassName()
          Retrieve the name of the class of this object's underlying data type.
 AbleFuzzySet getFuzzyValue()
          Retrieve the value of this data object as a fuzzy value.
 java.lang.Object getGenericValue()
          Retrieve the value of this data object as an Object.
 double getNumericValue()
          Retrieve the value of this data object as a numeric value.
 java.util.BitSet getReferents()
          Retrieve the Ids of the variables to which this data object refers, if any.
 java.lang.Class getReturnType()
          Get the data type of the value returned from the associated method invocation.
 java.lang.String getStringValue()
          Retrieve the value of this data object as a string value.
 java.lang.String getTemplateString(java.util.Vector theTemplateVars)
          Retrieve a text format string for use by rule templates.
 AbleLiteral getValue()
          Retrieve the value of this data object as a literal.
 java.util.HashSet getVariableReferences()
          Retrieve the set of variables (if any) referenced by this expression (and subexpressions)
 boolean isConstant()
          Returns true if this AbleRd object is a constant value false, if it does not.
protected  void resolveConstructor(java.lang.Object[] theArgs)
          Find the constructor to use to create new instances.
 java.lang.String traceString(int theTraceStringFlavor)
          Retrieve a string describing (the contents of) the object.
 java.lang.String xmlCRdString()
          Return a formal XML "clause read" string that describes this data object.
 
Methods inherited from class com.ibm.able.data.AbleLiteral
bitwiseAND, bitwiseNOT, bitwiseOR, bitwiseShiftLeft, bitwiseShiftRight, bitwiseShiftRightZeroFill, bitwiseXOR, compDivide, compMinus, compModulo, compMultiply, compPlus, compUnaryMinus, Copyright, getDataTypeAsString, getReferent, logicalAND, logicalNOT, logicalOR, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

myDataType

protected java.lang.String myDataType
The data type.

The name of the data type.


myDataTypeClassName

protected java.lang.String myDataTypeClassName
The data type class name. Note: names ending with "[]" indicate that an array of myArgs length should be created (myArgs are the array initializer)

The fully-qualified class name of the data type.


myArgs

protected java.util.Vector myArgs
The arguments to the constructor (A vector of AbleRd objects)

myIndexExpression

protected AbleRd myIndexExpression
The array index expression (if any). Note: non-null value indicates that an array of myIndexExpression length should be created.

myContext

protected AbleDataContext myContext

myCtor

protected transient java.lang.reflect.Constructor myCtor
The constructor we call to create the new object
Constructor Detail

AbleNewObjectLiteral

public AbleNewObjectLiteral(java.lang.String theDataType,
                            java.lang.String theDataTypeClassName,
                            java.util.Vector theArgs,
                            AbleRd theIndexExpression)
                     throws AbleDataException
Create a new Able new object literal with the specified information. The initial value of this literal is null, and it remains null until this literal is requested to give up a value (create a new instance of the specified class At that time, the appropriate constructor is called to produce a value. Each time a value is requested from this literal, the constructor is called again; be aware that the current value may thus change from time to time.
Parameters:
theDataType - The name of the data type.

theDataTypeClassName - The fully-qualified .class name of the data type.

theArgs - A list of AbleRd objects whose runtime values will be passed to the constructor as arguments. Each converted argument will be a Boolean, a Double, a String, or an Object, depending on the type of each AbleRd object in the argument list. The list can be empty, but it must never be null.

theIndexExpression - An index expression object for new array literals

AbleNewObjectLiteral

public AbleNewObjectLiteral(AbleDataContext theContext,
                            java.lang.String theDataType,
                            java.lang.String theDataTypeClassName,
                            java.util.Vector theArgs,
                            AbleRd theIndexExpression)
                     throws AbleDataException
Create a new Able new object literal with the specified information. The initial value of this literal is null, and it remains null until this literal is requested to give up a value (create a new instance of the specified class At that time, the appropriate constructor is called to produce a value. Each time a value is requested from this literal, the constructor is called again; be aware that the current value may thus change from time to time.
Parameters:
theRuleSet - The ruleset object (used for inner classes only)

theDataType - The name of the data type.

theDataTypeClassName - The fully-qualified .class name of the data type.

theArgs - A list of AbleRd objects whose runtime values will be passed to the constructor as arguments. Each converted argument will be a Boolean, a Double, a String, or an Object, depending on the type of each AbleRd object in the argument list. The list can be empty, but it must never be null.

theIndexExpression - An index expression for new array literals

AbleNewObjectLiteral

public AbleNewObjectLiteral(AbleNewObjectLiteral theLiteral,
                            java.util.Vector theArgs,
                            AbleRd theIndexExpression)
                     throws AbleDataException
Create a copy of this method literal with replacement args
Method Detail

ctorBuiltInHelper

public void ctorBuiltInHelper()

getValue

public AbleLiteral getValue()
                     throws AbleDataException
Retrieve the value of this data object as a literal.
Overrides:
getValue in class AbleLiteral
Returns:
An AbleLiteral object.
Throws:
AbleDataException - If the value of this object cannot be represented as a literal.

createInstance

public java.lang.Object createInstance()
                                throws AbleDataException
Create the new object instance
Returns:
An AbleLiteral object.
Throws:
AbleDataException - If the value of this object cannot be represented as a literal.

resolveConstructor

protected void resolveConstructor(java.lang.Object[] theArgs)
                           throws AbleDataException
Find the constructor to use to create new instances.
Parameters:
theArgs - The dereferenced argument objects (returned by cvtArgs())
Throws:
AbleDataException - If the value of this object cannot be represented as a literal.

getDataTypeClass

public java.lang.Class getDataTypeClass()
Description copied from class: AbleLiteral
Retrieve the actual class of this object's underlying data type.
Overrides:
getDataTypeClass in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Returns:
The class of the underlying data type.

getDataTypeClassName

public java.lang.String getDataTypeClassName()
Description copied from class: AbleLiteral
Retrieve the name of the class of this object's underlying data type.
Overrides:
getDataTypeClassName in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Returns:
A String that is the name of the class of the underlying data type.

getBooleanValue

public boolean getBooleanValue()
                        throws AbleDataException
Retrieve the value of this data object as a boolean value.
Overrides:
getBooleanValue in class AbleLiteral
Returns:
A boolean, if the value of this object can be represented as a boolean value.
Throws:
AbleDataException - If the value of this object cannot be represented as a boolean value.

getFuzzyValue

public AbleFuzzySet getFuzzyValue()
                           throws AbleDataException
Retrieve the value of this data object as a fuzzy value.
Overrides:
getFuzzyValue in class AbleLiteral
Returns:
A fuzzy set, if the value of this object can be represented as a fuzzy value. This method always throws an exception.
Throws:
AbleDataException - If the value of this object cannot be represented as a fuzzy value.

getGenericValue

public java.lang.Object getGenericValue()
                                 throws AbleDataException
Retrieve the value of this data object as an Object.
Overrides:
getGenericValue in class AbleLiteral
Returns:
Any type of object.
Throws:
AbleDataException - If the value of this object cannot be represented as an Object.

getNumericValue

public double getNumericValue()
                       throws AbleDataException
Retrieve the value of this data object as a numeric value.
Overrides:
getNumericValue in class AbleLiteral
Returns:
A double, if the value of this object can be represented as a numeric value.
Throws:
AbleDataException - If the value of this object cannot be represented as a numeric value.

getStringValue

public java.lang.String getStringValue()
                                throws AbleDataException
Retrieve the value of this data object as a string value.
Overrides:
getStringValue in class AbleLiteral
Returns:
A String, if the value of this object can be represented as a string value.
Throws:
AbleDataException - If the value of this object cannot be represented as a string value.

cmpEq

public boolean cmpEq(AbleRd theRhs)
              throws AbleDataException
Comparison, equal to: compare the current value of this data object to the current value of theRhs.

"==" is used for numeric and boolean compares; equals() is used for Object compares; and Collator.equals() is used for String compares.

Overrides:
cmpEq in class AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison.

Returns:
true, if this data object is equal to theRhs; false, otherwise.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

cmpGt

public boolean cmpGt(AbleRd theRhs)
              throws AbleDataException
Description copied from class: AbleLiteral
Comparison, greater than: compare the current value of this data object to the current value of theRhs.

">" is used for numeric compares; Collator.compare() is used for String compares. Use of other data types on the left-hand side causes an exception.

Overrides:
cmpGt in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison.

Returns:
true, if this data object is greater than theRhs; false, otherwise.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

cmpGtEq

public boolean cmpGtEq(AbleRd theRhs)
                throws AbleDataException
Description copied from class: AbleLiteral
Comparison, greater than or equal to: compare the current value of this data object to the current value of theRhs.

">=" is used for numeric compares; Collator.compare() is used for String compares. Use of other data types on the left-hand side causes an exception.

Overrides:
cmpGtEq in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison.

Returns:
true, if this data object is greater than or equal to theRhs; false, otherwise.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

cmpIs

public double cmpIs(AbleRd theRhs)
             throws AbleDataException
Description copied from class: AbleLiteral
Comparison, fuzzy equal to: compare the current value of this data object to the current value of theRhs.

Fuzzy membership is used for the compare.

Overrides:
cmpIs in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison. This must be a fuzzy set.

Returns:
The membership of the fuzzy variable's crisp value within the fuzzy ste.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

cmpLt

public boolean cmpLt(AbleRd theRhs)
              throws AbleDataException
Description copied from class: AbleLiteral
Comparison, less than: compare the current value of this data object to the current value of theRhs.

"<" is used for numeric compares; Collator.compare() is used for String compares. Use of other data types on the left-hand side causes an exception.

Overrides:
cmpLt in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison.

Returns:
true, if this data object is less than theRhs; false, otherwise.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

cmpLtEq

public boolean cmpLtEq(AbleRd theRhs)
                throws AbleDataException
Description copied from class: AbleLiteral
Comparison, less than or equal to: compare the current value of this data object to the current value of theRhs.

"<=" is used for numeric compares; Collator.compare() is used for String compares. Use of other data types on the left-hand side causes an exception.

Overrides:
cmpLtEq in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison.

Returns:
true, if this data object is less than or equal to theRhs; false, otherwise.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

cmpNeq

public boolean cmpNeq(AbleRd theRhs)
               throws AbleDataException
Description copied from class: AbleLiteral
Comparison, not equal to: compare the current value of this data object to the current value of theRhs.

"!=" is used for numeric and boolean compares; ! equals() is used for Object compares; and ! Collator.equals() is used for String compares.

Overrides:
cmpNeq in class AbleLiteral
Following copied from class: com.ibm.able.data.AbleLiteral
Parameters:
theRhs - The right-hand side of the comparison.

Returns:
true, if this data object is not equal to theRhs; false, otherwise.
Throws:
AbleDataException - If the right-hand side cannot be converted (if necessary) and compared to this data object.

isConstant

public boolean isConstant()
Description copied from interface: AbleRd
Returns true if this AbleRd object is a constant value false, if it does not.
Overrides:
isConstant in class AbleLiteral

arlCRdString

public java.lang.String arlCRdString()
Return a formal ARL "clause read" string that describes this data object.
Overrides:
arlCRdString in class AbleLiteral
Returns:
A String describing the data object in formal rule language.

getTemplateString

public java.lang.String getTemplateString(java.util.Vector theTemplateVars)
Retrieve a text format string for use by rule templates. The string contains "{n}" strings, where the index 'n' corresponds to the template variables defined in the rule template. This string is based on the standard arlString() representation of the rule. After replacement of the template variable values, the resulting string must be a valid ARL format string that can be parsed.
Overrides:
getTemplateString in class AbleLiteral
Parameters:
theTemplateVars - An ordered list of template variables referenced by this rule.
Returns:
A Text format string used to create a new rule instance.

xmlCRdString

public java.lang.String xmlCRdString()
Return a formal XML "clause read" string that describes this data object.
Overrides:
xmlCRdString in class AbleLiteral
Returns:
A String describing the data object in XML.

getReferents

public java.util.BitSet getReferents()
Retrieve the Ids of the variables to which this data object refers, if any. Must be overriden by subclasses which can refer to variables.
Overrides:
getReferents in class AbleLiteral
Returns:
The Ids of the variables to which this data object refers, or AbleData.VarIdNull if the data object is a literal and therefore refers to no variable.

getReturnType

public java.lang.Class getReturnType()
                              throws java.rmi.RemoteException
Get the data type of the value returned from the associated method invocation.
Returns:
The class representing the return type of the method

getArgClasses

protected java.lang.Class[] getArgClasses(java.util.Vector theArgs)
                                   throws AbleDataException

cvtArgs

protected java.lang.Object[] cvtArgs(java.util.Vector theArgs)
                              throws AbleDataException

traceString

public java.lang.String traceString(int theTraceStringFlavor)
Retrieve a string describing (the contents of) the object.
Overrides:
traceString in class AbleLiteral
Parameters:
theFlavor - An Able.TraceStringFlavor value.

Returns:
A String containing the current contents of the object.

getDataType

public int getDataType()
Description copied from class: AbleLiteral
Retrieve the data type of this data object.
Overrides:
getDataType in class AbleLiteral
See Also:
AbleRd.getDataType()

getVariableReferences

public java.util.HashSet getVariableReferences()
Retrieve the set of variables (if any) referenced by this expression (and subexpressions)

ABLE 2.0.0 07/02/2003 10:25:01

(C) Copyright IBM Corporation 1999, 2003