Package org.geotools.filter
Class FunctionImpl
- Object
-
- ExpressionAbstract
-
- FunctionImpl
-
- All Implemented Interfaces:
Expression
,Function
- Direct Known Subclasses:
AbstractHSLFunction
,BoundedByFunction
,Collection_NearestFunction
,ConcatenateFunction
,ConstrastFunction
,CSSFunction
,DefaultIfNullFunction
,ExponentialFunction
,FontAlternativesFunction
,FootprintsTransformation
,GrayscaleFunction
,HSLFunction
,InternalVolatileFunction
,MapBoxFontBaseNameFunction
,MapBoxFontStyleFunction
,MapBoxFontWeightFunction
,MBExpression
,MixFunction
,ShadeFunction
,SpinFunction
,StringInFunction
,StringTransformFunction
,TintFunction
public class FunctionImpl extends ExpressionAbstract implements Function
Default implementation of a Function; you may extend this class to implement specific functionality.- Author:
- Cory Horner, Refractions Research
-
-
Field Summary
Fields Modifier and Type Field Description protected FunctionName
functionName
FunctionName description for FilterCapabilities, may be provided by subclass in constructor, or will be lazily created based on name and number of arguments.-
Fields inherited from interface Expression
NIL
-
-
Constructor Summary
Constructors Constructor Description FunctionImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
accept(ExpressionVisitor visitor, Object extraData)
Accepts a visitor.protected LinkedHashMap<String,Object>
dispatchArguments(Object obj)
Gathers up and groups the parameters to the function based on the declared parameters.boolean
equals(Object obj)
Object
evaluate(Object object)
Default implementation simply returns the fallbackValue.protected static FunctionName
functionName(String name, String ret, String... args)
Convenience method for creating a function name from a set of strings describing the return and argument parameters of the function.Literal
getFallbackValue()
The value of the fallbackValue attribute is used as a default value, if the SE implementation does not support the function.FunctionName
getFunctionName()
Access to the FunctionName description as used in a FilterCapabilities document.String
getName()
Gets the name of this function.List<Expression>
getParameters()
Returns the function parameters.protected Object
getParameterValue(Object object, int argumentIndex)
Evaluates a specific argument against the context, checking for required values and proper conversion.protected Object
getParameterValue(Object object, int argumentIndex, Object defaultValue)
Evaluates a specific argument against the context, checking for required values and proper conversion.int
hashCode()
void
setFallbackValue(Literal fallbackValue)
void
setName(String name)
Sets the name of the function.void
setParameters(List<Expression> params)
Sets the function parameters.String
toString()
Creates a String representation of this Function with the function name and the arguments.-
Methods inherited from class ExpressionAbstract
evaluate
-
Methods inherited from interface Expression
evaluate
-
-
-
-
Field Detail
-
functionName
protected FunctionName functionName
FunctionName description for FilterCapabilities, may be provided by subclass in constructor, or will be lazily created based on name and number of arguments.
-
-
Method Detail
-
getName
public String getName()
Gets the name of this function.
-
getFunctionName
public FunctionName getFunctionName()
Description copied from interface:Function
Access to the FunctionName description as used in a FilterCapabilities document.- Specified by:
getFunctionName
in interfaceFunction
- Returns:
- FunctionName description, if available.
-
setName
public void setName(String name)
Sets the name of the function.
-
getParameters
public List<Expression> getParameters()
Returns the function parameters.- Specified by:
getParameters
in interfaceFunction
-
evaluate
public Object evaluate(Object object)
Default implementation simply returns the fallbackValue.Please override this method to produce a value based on the provided arguments.
- Specified by:
evaluate
in interfaceExpression
- Overrides:
evaluate
in classExpressionAbstract
- Parameters:
object
- Object being evaluated; often a Feature- Returns:
- value for the provided object
-
setParameters
public void setParameters(List<Expression> params)
Sets the function parameters.
-
setFallbackValue
public void setFallbackValue(Literal fallbackValue)
-
getFallbackValue
public Literal getFallbackValue()
Description copied from interface:Function
The value of the fallbackValue attribute is used as a default value, if the SE implementation does not support the function. If the implementation supports the function, then the result value is determined by executing the function.- Specified by:
getFallbackValue
in interfaceFunction
- Returns:
- Optional literal to use if an implementation for this function is not available.
-
accept
public Object accept(ExpressionVisitor visitor, Object extraData)
Description copied from interface:Expression
Accepts a visitor. Subclasses must implement with a method whose content is the following:return visitor.visit(this, extraData);
- Specified by:
accept
in interfaceExpression
-
toString
public String toString()
Creates a String representation of this Function with the function name and the arguments. The String created should be good for most subclasses
-
getParameterValue
protected Object getParameterValue(Object object, int argumentIndex)
Evaluates a specific argument against the context, checking for required values and proper conversion.
-
getParameterValue
protected Object getParameterValue(Object object, int argumentIndex, Object defaultValue)
Evaluates a specific argument against the context, checking for required values and proper conversion. This version accepts a default value
-
dispatchArguments
protected LinkedHashMap<String,Object> dispatchArguments(Object obj)
Gathers up and groups the parameters to the function based on the declared parameters.This method calls
#validateArguments()
which enforces java style argument conventions for multi valued parameters. Basically enforcing that only the last argument in a function can be variable.
-
functionName
protected static FunctionName functionName(String name, String ret, String... args)
Convenience method for creating a function name from a set of strings describing the return and argument parameters of the function.The value of ret and each value of args is a string of the following structure:
name[:type[:min,max]]
Where:- name is the name of the parameter
- type is type (class name) of the parameter
- min is the minimum number of occurrences
- max is the maximum number of occurrences
- foo
- foo:String
- foo:java.lang.Integer
- foo:Polygon:1,1
- foo:Polygon:1,
- foo:Polygon:,
- java.lang
- org.locationtech.jts.geom
- Parameters:
name
- The name of the functionret
- The parameter specification of the return of the functionargs
- The argument specifications of the function arguments
-
-