2.17.2: 2011-06-17

net.sf.basedb.util.jep
Class RawFunction

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

public class RawFunction
extends Object
implements JepExpressionFunction

A JEP function class that adds a raw(string) function to a JEP expression parser. The function will look up the value of the raw data property with the given name. For example: raw('ch1FgMean') - raw('ch1BgMean')

To be able to use this function it must be registered with the JEP parser and, before the expression is evaluated, a raw data object must be set. For example we can evaluate an expression for every raw data object in a raw bioassay:

DbControl dc = ...
RawBioAssay assay = ...
String expression = "raw('ch1FgMean') - raw('ch1BgMean')";
RawFunction raw = new RawFunction(assay.getRawDataType());
JEP jep = JepUtil.newJep(expression, raw);
DataResultIterator<RawData> result = 
   assay.getRawData().iterate(dc);
while (result.hasNext())
{
   raw.setRawData(result.next());
   double value = jep.getValue();
   // Do something with the value
}
result.close();

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  boolean allowUse
           
private  DbControl dc
           
private  Metadata<RawData> metaData
           
private  int numParameters
           
private  RawData rawData
           
private  RawDataType rawDataType
           
 
Constructor Summary
RawFunction(boolean allowUse)
          Create a new instance of this function.
RawFunction(DbControl dc, RawDataType rawDataType, boolean allowUse)
          Create a new instance of this function working with raw data of the specified raw data type.
 
Method Summary
 boolean checkNumberOfParameters(int n)
           
 String getFunctionName()
          Get the name of this function.
 int getNumberOfParameters()
           
 RawData getRawData()
          Get the current raw data object used when evaluating the JEP expression.
 RawDataType getRawDataType()
          Get the raw data type this function uses.
 Object raw(String propertyName)
          Get the value of the specified property of the current raw data object.
 void run(Stack stack)
           
 void setCurNumberOfParameters(int n)
           
 void setRawData(RawData rawData)
          Set a new raw data object that will be used the next time the JEP expression is evaluated.
 Expression toExpression(Node node)
          Use the Dynamic.rawData(String) method to create an expression referencing a raw data property.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rawDataType

private final RawDataType rawDataType

metaData

private final Metadata<RawData> metaData

dc

private final DbControl dc

allowUse

private final boolean allowUse

numParameters

private int numParameters

rawData

private RawData rawData
Constructor Detail

RawFunction

public RawFunction(boolean allowUse)
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.

See Also:
Jep.formulaToExpression(String, JepFunction[])

RawFunction

public RawFunction(DbControl dc,
                   RawDataType rawDataType,
                   boolean allowUse)
Create a new instance of this function working with raw data of the specified raw data type.

Parameters:
rawDataType - The type of raw data this function uses
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 "raw"
See Also:
JEP.addFunction(String, PostfixMathCommandI)

toExpression

public Expression toExpression(Node node)
Use the Dynamic.rawData(String) method to create an expression referencing a raw data property.

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

getRawDataType

public RawDataType getRawDataType()
Get the raw data type this function uses.


setRawData

public void setRawData(RawData rawData)
Set a new raw data object that will be used the next time the JEP expression is evaluated.

Parameters:
rawData - The raw data object to use

getRawData

public RawData getRawData()
Get the current raw data object used when evaluating the JEP expression.


raw

public Object raw(String propertyName)
           throws ParseException
Get the value of the specified property of the current raw data object. This method uses Hibernate metadata to find the value.

Parameters:
propertyName - The name of the raw data property. Null is not allowed.
Returns:
The value as a java.lang.Object
Throws:
ParseException - If required arguments is null

2.17.2: 2011-06-17