Class MultiExtractor
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.BitHelper
-
- com.tangosol.util.ExternalizableHelper
-
- com.tangosol.util.extractor.AbstractExtractor<T,E>
-
- com.tangosol.util.extractor.AbstractCompositeExtractor
-
- com.tangosol.util.extractor.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 aList
of extracted values.Common scenarios for using the MultiExtractor involve the
DistinctValues
orGroupAggregator
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:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelper
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
-
Fields inherited from class com.tangosol.util.extractor.AbstractCompositeExtractor
m_aExtractor
-
Fields inherited from class com.tangosol.util.extractor.AbstractExtractor
KEY, m_nTarget, m_sNameCanon, VALUE
-
Fields inherited from class com.tangosol.util.ExternalizableHelper
BINARY_SIZE, CHUNK_SIZE, CHUNK_THRESHOLD, CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, DECO_BACKUP, DECO_CUSTOM, DECO_EXPIRY, DECO_ID_MAX, DECO_ID_MIN, DECO_JCACHE, DECO_JCACHE_SYNTHETIC, DECO_MEMCACHED, DECO_PUSHREP, DECO_QUEUE_METADATA, DECO_RSVD_1, DECO_STORE, DECO_TX, DECO_VALUE, DECO_WLS, EMPTY_BINARY_ARRAY, FMT_B_ARRAY, FMT_BIN_DECO, FMT_BIN_EXT_DECO, FMT_BINARY, FMT_BOOLEAN, FMT_BYTE, FMT_DECIMAL, FMT_DOUBLE, FMT_EXT, FMT_FLOAT, FMT_IDO, FMT_INT, FMT_INTEGER, FMT_LONG, FMT_NONE, FMT_NULL, FMT_OBJ_EXT, FMT_OBJ_SER, FMT_OPT, FMT_OPT_DOUBLE, FMT_OPT_INT, FMT_OPT_LONG, FMT_SHORT, FMT_STRING, FMT_UNKNOWN, FMT_XML_BEAN, FMT_XML_SER, FORCE_RESOLVING_STREAMS, LAMBDA_SERIALIZATION, MAX_DECO_HEADER_BYTES, PACKED_INT_SIZE, PACKED_LONG_SIZE, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
-
-
Constructor Summary
Constructors Constructor Description MultiExtractor()
Default constructor (necessary for the ExternalizableLite interface).MultiExtractor(ValueExtractor[] aExtractor)
Construct a MultiExtractor.MultiExtractor(String sNames)
Construct a MultiExtractor for a specified method name list.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compareEntries(QueryMap.Entry entry1, QueryMap.Entry entry2)
Compare two entries based on the rules specified byComparator
.static ValueExtractor[]
createExtractors(String sNames)
Parse a comma-delimited sequence of method names and instantiate a corresponding array ofValueExtractor
objects.Object
extract(Object oTarget)
Extract a collection of values from the passed object using the underlying array of ValueExtractor objects.List
extractFromEntry(Map.Entry entry)
Extract a collection of values from the passed entry using the underlying array of ValueExtractor objects.List
extractOriginalFromEntry(MapTrigger.Entry entry)
Extract the value from the "original value" of the passed Entry object or the key (if targeted).-
Methods inherited from class com.tangosol.util.extractor.AbstractCompositeExtractor
equals, getExtractors, hashCode, readExternal, readExternal, toString, writeExternal, writeExternal
-
Methods inherited from class com.tangosol.util.extractor.AbstractExtractor
compare, getCanonicalName, getTarget, isCanonicallyEquatable
-
Methods inherited from class com.tangosol.util.ExternalizableHelper
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, checkObjectInputFilter, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getConfigSerialFilter, getConfigSerialFilterFactory, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectInputFilter, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isPatchCompatible, isPatchCompatible, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readBooleanArray, readByteArray, readCharArray, readCharArray, readCollection, readDate, readDoubleArray, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readFloatArray, readInt, readInt, readIntArray, readIntArray, readIntArray2d, readLargeBooleanArray, readLargeByteArray, readLargeCharArray, readLargeDoubleArray, readLargeFloatArray, readLargeIntArray, readLargeLongArray, readLargeObjectArray, readLargeStringArray, readLong, readLong, readLongArray, readLongArray, readMap, readMap, readObject, readObject, readObjectArray, readObjectArray, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, validateLoadArray, validateLoadClass, writeBigDecimal, writeBigInteger, writeBooleanArray, writeByteArray, writeCollection, writeDate, writeDoubleArray, writeExternalizableLite, writeFloatArray, writeInt, writeInt, writeIntArray2d, writeLong, writeLong, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializable
-
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLong
-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Methods inherited from interface com.tangosol.util.function.Remote.Function
andThen, compose
-
Methods inherited from interface com.tangosol.util.ValueExtractor
andThen, apply, applyAsDouble, applyAsInt, applyAsLong, compose, fromKey
-
-
-
-
Constructor Detail
-
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 ofValueExtractor
objects; individual array elements will be eitherReflectionExtractor
orChainedExtractor
objects
-
-
Method Detail
-
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 interfaceValueExtractor
- Overrides:
extract
in classAbstractExtractor
- 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 classAbstractExtractor
- 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 theAbstractExtractor.extractFromEntry(java.util.Map.Entry)
method.- Overrides:
extractOriginalFromEntry
in classAbstractExtractor
- 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 byComparator
.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
andInverseComparator
, 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 interfaceQueryMapComparator
- Overrides:
compareEntries
in classAbstractExtractor
- Parameters:
entry1
- the first entry to compare values from; read-onlyentry2
- 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 ofValueExtractor
objects. Individual array elements will be eitherReflectionExtractor
orChainedExtractor
objects.- Parameters:
sNames
- a comma-delimited sequence of method names- Returns:
- an array of
ValueExtractor
objects
-
-