Class LogicFilterImpl

All Implemented Interfaces:
Filter, FilterType
Direct Known Subclasses:
AndImpl, NotImpl, OrImpl

public abstract class LogicFilterImpl extends BinaryLogicAbstract
Defines a logic filter (the only filter type that contains other filters). This filter holds one or more filters together and relates them logically with an internally defined type (AND, OR, NOT).
Author:
Rob Hranac, TOPP
  • Constructor Details

    • LogicFilterImpl

      protected LogicFilterImpl(List<Filter> children)
    • LogicFilterImpl

      protected LogicFilterImpl(Filter filter1, Filter filter2, short filterType) throws IllegalFilterException
      Convenience constructor to create an AND/OR logic filter.
      Parameters:
      filter1 - An initial sub filter.
      filter2 - An initial sub filter.
      filterType - The final relation between all sub filters.
      Throws:
      IllegalFilterException - Does not conform to logic filter structure
  • Method Details

    • addFilter

      public final void addFilter(Filter filter) throws IllegalFilterException
      Adds a sub filter to this filter.
      Parameters:
      filter - Specified filter to add to the sub filter list.
      Throws:
      IllegalFilterException - Does not conform to logic filter structure
      TODO:
      REVISIT: make all filters immutable. This should return a new filter.
    • getFilterIterator

      public Iterator getFilterIterator()
      Gets an iterator for the filters held by this logic filter.
      Returns:
      the iterator of the filters.
    • toString

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

      public boolean equals(Object o)
      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, and then checks that the subFilters lists are the same size and that one list contains the other. This means that logic filters with different internal orders of subfilters are equal.
      Overrides:
      equals in class BinaryLogicAbstract
      Parameters:
      o - - the object to compare this LogicFilter 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 BinaryLogicAbstract
      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);