Class MultiExtractor

All Implemented Interfaces:
CanonicallyNamed, ExternalizableLite, PortableObject, QueryMapComparator, Remote.Function, Remote.ToDoubleFunction, Remote.ToIntFunction, Remote.ToLongFunction, ValueExtractor, Serializable, Comparator, Function, ToDoubleFunction, ToIntFunction, ToLongFunction

public class MultiExtractor extends AbstractCompositeExtractor
Composite ValueExtractor implementation based on an array of extractors. All extractors in the array are applied to the same target object and the result of the extraction is a List of extracted values.

Common scenarios for using the MultiExtractor involve the DistinctValues or GroupAggregator aggregators, that allow clients to collect all distinct combinations of a given set of attributes or collect and run additional aggregation against the corresponding groups of entries.

Since:
Coherence 3.2
Author:
gg 2006.02.08
See Also:
  • Constructor Details

    • MultiExtractor

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

      public MultiExtractor(ValueExtractor[] aExtractor)
      Construct a MultiExtractor.
      Parameters:
      aExtractor - the ValueExtractor array
    • MultiExtractor

      public MultiExtractor(String sNames)
      Construct a MultiExtractor for a specified method name list.
      Parameters:
      sNames - a comma-delimited sequence of method names which results in a MultiExtractor that is based on a corresponding array of ValueExtractor objects; individual array elements will be either ReflectionExtractor or ChainedExtractor objects
  • Method Details

    • extract

      public Object extract(Object oTarget)
      Extract a collection of values from the passed object using the underlying array of ValueExtractor objects. Note that each individual value could be an object of a standard wrapper type (for intrinsic types) or null.
      Specified by:
      extract in interface ValueExtractor
      Overrides:
      extract in class AbstractExtractor
      Parameters:
      oTarget - an Object to retrieve the collection of values from
      Returns:
      a List containing the extracted values or null if the target object itself is null
    • extractFromEntry

      public List extractFromEntry(Map.Entry entry)
      Extract a collection of values from the passed entry using the underlying array of ValueExtractor objects. Note that each individual value could be an object of a standard wrapper type (for intrinsic types) or null.
      Overrides:
      extractFromEntry in class AbstractExtractor
      Parameters:
      entry - an entry to retrieve the collection of values from
      Returns:
      a List containing the extracted values
    • extractOriginalFromEntry

      public List extractOriginalFromEntry(MapTrigger.Entry entry)
      Description copied from class: AbstractExtractor
      Extract the value from the "original value" of the passed Entry object or the key (if targeted). This method's conventions are exactly the same as for the AbstractExtractor.extractFromEntry(java.util.Map.Entry) method.
      Overrides:
      extractOriginalFromEntry in class AbstractExtractor
      Parameters:
      entry - an Entry object whose original value should be used to extract the desired value from
      Returns:
      the extracted value or null if the original value is not present
    • compareEntries

      public int compareEntries(QueryMap.Entry entry1, QueryMap.Entry entry2)
      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
      Overrides:
      compareEntries in class AbstractExtractor
      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
    • createExtractors

      public static ValueExtractor[] createExtractors(String sNames)
      Parse a comma-delimited sequence of method names and instantiate a corresponding array of ValueExtractor objects. Individual array elements will be either ReflectionExtractor or ChainedExtractor objects.
      Parameters:
      sNames - a comma-delimited sequence of method names
      Returns:
      an array of ValueExtractor objects