Class ComparisonFilter<T,E,C>

Type Parameters:
T - the type of the input argument to the filter
E - the type of the extracted attribute to use for comparison
C - the type of value to compare extracted attribute with
All Implemented Interfaces:
ExternalizableLite, PortableObject, Filter<T>, EntryFilter<Object,T>, IndexAwareFilter<Object,T>, QueryRecorderFilter<T>, Serializable
Direct Known Subclasses:
ContainsAllFilter, ContainsAnyFilter, ContainsFilter, EqualsFilter, GreaterEqualsFilter, GreaterFilter, InFilter, LessEqualsFilter, LessFilter, LikeFilter, NotEqualsFilter, RegexFilter

public abstract class ComparisonFilter<T,E,C> extends ExtractorFilter<T,E>
Filter which compares the result of a method invocation with a value.
Author:
cp/gg 2002.10.27
See Also:
  • Field Details

    • m_value

      protected C m_value
      The value to compare to.
  • Constructor Details

    • ComparisonFilter

      public ComparisonFilter()
      Default constructor (necessary for the ExternalizableLite interface).
    • ComparisonFilter

      public ComparisonFilter(ValueExtractor<? super T,? extends E> extractor, C value)
      Construct a ComparisonFilter.
      Parameters:
      extractor - the ComparisonFilter to use by this filter
      value - the object to compare the result with
    • ComparisonFilter

      public ComparisonFilter(String sMethod, C value)
      Construct a ComparisonFilter.
      Parameters:
      sMethod - the name of the method to invoke via reflection
      value - the object to compare the result with
  • Method Details

    • getValue

      public C getValue()
      Get the object to compare the reflection result with.
      Returns:
      the object to compare the reflection result with
    • calculateMatchEffectiveness

      protected int calculateMatchEffectiveness(Map mapIndexes, Set setKeys)
      Helper method to calculate effectiveness for ComparisonFilters that need no more than a single index match in order to retrieve all necessary keys to perform the applyIndex() operation. Such filters are: Contains, Equals, NotEquals.
      Parameters:
      mapIndexes - the available MapIndex objects keyed by the related ValueExtractor; read-only
      setKeys - the set of keys that will be filtered; read-only
      Returns:
      an effectiveness estimate of how well this filter can use the specified indexes to filter the specified keys
    • calculateRangeEffectiveness

      protected int calculateRangeEffectiveness(Map mapIndexes, Set setKeys)
      Helper method to calculate effectiveness for ComparisonFilters that need a range of values from an index in order to retrieve all necessary keys to perform the applyIndex() operation. Such filters are: Less, LessEquals, Greater, GreaterEquals.
      Parameters:
      mapIndexes - the available MapIndex objects keyed by the related ValueExtractor; read-only
      setKeys - the set of keys that will be filtered; read-only
      Returns:
      an effectiveness estimate of how well this filter can use the specified indexes to filter the specified keys
    • toStringValue

      protected String toStringValue()
      Return the string representation of the value.
      Returns:
      the string representation of the value
    • equals

      public boolean equals(Object o)
      Compare the ComparisonFilter with another object to determine equality. Two ComparisonFilter objects are considered equal iff they belong to exactly the same class and their extractor and value are equal.
      Overrides:
      equals in class Object
      Returns:
      true iff this ComparisonFilter and the passed object are equivalent ComparisonFilters
    • hashCode

      public int hashCode()
      Determine a hash value for the ComparisonFilter object according to the general Object.hashCode() contract.
      Overrides:
      hashCode in class Object
      Returns:
      an integer hash value for this ComparisonFilter object
    • toString

      public String toString()
      Return a human-readable description for this Filter.
      Overrides:
      toString in class Object
      Returns:
      a String description of the Filter
    • readExternal

      public void readExternal(DataInput in) throws IOException
      Restore the contents of this object by loading the object's state from the passed DataInput object.
      Specified by:
      readExternal in interface ExternalizableLite
      Overrides:
      readExternal in class ExtractorFilter<T,E>
      Parameters:
      in - the DataInput stream to read data from in order to restore the state of this object
      Throws:
      IOException - if an I/O exception occurs
    • writeExternal

      public void writeExternal(DataOutput out) throws IOException
      Save the contents of this object by storing the object's state into the passed DataOutput object.
      Specified by:
      writeExternal in interface ExternalizableLite
      Overrides:
      writeExternal in class ExtractorFilter<T,E>
      Parameters:
      out - the DataOutput stream to write the state of this object to
      Throws:
      IOException - if an I/O exception occurs
    • readExternal

      public void readExternal(PofReader in) throws IOException
      Restore the contents of a user type instance by reading its state using the specified PofReader object.
      Specified by:
      readExternal in interface PortableObject
      Overrides:
      readExternal in class ExtractorFilter<T,E>
      Parameters:
      in - the PofReader from which to read the object's state
      Throws:
      IOException - if an I/O error occurs
    • writeExternal

      public void writeExternal(PofWriter out) throws IOException
      Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
      Specified by:
      writeExternal in interface PortableObject
      Overrides:
      writeExternal in class ExtractorFilter<T,E>
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs