com.hazelcast.query
Class PagingPredicate

java.lang.Object
  extended by com.hazelcast.query.PagingPredicate
All Implemented Interfaces:
DataSerializable, IndexAwarePredicate, Predicate, Serializable

public class PagingPredicate
extends Object
implements IndexAwarePredicate, DataSerializable

This class is a special Predicate which helps to get a page-by-page result of a query Can be constructed with a page-size, an inner predicate for filtering, A comparator for sorting \ This class is not thread-safe and stateless. To be able to reuse for another query, one should call reset()
Example usage could be seen like below;

 Predicate lessEqualThanFour = Predicates.lessEqual("this", 4);

 // We are constructing our paging predicate with a predicate and page size. In this case query results fetched two
 by two.
 PagingPredicate predicate = new PagingPredicate(lessEqualThanFour, 2);

 // we are initializing our map with integers from 0 to 10 as keys and values.
 IMap map = hazelcastInstance.getMap(...);
 for (int i = 0; i < 10; i++) {
 map.put(i, i);
 }

 // invoking the query
 Collection values = map.values(predicate);
 System.out.println("values = " + values) // will print 'values = [0, 1]'
 predicate.nextPage(); // we are setting up paging predicate to fetch next page in the next call.
 values = map.values(predicate);
 System.out.println("values = " + values);// will print 'values = [2, 3]'
 Entry anchor = predicate.getAnchor();
 System.out.println("anchor -> " + anchor); // will print 'anchor -> 1=1',  since the anchor is the last entry of
 the previous page.
 predicate.previousPage(); // we are setting up paging predicate to fetch previous page in the next call
 values = map.values(predicate);
 System.out.println("values = " + values) // will print 'values = [0, 1]'
 

See Also:
Serialized Form

Constructor Summary
PagingPredicate()
          Used for serialization internally
PagingPredicate(Comparator<Map.Entry> comparator, int pageSize)
          Construct with a comparator and pageSize results will not be filtered results will be ordered via comparator throws IllegalArgumentException if pageSize is not greater than 0
PagingPredicate(int pageSize)
          Construct with a pageSize results will not be filtered results will be natural ordered throws IllegalArgumentException if pageSize is not greater than 0
PagingPredicate(Predicate predicate, Comparator<Map.Entry> comparator, int pageSize)
          Construct with an inner predicate, comparator and pageSize results will be filtered via inner predicate results will be ordered via comparator throws IllegalArgumentException if pageSize is not greater than 0 throws IllegalArgumentException if inner predicate is also PagingPredicate
PagingPredicate(Predicate predicate, int pageSize)
          Construct with an inner predicate and pageSize results will be filtered via inner predicate results will be natural ordered throws IllegalArgumentException if pageSize is not greater than 0 throws IllegalArgumentException if inner predicate is also PagingPredicate
 
Method Summary
 boolean apply(Map.Entry mapEntry)
          Used for delegating filtering to inner predicate
 Set<QueryableEntry> filter(QueryContext queryContext)
          Used if inner predicate is instanceof IndexAwarePredicate for filtering
 Map.Entry getAnchor()
          Retrieve the anchor object which is the last value object on the previous page.
 Comparator<Map.Entry> getComparator()
           
 IterationType getIterationType()
           
 int getPage()
           
 int getPageSize()
           
 Predicate getPredicate()
           
 boolean isIndexed(QueryContext queryContext)
          Used if inner predicate is instanceof IndexAwarePredicate for checking if indexed
 void nextPage()
          setting the page value to next page
 void previousPage()
          setting the page value to previous page
 void readData(ObjectDataInput in)
          Reads fields from the input stream
 void reset()
          resets for reuse
 void setIterationType(IterationType iterationType)
           
 void writeData(ObjectDataOutput out)
          Writes object fields to output stream
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PagingPredicate

public PagingPredicate()
Used for serialization internally


PagingPredicate

public PagingPredicate(int pageSize)
Construct with a pageSize results will not be filtered results will be natural ordered throws IllegalArgumentException if pageSize is not greater than 0

Parameters:
pageSize -

PagingPredicate

public PagingPredicate(Predicate predicate,
                       int pageSize)
Construct with an inner predicate and pageSize results will be filtered via inner predicate results will be natural ordered throws IllegalArgumentException if pageSize is not greater than 0 throws IllegalArgumentException if inner predicate is also PagingPredicate

Parameters:
predicate -
pageSize -

PagingPredicate

public PagingPredicate(Comparator<Map.Entry> comparator,
                       int pageSize)
Construct with a comparator and pageSize results will not be filtered results will be ordered via comparator throws IllegalArgumentException if pageSize is not greater than 0

Parameters:
comparator -
pageSize -

PagingPredicate

public PagingPredicate(Predicate predicate,
                       Comparator<Map.Entry> comparator,
                       int pageSize)
Construct with an inner predicate, comparator and pageSize results will be filtered via inner predicate results will be ordered via comparator throws IllegalArgumentException if pageSize is not greater than 0 throws IllegalArgumentException if inner predicate is also PagingPredicate

Parameters:
predicate -
comparator -
pageSize -
Method Detail

filter

public Set<QueryableEntry> filter(QueryContext queryContext)
Used if inner predicate is instanceof IndexAwarePredicate for filtering

Specified by:
filter in interface IndexAwarePredicate
Parameters:
queryContext -
Returns:

isIndexed

public boolean isIndexed(QueryContext queryContext)
Used if inner predicate is instanceof IndexAwarePredicate for checking if indexed

Specified by:
isIndexed in interface IndexAwarePredicate
Parameters:
queryContext -
Returns:

apply

public boolean apply(Map.Entry mapEntry)
Used for delegating filtering to inner predicate

Specified by:
apply in interface Predicate
Parameters:
mapEntry -
Returns:

reset

public void reset()
resets for reuse


nextPage

public void nextPage()
setting the page value to next page


previousPage

public void previousPage()
setting the page value to previous page


getIterationType

public IterationType getIterationType()

setIterationType

public void setIterationType(IterationType iterationType)

getPage

public int getPage()

getPageSize

public int getPageSize()

getPredicate

public Predicate getPredicate()

getComparator

public Comparator<Map.Entry> getComparator()

getAnchor

public Map.Entry getAnchor()
Retrieve the anchor object which is the last value object on the previous page. Note: This method will return `null` on the first page of the query result.

Returns:
Map.Entry

writeData

public void writeData(ObjectDataOutput out)
               throws IOException
Description copied from interface: DataSerializable
Writes object fields to output stream

Specified by:
writeData in interface DataSerializable
Parameters:
out - output
Throws:
IOException

readData

public void readData(ObjectDataInput in)
              throws IOException
Description copied from interface: DataSerializable
Reads fields from the input stream

Specified by:
readData in interface DataSerializable
Parameters:
in - input
Throws:
IOException


Copyright © 2015 Hazelcast, Inc.. All Rights Reserved.