Class ExtractorComparator<T>

java.lang.Object
com.tangosol.util.comparator.ExtractorComparator<T>
All Implemented Interfaces:
ExternalizableLite, PortableObject, QueryMapComparator<T>, Serializable, Comparator<T>

public class ExtractorComparator<T> extends Object implements QueryMapComparator<T>, ExternalizableLite, PortableObject
Comparator implementation that uses specified ValueExtractor to extract value(s) to be used for comparison.
Author:
as 2010.09.09
See Also:
  • Constructor Details

    • ExtractorComparator

      public ExtractorComparator()
      Default constructor (for PortableObject).
    • ExtractorComparator

      public ExtractorComparator(ValueExtractor<? super T,? extends E> extractor)
      Construct a ExtractorComparator with the specified extractor.
      Parameters:
      extractor - the ValueExtractor to use by this filter
  • Method Details

    • compare

      public int compare(T o1, T o2)
      Compares extracted values (by specified ValueExtractor) of given arguments for order.
      Specified by:
      compare in interface Comparator<T>
      Parameters:
      o1 - the first object to be compared
      o2 - the second object to be compared
      Returns:
      a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second
      Throws:
      ClassCastException - if the arguments' types prevent them from being compared by this Comparator.
    • compareEntries

      public int compareEntries(QueryMap.Entry entry1, QueryMap.Entry entry2)
      Description copied from interface: QueryMapComparator
      Compare two entries based on the rules specified by Comparator.

      If possible, use the extract method to optimize the value extraction process.

      This method is expected to be implemented by Comparator wrappers, such as ChainedComparator and InverseComparator, which simply pass on this invocation to the wrapped Comparator objects if they too implement this interface, or to invoke their default compare method passing the actual objects (not the extracted values) obtained from the extractor using the passed entries.

      This interface is also expected to be implemented by ValueExtractor implementations that implement the Comparator interface. It is expected that in most cases, the Comparator wrappers will eventually terminate at (i.e. delegate to) ValueExtractors that also implement this interface.

      Specified by:
      compareEntries in interface QueryMapComparator<T>
      Parameters:
      entry1 - the first entry to compare values from; read-only
      entry2 - the second entry to compare values from; read-only
      Returns:
      a negative integer, zero, or a positive integer as the first entry denotes a value that is is less than, equal to, or greater than the value denoted by the second entry
    • readExternal

      public void readExternal(DataInput in) throws IOException
      Description copied from interface: ExternalizableLite
      Restore the contents of this object by loading the object's state from the passed DataInput object.
      Specified by:
      readExternal in interface ExternalizableLite
      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
      Description copied from interface: ExternalizableLite
      Save the contents of this object by storing the object's state into the passed DataOutput object.
      Specified by:
      writeExternal in interface ExternalizableLite
      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
      Description copied from interface: PortableObject
      Restore the contents of a user type instance by reading its state using the specified PofReader object.
      Specified by:
      readExternal in interface PortableObject
      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
      Description copied from interface: PortableObject
      Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
      Specified by:
      writeExternal in interface PortableObject
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs
    • getExtractor

      public ValueExtractor<? super T,? extends Comparable> getExtractor()
      Returns the ValueExtractor to extract value(s) to be used in comparison.
      Returns:
      the ValueExtractor to extract value(s) to be used in comparison