|
Oracle® Coherence Java API Reference Release 3.6.0.0 E15725-01 |
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Object
com.tangosol.util.Base
com.tangosol.util.filter.PartitionedFilter
public class PartitionedFilter
Filter which limits the scope of another filter to those entries that have keys that belong to the specified partition set. <p/> This filter is intended to be used in advanced scenarios, when a caller wants to retrieve the results of parallel processing restricted to a subset of partitions. This approach may somewhat complicate the client code, but can dramatically reduce the memory footprint used by the requestor. <p/> Below are two examples of PartitionedFilter usage:
void executeByPartitions(NamedCache cache, Filter filter)
{
DistributedCacheService service =
(DistributedCacheService) cache.getCacheService();
int cPartitions = service.getPartitionCount();
PartitionSet parts = new PartitionSet(cPartitions);
for (int iPartition = 0; iPartition < cPartitions; iPartition++)
{
parts.add(iPartition);
Filter filterPart = new PartitionedFilter(filter, parts);
Set setEntriesPart = cache.entrySet(filterPart);
// process the entries ...
parts.remove(iPartition);
}
}
void executeByMembers(NamedCache cache, Filter f)
{
DistributedCacheService service =
(DistributedCacheService) cache.getCacheService();
int cPartitions = service.getPartitionCount();
PartitionSet partsProcessed = new PartitionSet(cPartitions);
for (Iterator iter = service.getStorageEnabledMembers().iterator();
iter.hasNext();)
{
Member member = (Member) iter.next();
PartitionSet partsMember = service.getOwnedPartitions(member);
// due to a redistribution some partitions may have already been processed
partsMember.remove(partsProcessed);
Filter filterPart = new PartitionedFilter(filter, partsMember);
Set setEntriesPart = cache.entrySet(filterPart);
// process the entries ...
partsProcessed.add(partsMember);
}
// due to a possible redistribution, some partitions may have been skipped
if (!partsProcessed.isFull())
{
partsProcessed.invert();
Filter filter = new PartitionedFilter(filter, partsProcessed);
// process the remaining entries ...
}
}
Note 1: This filter must be the outermost filter and cannot be used as a part of any composite filter (AndFilter, OrFilter, etc.) <p/> Note 2: This filter is intended to be processed only on the client side of the partitioned cache service, so it intentionally does not implement the Serializable and PortableObject interfaces. <p/> To iterate through a query on a partition-by-partition or member-by-member basis, use the PartitionedIterator class.
| Constructor Summary | |
|---|---|
PartitionedFilter(Filter filter, PartitionSet partitions)Construct a PartitionedFilter. |
|
| Method Summary | |
|---|---|
boolean |
equals(Object o)Compare the PartitionedFilter with another object to determine equality. |
boolean |
evaluate(Object o)Apply the test to the object. |
boolean |
evaluateEntry(Map.Entry entry)Apply the test to a Map Entry. |
Filter |
getFilter()Obtain the wrapped Filter. |
PartitionSet |
getPartitionSet()Obtain the PartitionSet that specifies what partitions the wrapped filter will be applied to. |
int |
hashCode()Determine a hash value for the PartitionedFilter object according to the general Object.hashCode() contract. |
String |
toString()Return a human-readable description for this Filter. |
| Constructor Detail |
|---|
public PartitionedFilter(Filter filter,
PartitionSet partitions)
filter - the underlying (wrapped) filterpartitions - the subset of partitions the filter should run against| Method Detail |
|---|
public boolean evaluate(Object o)
evaluate in interface Filtero - the object to testpublic boolean evaluateEntry(Map.Entry entry)
evaluateEntry in interface EntryFilterentry - the Map Entry to evaluate; never nullpublic Filter getFilter()
public PartitionSet getPartitionSet()
public boolean equals(Object o)
public int hashCode()
Object.hashCode() contract.public String toString()
|
Oracle® Coherence Java API Reference Release 3.6.0.0 E15725-01 |
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||