org.springframework.batch.item.database.support
Class AbstractSqlPagingQueryProvider

java.lang.Object
  extended by org.springframework.batch.item.database.support.AbstractSqlPagingQueryProvider
All Implemented Interfaces:
PagingQueryProvider
Direct Known Subclasses:
H2PagingQueryProvider, HsqlPagingQueryProvider, MySqlPagingQueryProvider, OraclePagingQueryProvider, PostgresPagingQueryProvider, SqlWindowingPagingQueryProvider

public abstract class AbstractSqlPagingQueryProvider
extends Object
implements PagingQueryProvider

Abstract SQL Paging Query Provider to serve as a base class for all provided SQL paging query providers. Any implementation must provide a way to specify the select clause, from clause and optionally a where clause. In addition a way to specify a single column sort key must also be provided. This sort key will be used to provide the paging functionality. It is recommended that there should be an index for the sort key to provide better performance. Provides properties and preparation for the mandatory "selectClause" and "fromClause" as well as for the optional "whereClause". Also provides property for the mandatory "sortKeys". Note: The columns that make up the sort key must be a true key and not just a column to order by.

Since:
2.0
Author:
Thomas Risberg, Dave Syer, Michael Minella

Constructor Summary
AbstractSqlPagingQueryProvider()
           
 
Method Summary
abstract  String generateFirstPageQuery(int pageSize)
          Method generating the query string to be used for retrieving the first page.
abstract  String generateJumpToItemQuery(int itemIndex, int pageSize)
          Method generating the query string to be used for jumping to a specific item position.
abstract  String generateRemainingPagesQuery(int pageSize)
          Method generating the query string to be used for retrieving the pages following the first page.
protected  String getFromClause()
           
 String getGroupClause()
          The getter for the group by clause
 int getParameterCount()
          The number of parameters that are declared in the query
protected  String getSelectClause()
           
 String getSortKeyPlaceHolder(String keyName)
          The sort key placeholder will vary depending on whether named parameters or traditional placeholders are used in query strings.
 Map<String,Order> getSortKeys()
          A Map of sort columns as the key and boolean for ascending/descending (assending = true).
protected  String getWhereClause()
           
 void init(DataSource dataSource)
          Check mandatory properties.
 boolean isUsingNamedParameters()
          Indicate whether the generated queries use named parameter syntax.
 void setFromClause(String fromClause)
           
 void setGroupClause(String groupClause)
          The setter for the group by clause
 void setSelectClause(String selectClause)
           
 void setSortKeys(Map<String,Order> sortKeys)
           
 void setWhereClause(String whereClause)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractSqlPagingQueryProvider

public AbstractSqlPagingQueryProvider()
Method Detail

setGroupClause

public void setGroupClause(String groupClause)
The setter for the group by clause

Parameters:
groupClause - SQL GROUP BY clause part of the SQL query string

getGroupClause

public String getGroupClause()
The getter for the group by clause

Returns:
SQL GROUP BY clause part of the SQL query string

setSelectClause

public void setSelectClause(String selectClause)
Parameters:
selectClause - SELECT clause part of SQL query string

getSelectClause

protected String getSelectClause()
Returns:
SQL SELECT clause part of SQL query string

setFromClause

public void setFromClause(String fromClause)
Parameters:
fromClause - FROM clause part of SQL query string

getFromClause

protected String getFromClause()
Returns:
SQL FROM clause part of SQL query string

setWhereClause

public void setWhereClause(String whereClause)
Parameters:
whereClause - WHERE clause part of SQL query string

getWhereClause

protected String getWhereClause()
Returns:
SQL WHERE clause part of SQL query string

setSortKeys

public void setSortKeys(Map<String,Order> sortKeys)
Parameters:
sortKeys - key to use to sort and limit page content

getSortKeys

public Map<String,Order> getSortKeys()
A Map of sort columns as the key and boolean for ascending/descending (assending = true).

Specified by:
getSortKeys in interface PagingQueryProvider
Returns:
sortKey key to use to sort and limit page content

getParameterCount

public int getParameterCount()
Description copied from interface: PagingQueryProvider
The number of parameters that are declared in the query

Specified by:
getParameterCount in interface PagingQueryProvider
Returns:
number of parameters

isUsingNamedParameters

public boolean isUsingNamedParameters()
Description copied from interface: PagingQueryProvider
Indicate whether the generated queries use named parameter syntax.

Specified by:
isUsingNamedParameters in interface PagingQueryProvider
Returns:
true if named parameter syntax is used

getSortKeyPlaceHolder

public String getSortKeyPlaceHolder(String keyName)
The sort key placeholder will vary depending on whether named parameters or traditional placeholders are used in query strings.

Specified by:
getSortKeyPlaceHolder in interface PagingQueryProvider
Parameters:
keyName - The sort key name
Returns:
place holder for sortKey.

init

public void init(DataSource dataSource)
          throws Exception
Check mandatory properties.

Specified by:
init in interface PagingQueryProvider
Parameters:
dataSource - DataSource to use for any initialization
Throws:
Exception
See Also:
InitializingBean.afterPropertiesSet()

generateFirstPageQuery

public abstract String generateFirstPageQuery(int pageSize)
Method generating the query string to be used for retrieving the first page. This method must be implemented in sub classes.

Specified by:
generateFirstPageQuery in interface PagingQueryProvider
Parameters:
pageSize - number of rows to read per page
Returns:
query string

generateRemainingPagesQuery

public abstract String generateRemainingPagesQuery(int pageSize)
Method generating the query string to be used for retrieving the pages following the first page. This method must be implemented in sub classes.

Specified by:
generateRemainingPagesQuery in interface PagingQueryProvider
Parameters:
pageSize - number of rows to read per page
Returns:
query string

generateJumpToItemQuery

public abstract String generateJumpToItemQuery(int itemIndex,
                                               int pageSize)
Method generating the query string to be used for jumping to a specific item position. This method must be implemented in sub classes.

Specified by:
generateJumpToItemQuery in interface PagingQueryProvider
Parameters:
itemIndex - the index of the item to jump to
pageSize - number of rows to read per page
Returns:
query string


Copyright © 2013 SpringSource. All Rights Reserved.