Overview | Package | Class | Tree | Index | Help

Oracle® Coherence Java API Reference
v3.5.3
E15583-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.tangosol.util.filter
Class PartitionedFilter

    java.lang.Object
      com.tangosol.util.Base
          com.tangosol.util.filter.PartitionedFilter

All Implemented Interfaces:
  Filter, EntryFilter

    public class PartitionedFilter

extends Base
implements EntryFilter

Filter which limits the scope of another filter to those entries that have keys that belong to the specified partition set.

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.

Below are two examples of PartitionedFilter usage:

- Run a parallel query partition-by-partition:

       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);
               }
           }

- Run a parallel query member-by-member:

       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.)

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.

To iterate through a query on a partition-by-partition or member-by-member basis, use the `PartitionedIterator` class.

Since:
  Coherence 3.4
Author:
  gg 2008.02.06

Constructor Summary
`PartitionedFilter(Filter filter, PartitionSet partitions)` Construct a PartitionedFilter.

Method Summary
`boolean` | `equals(java.lang.Object o)` Compare the PartitionedFilter with another object to determine equality.
`boolean` | `evaluate(java.lang.Object o)` Apply the test to the object.
`boolean` | `evaluateEntry(java.util.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.
`java.lang.String` | `toString()` Return a human-readable description for this Filter.

Constructor Detail

### PartitionedFilter

    public PartitionedFilter(Filter filter,
                             PartitionSet partitions)

  Construct a PartitionedFilter.

  Parameters:
    `filter` - the underlying (wrapped) filter
    `partitions` - the subset of partitions the filter should run against

Method Detail

### evaluate

    public boolean evaluate(java.lang.Object o)

  Apply the test to the object.

  Specified by:
    `evaluate` in interface `Filter`
  Parameters:
    `o` - the object to test
  Returns:
    true if the test passes, false otherwise

### evaluateEntry

    public boolean evaluateEntry(java.util.Map.Entry entry)

  Apply the test to a Map Entry.

  Specified by:
    `evaluateEntry` in interface `EntryFilter`
  Parameters:
    `entry` - the Map Entry to evaluate; never null
  Returns:
    true if the test passes, false otherwise

### getFilter

    public Filter getFilter()

  Obtain the wrapped Filter.

  Returns:
    the wrapped filter object

### getPartitionSet

    public PartitionSet getPartitionSet()

  Obtain the PartitionSet that specifies what partitions the wrapped filter will be applied to.

  Returns:
    the partition set

### equals

    public boolean equals(java.lang.Object o)

  Compare the PartitionedFilter with another object to determine equality. Two PartitionedFilter objects are considered equal iff the wrapped filters and partition sets are equal.

  Returns:
    true iff this PartitionedFilter and the passed object are equivalent PartitionedFilter objects

### hashCode

    public int hashCode()

  Determine a hash value for the PartitionedFilter object according to the general `Object.hashCode()` contract.

  Returns:
    an integer hash value for this PartitionedFilter object

### toString

    public java.lang.String toString()

  Return a human-readable description for this Filter.

  Returns:
    a String description of the Filter

Overview | Package | Class | Tree | Index | Help

Oracle® Coherence Java API Reference
v3.5.3
E15583-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000, 2010, Oracle. All rights reserved.