Code of the function library that has one function calculating cube:
import java.util.Collection;
import com.bas.shared.data.FunctionDescription;
import com.bas.shared.functions.AbstractFunctionLibrary;
import com.bas.shared.functions.IFunctionLibrary;
import com.bas.shared.ruleparser.INodeHelper;
import com.bas.shared.ruleparser.ParseException;
import com.bas.utils.TypeUtils;
public class CubeFunctionLibrary extends AbstractFunctionLibrary implements IFunctionLibrary
{
// supported functions
public static final String CUBE_FUNC = "CUBE";
public CubeFunctionLibrary ()
{
super();
}
/**
* @see com.bas.shared.functions.IFunctionLibrary#getName()
*/
public String getName()
{
return "Cube Library";
}
/**
* @see com.bas.shared.functions.IFunctionLibrary#hasFunction(java.lang.String, int)
*/
public boolean hasFunction (String functionName, int paramNmb)
{
return functionName.equalsIgnoreCase (CUBE_FUNC);
}
/**
* @see com.bas.shared.functions.IFunctionLibrary#getAvailableFunctions()
*/
public FunctionDescription[] getAvailableFunctions ()
{
FunctionDescription [] results = new FunctionDescription []
{
new FunctionDescription (CUBE_FUNC, "Calculates cube"),
};
return results;
}
/**
* @see com.bas.shared.functions.IFunctionLibrary#calculate(java.lang.String, java.lang.Object[], com.bas.shared.ruleparser.INodeHelper)
*/
public Object calculate (
String functionName,
Object[] params,
INodeHelper helper)
throws ParseException
{
if (params == null)
return null;
if (functionName.equals(CUBE_FUNC))
{
Double d = TypeUtils.convertToDouble (params[0]);
double v = d.doubleValue ();
return new Double (d * d * d);
}
return null;
}
/**
* @see com.bas.shared.functions.IFunctionLibrary#getTypeClass(java.lang.String, java.util.Collection)
*/
public Class getTypeClass (String functionName, Collection parameters)
{
return Double.class;
}
}