2.17.2: 2011-06-17

net.sf.basedb.util.jep
Class ExtraValueFunction

java.lang.Object
  extended by net.sf.basedb.util.jep.ExtraValueFunction
All Implemented Interfaces:
JepExpressionFunction, JepFunction, org.nfunk.jep.function.PostfixMathCommandI

public class ExtraValueFunction
extends Object
implements JepExpressionFunction

A JEP function class that adds a xtra(int) function to a JEP expression parser. The function will look up the value of the extra value with the given ID. For example: xtra(1)

To be able to use this function it must be registered with the JEP parser.

Version:
2.0
Author:
Nicklas
See Also:
Jep, BioAssaySetUtil.createJepExpression(DbControl, String, DynamicQuery)
Last modified
$Date: 2010-04-20 10:02:16 +0200 (Tue, 20 Apr 2010) $

Field Summary
private  BioAssaySet bas
           
private  DbControl dc
           
private  Map<Integer,Integer> extraToIndex
           
private  int numParameters
           
private  SqlResult result
           
 
Constructor Summary
ExtraValueFunction(DbControl dc, BioAssaySet bas)
          Create a new instance of this function.
ExtraValueFunction(DbControl dc, Map<Integer,Integer> extraToIndex)
          Create a new instance of this function which can be used to dynamically evaluate expressions.
 
Method Summary
 boolean checkNumberOfParameters(int n)
           
 String getFunctionName()
          Get the name of this function.
 int getNumberOfParameters()
           
 void run(Stack stack)
           
 void setCurNumberOfParameters(int n)
           
 void setSqlResult(SqlResult result)
          Set a new SqlResult object that will be used the next time the JEP expression is evaluated.
 Expression toExpression(Node node)
          Use the Dynamic.extraValue(ExtraValue) method to create an expression referencing an extra value.
 Object xtra(Integer extraId)
          Get the value of the specified extra value of the current sql result.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dc

private final DbControl dc

extraToIndex

private final Map<Integer,Integer> extraToIndex

bas

private final BioAssaySet bas

numParameters

private int numParameters

result

private SqlResult result
Constructor Detail

ExtraValueFunction

public ExtraValueFunction(DbControl dc,
                          BioAssaySet bas)
Create a new instance of this function. The new instance cannot be used to dynamically evaluate expressions. It should only be used for converting JEP formulas to Expression:s.

Parameters:
dc - DbControl to use when accessing the database
bas - Bioassay set for this extra value function.
See Also:
Jep.formulaToExpression(String, JepFunction[])

ExtraValueFunction

public ExtraValueFunction(DbControl dc,
                          Map<Integer,Integer> extraToIndex)
Create a new instance of this function which can be used to dynamically evaluate expressions.

Parameters:
dc - DbControl to use when accessing the database
extraToIndex - An map from extra value ID to column indexes in the SqlResult
See Also:
setSqlResult(SqlResult)
Method Detail

getFunctionName

public String getFunctionName()
Description copied from interface: JepFunction
Get the name of this function. It is used when registering the function with a JEP parser.

Specified by:
getFunctionName in interface JepFunction
Returns:
The string "xtra"
See Also:
JEP.addFunction(String, PostfixMathCommandI)

toExpression

public Expression toExpression(Node node)
Use the Dynamic.extraValue(ExtraValue) method to create an expression referencing an extra value.

Specified by:
toExpression in interface JepExpressionFunction
Parameters:
node - The node representing this function
Returns:
An Expression object

getNumberOfParameters

public int getNumberOfParameters()
Specified by:
getNumberOfParameters in interface org.nfunk.jep.function.PostfixMathCommandI
Returns:
Always 1

setCurNumberOfParameters

public void setCurNumberOfParameters(int n)
Specified by:
setCurNumberOfParameters in interface org.nfunk.jep.function.PostfixMathCommandI

checkNumberOfParameters

public boolean checkNumberOfParameters(int n)
Specified by:
checkNumberOfParameters in interface org.nfunk.jep.function.PostfixMathCommandI

run

public void run(Stack stack)
         throws ParseException
Specified by:
run in interface org.nfunk.jep.function.PostfixMathCommandI
Throws:
ParseException

setSqlResult

public void setSqlResult(SqlResult result)
Set a new SqlResult object that will be used the next time the JEP expression is evaluated.

Parameters:
result - The result object

xtra

public Object xtra(Integer extraId)
            throws ParseException
Get the value of the specified extra value of the current sql result.

Parameters:
extraId - The extra value ID
Returns:
an extra value as an Object.
Throws:
ParseException - If no result has been specified or if no extra value was found.

2.17.2: 2011-06-17