com.googlecode.icegem.query.pagination
Class PaginatedQuery<V>

java.lang.Object
  extended by com.googlecode.icegem.query.pagination.PaginatedQuery<V>

public class PaginatedQuery<V>
extends java.lang.Object

This component allows to execute paginated queries both from client and peer/server sides. It caches paginated query results in a help region and allows to iterate on them using paginated query API. See http://code.google.com/p/icegem/wiki/Documentation#Paginated_Query for more details and examples. RESTRICTIONS: 1). A query string for paginated query can be arbitrarily complex but entry key must be part of projection list. 2). For partitioned regions a query string must meet the requirements described in a GemFire documentation for querying partitioned regions. ORDER BY on Partitioned Regions A paginated query supports order by functionality on partitioned regions. The fields specified in the order by clause must be part of the projection list. Limiting of results: Paginated query result can be limited. By default this limit is 1000 entries. You can specify a custom limit value via paginated query constructors argument. If query results exceeds this limit: - only a specified limit number of entries will be cached and returned; - flag 'limitExceeded' will be set to 'true'. Examples: SELECT * FROM /data.keySet; SELECT DISTINCT d.key, d.value.field1 FROM /data.entrySet d ORDER BY d.value.field1;

Author:
Andrey Stepanov aka standy

Field Summary
static int DEFAULT_PAGE_SIZE
          page size by default
static int DEFAULT_QUERY_LIMIT
          Default limit on query result
static int PAGE_NUMBER_FOR_GENERAL_INFO
          number of page that will be store general information about paginated query (e.g.
static java.lang.String PAGINATED_QUERY_INFO_REGION_NAME
          name of a help region for storing information about paginated queries
 
Constructor Summary
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, int queryLimit, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, int queryLimit, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString, int pageSize)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, int queryLimit, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString, java.lang.Object[] queryParameters)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, int queryLimit, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString, java.lang.Object[] queryParameters, int pageSize)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString, int pageSize)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString, java.lang.Object[] queryParameters)
          Creates a new PaginatedQuery instance.
PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService, com.gemstone.gemfire.cache.Region<java.lang.Object,V> region, java.lang.String queryString, java.lang.Object[] queryParameters, int pageSize)
          Creates a new PaginatedQuery instance.
 
Method Summary
 int getPageSize()
          Returns size of page.
 int getTotalNumberOfEntries()
          Returns a total number of query entries.
 int getTotalNumberOfPages()
          Returns a total number of query pages.
 boolean isLimitExceeded()
          Gets value of a flag that indicates excess of query limit.
 java.util.List<V> page(int pageNumber)
          Returns entries for a specified page number.
 boolean pageExists(int pageNumber)
          Checks that a specified page number exists.
protected  void storePage(int pageNumber, java.util.List<java.lang.Object> page)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_PAGE_SIZE

public static final int DEFAULT_PAGE_SIZE
page size by default

See Also:
Constant Field Values

DEFAULT_QUERY_LIMIT

public static final int DEFAULT_QUERY_LIMIT
Default limit on query result

See Also:
Constant Field Values

PAGE_NUMBER_FOR_GENERAL_INFO

public static final int PAGE_NUMBER_FOR_GENERAL_INFO
number of page that will be store general information about paginated query (e.g. total number of query entries)

See Also:
Constant Field Values

PAGINATED_QUERY_INFO_REGION_NAME

public static final java.lang.String PAGINATED_QUERY_INFO_REGION_NAME
name of a help region for storing information about paginated queries

See Also:
Constant Field Values
Constructor Detail

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      int queryLimit,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
queryLimit - limit on query result
region - The region for querying.
queryString - query string that must return entry keys
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      int queryLimit,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString,
                      int pageSize)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
queryLimit - limit on query result
region - The region for querying.
queryString - query string that must return entry keys
pageSize - size of page
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      int queryLimit,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString,
                      java.lang.Object[] queryParameters)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
queryLimit - limit on query result
region - The region for querying.
queryString - query string that must return entry keys
queryParameters - parameters for query execution
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      int queryLimit,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString,
                      java.lang.Object[] queryParameters,
                      int pageSize)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
queryLimit - limit on query result
region - The region for querying.
queryString - query string that must return entry keys
queryParameters - parameters for query execution
pageSize - size of page
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
region - The region for querying
queryString - query string that must return entry keys
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString,
                      int pageSize)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
region - The region for querying.
queryString - query string that must return entry keys
pageSize - size of page
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString,
                      java.lang.Object[] queryParameters)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
region - The region for querying.
queryString - query string that must return entry keys
queryParameters - parameters for query execution
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded

PaginatedQuery

public PaginatedQuery(com.gemstone.gemfire.cache.query.QueryService queryService,
                      com.gemstone.gemfire.cache.Region<java.lang.Object,V> region,
                      java.lang.String queryString,
                      java.lang.Object[] queryParameters,
                      int pageSize)
               throws com.gemstone.gemfire.cache.query.RegionNotFoundException
Creates a new PaginatedQuery instance.

Parameters:
queryService - The service to run the query.
region - The region for querying.
queryString - query string that must return entry keys
queryParameters - parameters for query execution
pageSize - size of page
Throws:
com.gemstone.gemfire.cache.query.RegionNotFoundException - when query region or help region were not founded
Method Detail

getPageSize

public int getPageSize()
Returns size of page.

Returns:
page size

getTotalNumberOfEntries

public int getTotalNumberOfEntries()
                            throws com.gemstone.gemfire.cache.query.QueryException
Returns a total number of query entries.

Returns:
total number of entries
Throws:
com.gemstone.gemfire.cache.query.QueryException - during query execution

getTotalNumberOfPages

public int getTotalNumberOfPages()
                          throws com.gemstone.gemfire.cache.query.QueryException
Returns a total number of query pages.

Returns:
total number of pages
Throws:
com.gemstone.gemfire.cache.query.QueryException - during query execution

isLimitExceeded

public boolean isLimitExceeded()
                        throws com.gemstone.gemfire.cache.query.QueryException
Gets value of a flag that indicates excess of query limit.

Returns:
boolean
Throws:
com.gemstone.gemfire.cache.query.QueryException - during query execution

page

public java.util.List<V> page(int pageNumber)
                       throws com.gemstone.gemfire.cache.query.QueryException
Returns entries for a specified page number. Use getTotalNumberOfPages() method to know how many pages this query has.

Parameters:
pageNumber - number of page to return
Returns:
List list of entries
Throws:
com.gemstone.gemfire.cache.query.QueryException - during query execution

pageExists

public boolean pageExists(int pageNumber)
                   throws com.gemstone.gemfire.cache.query.QueryException
Checks that a specified page number exists.

Parameters:
pageNumber - of type int
Returns:
boolean
Throws:
com.gemstone.gemfire.cache.query.QueryException - during query execution

storePage

protected void storePage(int pageNumber,
                         java.util.List<java.lang.Object> page)


Copyright © 2011. All Rights Reserved.