Class FunctionImpl

    • 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.
    • 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 Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • 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
      • equals

        public boolean equals​(Object obj)
        Overrides:
        equals in class Object