Class RecodeFunction

Object
RecodeFunction
All Implemented Interfaces:
Expression, Function

public class RecodeFunction extends Object implements Function
This is an implemenation of the Recode function as defined by the OGC Symbology Encoding (SE) 1.1 specification.

The Recode function provides a lookup table facility (think HashTable) where both keys and values can be any Expression. The first parameter to the function specifies the source of the value to lookup, e.g. the name of a feature property as a Literal. The remaining parameters define the lookup table as key:value pairs. Thus there should be an odd number of parameters in total: the lookup value parameter plus the set of key value pairs.

Where the lookup involves String values, comparisons are done case-insensitively.

If the lookup value does not match any of the keys defined this function returns null.

Author:
Johann Sorel (Geomatys), Michael Bedward
  • Field Details

    • NAME

      public static final FunctionName NAME
      Make the instance of FunctionName available in a consistent spot.
  • Constructor Details

    • RecodeFunction

      public RecodeFunction()
    • RecodeFunction

      public RecodeFunction(List<Expression> parameters, Literal fallback)
  • Method Details

    • getName

      public String getName()
      Description copied from interface: Function
      Returns the name of the function to be called. For example, this might be "cos" or "atan2".

      You can use this name to look up the number of required parameters in a FilterCapabilities data structure. For the specific meaning of the required parameters you will need to consult the documentation.

      Specified by:
      getName in interface 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.
    • getParameters

      public List<Expression> getParameters()
      Description copied from interface: Function
      Returns the list subexpressions that will be evaluated to provide the parameters to the function.
      Specified by:
      getParameters in interface Function
    • 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
    • evaluate

      public Object evaluate(Object object)
      Description copied from interface: Expression
      Evaluates the given expression based on the content of the given object.
      Specified by:
      evaluate in interface Expression
      Returns:
      computed value
    • evaluate

      public <T> T evaluate(Object object, Class<T> context)
      Description copied from interface: Expression
      Evaluates the given expressoin based on the content of the given object and the context type.

      The context parameter is used to control the type of the result of the expression. A particular expression may not be able to evaluate to an instance of context. Therefore to be safe calling code should do a null check on the return value of this method, and call Expression.evaluate(Object) if neccessary. Example:

        Object input = ...;
        String result = expression.evaluate( input, String.class );
        if ( result == null ) {
           result = expression.evalute( input ).toString();
        }
        ...
       

      Implementations that can not return a result as an instance of context should return null.

      Specified by:
      evaluate in interface Expression
      Type Parameters:
      T - The type of the returned object.
      Parameters:
      object - The object to evaluate the expression against.
      context - The type of the resulting value of the expression.
      Returns:
      Evaluates the given expression based on the content of the given object an an instance of context.
    • 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.
    • toString

      public String toString()
      Creates a String representation of this Function with the function name and the arguments.
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object