Class CompareFilterImpl

  • All Implemented Interfaces:
    Filter, MultiValuedFilter, FilterType
    Direct Known Subclasses:
    IsBetweenImpl, IsNilImpl, IsNullImpl, MultiCompareFilterImpl

    public abstract class CompareFilterImpl
    extends BinaryComparisonAbstract
    Defines a comparison filter (can be a math comparison or generic equals). This filter implements a comparison - of some sort - between two expressions. The comparison may be a math comparison or a generic equals comparison. If it is a math comparison, only math expressions are allowed; if it is an equals comparison, any expression types are allowed. Note that this comparison does not attempt to restrict its expressions to be meaningful. This means that it considers itself a valid filter as long as the expression comparison returns a valid result. It does no checking to see whether or not the expression comparison is meaningful with regard to checking feature attributes. In other words, this is a valid filter: 52 = 92, even though it will always return the same result and could be simplified away. It is up the the filter creator, therefore, to attempt to simplify/make meaningful filter logic.
    Author:
    Rob Hranac, Vision for New York
    • Method Detail

      • compare

        protected int compare​(Comparable leftObj,
                              Comparable rightObj)
        Subclass convenience method which compares to instances of comparables in a pretty lax way, converting types among String, Number, Double when appropriate.
        Returns:
        same contract as Comparable.compareTo(java.lang.Object).
      • toString

        public String toString()
        Returns a string representation of this filter.
        Overrides:
        toString in class Object
        Returns:
        String representation of the compare filter.
      • equals

        public boolean equals​(Object obj)
        Compares this filter to the specified object. Returns true if the passed in object is the same as this filter. Checks to make sure the filter types are the same as well as both of the values.
        Overrides:
        equals in class Object
        Parameters:
        obj - - the object to compare this CompareFilter against.
        Returns:
        true if specified object is equal to this filter; false otherwise.
      • hashCode

        public int hashCode()
        Override of hashCode method.
        Overrides:
        hashCode in class Object
        Returns:
        a code to hash this object by.
      • accept

        public abstract Object accept​(FilterVisitor visitor,
                                      Object extraData)
        Used by FilterVisitors to perform some action on this filter instance. Typicaly used by Filter decoders, but may also be used by any thing which needs infomration from filter structure. Implementations should always call: visitor.visit(this); It is importatant that this is not left to a parent class unless the parents API is identical.
        Parameters:
        visitor - The visitor which requires access to this filter, the method must call visitor.visit(this);