Class ArrayFilter
IFilter which is a logical operator of a filter array.
Inherited Members
Namespace: Tangosol.Util.Filter
Assembly: Coherence.dll
Syntax
public abstract class ArrayFilter : IIndexAwareFilter, IEntryFilter, IFilter, IPortableObject
Constructors
ArrayFilter()
Default constructor.
Declaration
protected ArrayFilter()
ArrayFilter(IFilter[])
Construct a logical filter that applies a binary operator to a filter array.
Declaration
protected ArrayFilter(IFilter[] filters)
Parameters
Type | Name | Description |
---|---|---|
IFilter[] | filters | The filter array. |
Remarks
The result is defined as:
filters[0] <op> filters[1] ... <op> filters[n]
Fields
m_filters
The IFilter array.
Declaration
protected IFilter[] m_filters
Field Value
Type | Description |
---|---|
IFilter[] |
m_preserveOrder
Flag indicating whether or not the filter order should be preserved.
Declaration
protected bool m_preserveOrder
Field Value
Type | Description |
---|---|
bool |
Properties
Filters
Obtain the IFilter array.
Declaration
public virtual IFilter[] Filters { get; }
Property Value
Type | Description |
---|---|
IFilter[] | The IFilter array. |
Methods
ApplyFilter(IIndexAwareFilter, IDictionary, ICollection)
Apply the specified IndexAwareFilter to the specified keySet.
Declaration
protected virtual IFilter ApplyFilter(IIndexAwareFilter filter, IDictionary indexes, ICollection keys)
Parameters
Type | Name | Description |
---|---|---|
IIndexAwareFilter | filter | The IndexAwareFilter to apply an index to. |
IDictionary | indexes | The available MapIndex objects keyed by the related IValueExtractor; read-only. |
ICollection | keys | The mutable set of keys that remain to be filtered. |
Returns
Type | Description |
---|---|
IFilter | A Filter object that can be used to process the remaining keys, or null if no additional filter processing is necessary |
ApplyIndex(IDictionary, ICollection)
Filter remaining keys using an IDictionary of available indexes.
Declaration
public abstract IFilter ApplyIndex(IDictionary indexes, ICollection keys)
Parameters
Type | Name | Description |
---|---|---|
IDictionary | indexes | The available ICacheIndex objects keyed by the related IValueExtractor; read-only. |
ICollection | keys | The mutable set of keys that remain to be filtered. |
Returns
Type | Description |
---|---|
IFilter | An IFilter object that can be used to process the
remaining keys, or |
Remarks
The filter is responsible for removing all keys from the passed
set of keys that the applicable indexes can prove should be
filtered. If the filter does not fully evaluate the remaining
keys using just the index information, it must return a filter
(which may be an IEntryFilter) that can complete the
task using an iterating implementation. If, on the other hand, the
filter does fully evaluate the remaining keys using just the index
information, then it should return null
to indicate that no
further filtering is necessary.
CalculateEffectiveness(IDictionary, ICollection)
Given an IDictionary of available indexes, determine if this IIndexAwareFilter can use any of the indexes to assist in its processing, and if so, determine how effective the use of that index would be.
Declaration
public abstract int CalculateEffectiveness(IDictionary indexes, ICollection keys)
Parameters
Type | Name | Description |
---|---|---|
IDictionary | indexes | The available ICacheIndex objects keyed by the related IValueExtractor; read-only. |
ICollection | keys | The set of keys that will be filtered; read-only. |
Returns
Type | Description |
---|---|
int | An effectiveness estimate of how well this filter can use the specified indexes to filter the specified keys. |
Remarks
The returned value is an effectiveness estimate of how well this filter can use the specified indexes to filter the specified keys. An operation that requires no more than a single access to the index content (i.e. Equals, NotEquals) has an effectiveness of one. Evaluation of a single entry is assumed to have an effectiveness that depends on the index implementation and is usually measured as a constant number of the single operations. This number is referred to as evaluation cost.
If the effectiveness of a filter evaluates to a number larger than the keys.size() then a user could avoid using the index and iterate through the keys calling Evaluate rather than ApplyIndex.
Equals(object)
Compare the ArrayFilter with another object to determine equality.
Declaration
public override bool Equals(object o)
Parameters
Type | Name | Description |
---|---|---|
object | o | The ArrayFilter to compare to. |
Returns
Type | Description |
---|---|
bool | true if this ArrayFilter and the passed object are equivalent ArrayFilter objects. |
Overrides
Remarks
Two ArrayFilter objects are considered equal if they are of same type and their filter arrays are equal.
Evaluate(object)
Apply the test to the object.
Declaration
public abstract bool Evaluate(object o)
Parameters
Type | Name | Description |
---|---|---|
object | o | An object to which the test is applied. |
Returns
Type | Description |
---|---|
bool | true if the test passes, false otherwise. |
EvaluateEntry(ICacheEntry)
Apply the test to an ICacheEntry.
Declaration
public abstract bool EvaluateEntry(ICacheEntry entry)
Parameters
Type | Name | Description |
---|---|---|
ICacheEntry | entry | The ICacheEntry to evaluate; never |
Returns
Type | Description |
---|---|
bool | true if the test passes, false otherwise. |
GetHashCode()
Determine a hash value for the ArrayFilter object according to the general object.GetHashCode() contract.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
int | An integer hash value for this ArrayFilter object. |
Overrides
HonorOrder()
Ensure that the order of underlying filters is preserved by the ApplyIndex(IDictionary, ICollection) and EvaluateEntry(ICacheEntry) implementations.
Declaration
public void HonorOrder()
OptimizeFilterOrder(IDictionary, ICollection)
Sort all the participating filters according to their effectiveness.
Declaration
protected void OptimizeFilterOrder(IDictionary indexes, ICollection keys)
Parameters
Type | Name | Description |
---|---|---|
IDictionary | indexes | The available ICacheIndex objects keyed by the related IValueExtractor; read-only. |
ICollection | keys | The set of keys that will be filtered; read-only |
ReadExternal(IPofReader)
Restore the contents of a user type instance by reading its state using the specified IPofReader object.
Declaration
public virtual void ReadExternal(IPofReader reader)
Parameters
Type | Name | Description |
---|---|---|
IPofReader | reader | The IPofReader from which to read the object's state. |
Exceptions
Type | Condition |
---|---|
IOException | If an I/O error occurs. |
ToString()
Return a human-readable description for this ArrayFilter.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
string | A string description of the ArrayFilter. |
Overrides
WriteExternal(IPofWriter)
Save the contents of a POF user type instance by writing its state using the specified IPofWriter object.
Declaration
public virtual void WriteExternal(IPofWriter writer)
Parameters
Type | Name | Description |
---|---|---|
IPofWriter | writer | The IPofWriter to which to write the object's state. |
Exceptions
Type | Condition |
---|---|
IOException | If an I/O error occurs. |