org.pentaho.reporting.libraries.formula.lvalues
Class FormulaFunction

java.lang.Object
  extended by org.pentaho.reporting.libraries.formula.lvalues.AbstractLValue
      extended by org.pentaho.reporting.libraries.formula.lvalues.FormulaFunction
All Implemented Interfaces:
Serializable, Cloneable, LValue

public class FormulaFunction
extends AbstractLValue

A function. Formulas consist of functions, references or static values, which are connected by operators.

Functions always have a cannonical name, which must be unique and which identifies the function. Functions can have a list of parameters. The number of parameters can vary, and not all parameters need to be filled.

Functions can have required and optional parameters. Mixing required and optional parameters is not allowed. Optional parameters cannot be ommited, unless they are the last parameter in the list.

This class provides the necessary wrapper functionality to fill in the parameters.

Author:
Thomas Morgner
See Also:
Serialized Form

Constructor Summary
FormulaFunction(String functionName, LValue[] parameters)
           
FormulaFunction(String functionName, LValue[] parameters, ParsePosition parsePosition)
           
 
Method Summary
 Object clone()
           
 TypeValuePair evaluate()
           
 LValue[] getChildValues()
          Returns any dependent lvalues (parameters and operands, mostly).
 Function getFunction()
          Returns the initialized function.
 String getFunctionName()
          Returns the function's name.
 FunctionDescription getMetaData()
          Returns the function's meta-data.
 void initialize(FormulaContext context)
           
 boolean isConstant()
          Checks whether the LValue is constant.
 String toString()
           
 
Methods inherited from class org.pentaho.reporting.libraries.formula.lvalues.AbstractLValue
getContext, getParsePosition, getValueType, setParsePosition
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FormulaFunction

public FormulaFunction(String functionName,
                       LValue[] parameters,
                       ParsePosition parsePosition)

FormulaFunction

public FormulaFunction(String functionName,
                       LValue[] parameters)
Method Detail

initialize

public void initialize(FormulaContext context)
                throws EvaluationException
Specified by:
initialize in interface LValue
Overrides:
initialize in class AbstractLValue
Throws:
EvaluationException

getFunctionName

public String getFunctionName()
Returns the function's name. This is the normalized name and may not be suitable for the user. Query the function's metadata to retrieve a display-name.

Returns:
the function's name.

getFunction

public Function getFunction()
Returns the initialized function. Be aware that this method will return null if this LValue instance has not yet been initialized.

Returns:
the function instance or null, if the FormulaFunction instance has not yet been initialized.

getMetaData

public FunctionDescription getMetaData()
Returns the function's meta-data. Be aware that this method will return null if this LValue instance has not yet been initialized.

Returns:
the function description instance or null, if the FormulaFunction instance has not yet been initialized.

clone

public Object clone()
             throws CloneNotSupportedException
Specified by:
clone in interface LValue
Overrides:
clone in class AbstractLValue
Throws:
CloneNotSupportedException

evaluate

public TypeValuePair evaluate()
                       throws EvaluationException
Throws:
EvaluationException

getChildValues

public LValue[] getChildValues()
Returns any dependent lvalues (parameters and operands, mostly).

Specified by:
getChildValues in interface LValue
Overrides:
getChildValues in class AbstractLValue
Returns:

toString

public String toString()
Overrides:
toString in class Object

isConstant

public boolean isConstant()
Checks whether the LValue is constant. Constant lvalues always return the same value.

Returns:
true, if the function will always return the same value.