Class FunctionImpl

    • 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.
    • Constructor Detail

      • FunctionImpl

        public FunctionImpl()
    • Method Detail

      • getName

        public String getName()
        Gets the name of this function.
        Specified by:
        getName in interface Function
        Returns:
        the name of the 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 interface Function
        Returns:
        FunctionName description, if available.
      • setName

        public void setName​(String name)
        Sets the name of the function.
      • 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 interface Expression
        Overrides:
        evaluate in class ExpressionAbstract
        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 interface Function
        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 interface Expression
      • 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
        Overrides:
        toString in class Object
      • 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
        Examples:
        • foo
        • foo:String
        • foo:java.lang.Integer
        • foo:Polygon:1,1
        • foo:Polygon:1,
        • foo:Polygon:,
        The type parameter may be specified relative to the following well known packages:
        • java.lang
        • org.locationtech.jts.geom
        Otherwise it must be specified as a full qualified class name.
        Parameters:
        name - The name of the function
        ret - The parameter specification of the return of the function
        args - The argument specifications of the function arguments
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object