/**************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
**************************************************************************************/
package com.espertech.esper.client;
import java.io.Serializable;
/**
* Configuration information for plugging in a custom single-row function.
*/
public class ConfigurationPlugInSingleRowFunction implements Serializable
{
private static final long serialVersionUID = 4096734947283212246L;
private String name;
private String functionClassName;
private String functionMethodName;
private ValueCache valueCache = ValueCache.DISABLED;
private FilterOptimizable filterOptimizable = FilterOptimizable.ENABLED;
private boolean rethrowExceptions = false;
/**
* Ctor.
*/
public ConfigurationPlugInSingleRowFunction()
{
}
/**
* Returns the single-row function name for use in EPL.
* @return single-row function name
*/
public String getName()
{
return name;
}
/**
* Sets the single-row function name for use in EPL.
* @param name to set
*/
public void setName(String name)
{
this.name = name;
}
/**
* Returns the single-row function name.
* @return name
*/
public String getFunctionClassName()
{
return functionClassName;
}
/**
* Sets the single-row function's implementation class name.
* @param functionClassName is the implementation class name
*/
public void setFunctionClassName(String functionClassName)
{
this.functionClassName = functionClassName;
}
/**
* Returns the name of the single-row function.
* @return function name
*/
public String getFunctionMethodName()
{
return functionMethodName;
}
/**
* Sets the name of the single-row function.
* @param functionMethodName single-row function name
*/
public void setFunctionMethodName(String functionMethodName)
{
this.functionMethodName = functionMethodName;
}
/**
* Returns the setting for the cache behavior.
* @return cache behavior
*/
public ValueCache getValueCache() {
return valueCache;
}
/**
* Sets the cache behavior.
* @param valueCache cache behavior
*/
public void setValueCache(ValueCache valueCache) {
this.valueCache = valueCache;
}
/**
* Returns filter optimization settings.
* @return filter optimization settings
*/
public FilterOptimizable getFilterOptimizable() {
return filterOptimizable;
}
/**
* Sets filter optimization settings.
* @param filterOptimizable filter optimization settings
*/
public void setFilterOptimizable(FilterOptimizable filterOptimizable) {
this.filterOptimizable = filterOptimizable;
}
/**
* Returns indicator whether the engine re-throws exceptions
* thrown by the single-row function. The default is false
* therefore the engine by default does not rethrow exceptions.
* @return indicator
*/
public boolean isRethrowExceptions() {
return rethrowExceptions;
}
/**
* Sets indicator whether the engine re-throws exceptions
* thrown by the single-row function. The default is false
* therefore the engine by default does not rethrow exceptions.
* @param rethrowExceptions indicator
*/
public void setRethrowExceptions(boolean rethrowExceptions) {
this.rethrowExceptions = rethrowExceptions;
}
/**
* Enum for single-row function value cache setting.
*/
public enum ValueCache {
/**
* The default, the result of a single-row function is always computed anew.
*/
DISABLED,
/**
* Causes the engine to not actually invoke the single-row function and instead return a cached precomputed value
* when all parameters are constants or there are no parameters.
*/
ENABLED,
/**
* Causes the engine to follow the engine-wide policy as configured for user-defined functions.
*/
CONFIGURED
}
/**
* Controls whether a single-row function is eligible for optimization if it occurs in a filter expression.
*/
public enum FilterOptimizable {
/**
* The engine does not consider the single-row function for optimizing evaluation: The function gets evaluated for each event possibly multiple times.
*/
DISABLED,
/**
* The engine considers the single-row function for optimizing evaluation: The function gets evaluated only once per event.
*/
ENABLED
}
}