Class RawFunction

java.lang.Object
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: 2015-04-20 11:08:18 +0200 (må, 20 apr 2015) $
  • Field Details

    • 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 Details

    • 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 Details

    • 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