public class ConditionalIndex extends SimpleMapIndex
MapIndex
implementation that uses an associated
filter to evaluate whether or not an entry should be indexed. An entry's
extracted value is only added to the index if the filter evaluates to true.SimpleMapIndex.IndexCalculator
Base.LoggingWriter, Base.StackFrame
m_calculator, m_cLogMissingIdx, m_comparator, m_ctx, m_cUnits, m_extractor, m_fForwardIndex, m_fImmutableValues, m_fOrdered, m_fSplitCollection, m_ldtLogMissingIdx, m_mapForward, m_mapInverse, m_setKeyExcluded
Constructor and Description |
---|
ConditionalIndex(Filter filter,
ValueExtractor extractor,
boolean fOrdered,
Comparator comparator,
boolean fForwardIndex,
BackingMapContext ctx)
Construct a ConditionalIndex.
|
Modifier and Type | Method and Description |
---|---|
protected void |
deleteInternal(Map.Entry entry)
Update this index in response to a remove operation on a cache.
|
boolean |
equals(Object o)
Compares the specified object with this index for equality.
|
protected boolean |
evaluateEntry(Map.Entry entry)
Evaluate the given entry using this index's filter.
|
Object |
get(Object oKey)
Using the index information if possible, get the value associated with
the specified key.
|
Filter |
getFilter()
Get the associated filter.
|
protected Map.Entry |
getForwardEntry(Object oKey)
Get the forward index entry associated with the specified key.
|
protected void |
insertInternal(Map.Entry entry)
Update this index in response to a insert operation on a cache.
|
protected Map |
instantiateForwardIndex()
Instantiate the forward index.
|
boolean |
isPartial()
Determine if indexed information for any entry in the indexed Map has
been excluded from this index.
|
protected void |
removeForwardEntry(Object oKey)
Remove the forward index entry for the specified key.
|
String |
toString()
Returns a string representation of this ConditionalIndex.
|
protected void |
updateInternal(Map.Entry entry)
Update this index in response to an update operation on a cache.
|
addForwardEntry, addInverseCollectionMapping, addInverseMapping, addInverseMapping, collectRemoved, delete, ensureCollection, extractNewValue, extractOldValue, getCalculator, getComparator, getIndexContents, getUnits, getValueExtractor, hashCode, initialize, insert, instantiateCalculator, instantiateInverseIndex, instantiateSet, isForwardIndexSupported, isKeyExcluded, isOptimizeMV, isOrdered, logMissingIdx, onMappingAdded, onMappingAdded, onMappingRemoved, onMappingRemoved, removeInverseMapping, removeInverseMapping, removeInverseMapping, setOptimizeMV, setUnits, toString, update, updateExcludedKeys
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, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, 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
public ConditionalIndex(Filter filter, ValueExtractor extractor, boolean fOrdered, Comparator comparator, boolean fForwardIndex, BackingMapContext ctx)
filter
- the filter that is used to evaluate the entries of
the resource map that is being indexedextractor
- the ValueExtractor
that is used to extract
an indexed value from a resource map entryfOrdered
- true iff the contents of the indexed information
should be ordered; false otherwisecomparator
- the Comparator object which imposes an ordering on
entries in the index map; or null if the
entries' values natural ordering should be usedfForwardIndex
- specifies whether or not this index supports a
forward mapctx
- the context
associated with
this indexpublic Object get(Object oKey)
get
in interface MapIndex
get
in class SimpleMapIndex
oKey
- the key that specifies the object to extract the value fromprotected Map.Entry getForwardEntry(Object oKey)
getForwardEntry
in class SimpleMapIndex
oKey
- the keyprotected void removeForwardEntry(Object oKey)
removeForwardEntry
in class SimpleMapIndex
oKey
- the key to remove the forward index entry forprotected Map instantiateForwardIndex()
Note: To optimize the memory footprint of the forward index, any
subclasses of the SimpleMapIndex that override this method must also
implement the SimpleMapIndex.getForwardEntry(Object)
method accordingly.
instantiateForwardIndex
in class SimpleMapIndex
public boolean isPartial()
IndexAwareFilter
implementations to
determine the most optimal way to apply the index.
Note: Queries that use a partial index are allowed not to return entries that are not indexed even though they would match the corresponding filter were they evaluated during the full scan (if there were no index). However, it's not allowable for a query to return entries that do not match the corresponding filter, regardless of their presence in the index.
isPartial
in interface MapIndex
isPartial
in class SimpleMapIndex
public Filter getFilter()
protected boolean evaluateEntry(Map.Entry entry)
entry
- the entry to evaluateprotected void insertInternal(Map.Entry entry)
insertInternal
in class SimpleMapIndex
entry
- the entry representing the object being insertedprotected void updateInternal(Map.Entry entry)
updateInternal
in class SimpleMapIndex
entry
- the entry representing the object being updatedprotected void deleteInternal(Map.Entry entry)
deleteInternal
in class SimpleMapIndex
entry
- the entry representing the object being removedpublic String toString()
toString
in class SimpleMapIndex
public boolean equals(Object o)
equals
in class SimpleMapIndex
o
- object to be compared for equality with this MapIndex