org.velocityweb.jdbc.dialect
Class StandardPageDialect

java.lang.Object
  extended byorg.velocityweb.jdbc.dialect.StandardPageDialect
All Implemented Interfaces:
PageDialect
Direct Known Subclasses:
MySQLPageDialect, OraclePageDialect, PostgreSQLPageDialect, SQLServer2000PageDialect

public class StandardPageDialect
extends java.lang.Object
implements PageDialect

common page dialect, follow SQL standard 2003.

 support: DB2,MSSQL 2005
 don't support:Oracle, PostgreSQL, MSSQL 2000,MySQL
 

Author:
Jacklondon Chen

Constructor Summary
StandardPageDialect()
           
 
Method Summary
 java.lang.String getCountSql(java.lang.String sql)
          generate count SQL, like select count(*) from xxx.
 int[] getPageParemeterValuesWithPageInfo(int pageIndex, int pageSize)
          get parementer values if the page SQL is using ? before by calling public String getPageSql(String sql, String orderBy)
protected  java.lang.String getPageSqlImpl(java.lang.String sql, java.lang.String orderBy, java.lang.Long pageIndex, java.lang.Long pageSize)
          generate page SQL by non-page SQL
 java.lang.String getPageSqlWithoutPageInfo(java.lang.String sql, java.lang.String orderBy)
          generate page SQL by non-page SQL
 java.lang.String getPageSqlWithPageInfo(java.lang.String sql, java.lang.String orderBy, int pageIndex, int pageSize)
          generate page SQL by non-page SQL
 java.util.List mergePageParemeterValues(java.util.List originalParemeterList, int[] pageParemeterValues)
          merge page paremeter values, some normally add after orignal paramters
protected  boolean supportSubqueryNaming()
          check if current database support sub-query naming
 void validatePageSqlParameters(java.lang.String sql, java.lang.String orderBy, java.lang.Long pageIndex, java.lang.Long pageSize)
          validate page SQL parameters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StandardPageDialect

public StandardPageDialect()
Method Detail

getCountSql

public java.lang.String getCountSql(java.lang.String sql)
generate count SQL, like select count(*) from xxx.
 select count(*) from (" + sql + ") xxxx
 

Specified by:
getCountSql in interface PageDialect
Parameters:
sql -
Returns:
count SQL

getPageSqlImpl

protected java.lang.String getPageSqlImpl(java.lang.String sql,
                                          java.lang.String orderBy,
                                          java.lang.Long pageIndex,
                                          java.lang.Long pageSize)
generate page SQL by non-page SQL
 SELECT * FROM (
   SELECT
     ROW_NUMBER() OVER (ORDER BY key ASC) AS rownum_xx,
     columns
   FROM tablename
 ) AS foo
 WHERE rownum_xx > skip AND rownum_xx <= (n+skip) 
 

Parameters:
sql -
pageIndex - page index, begin from 0, if this parameter is null, the result SQL will place a '?'
pageSize - page size, bigger than 0, if this parameter is null, the result SQL will place a '?'
Returns:

getPageParemeterValuesWithPageInfo

public int[] getPageParemeterValuesWithPageInfo(int pageIndex,
                                                int pageSize)
get parementer values if the page SQL is using ? before by calling public String getPageSql(String sql, String orderBy)

Specified by:
getPageParemeterValuesWithPageInfo in interface PageDialect
Parameters:
pageIndex -
pageSize -
Returns:
int array contains 2 items.

validatePageSqlParameters

public void validatePageSqlParameters(java.lang.String sql,
                                      java.lang.String orderBy,
                                      java.lang.Long pageIndex,
                                      java.lang.Long pageSize)
validate page SQL parameters

Parameters:
sql - SQL without order by,
orderBy -
pageIndex - page index, begin from 0
pageSize - page size, bigger than 0

supportSubqueryNaming

protected boolean supportSubqueryNaming()
check if current database support sub-query naming

Returns:
return true if follow SQL 2003 standard

getPageSqlWithoutPageInfo

public final java.lang.String getPageSqlWithoutPageInfo(java.lang.String sql,
                                                        java.lang.String orderBy)
generate page SQL by non-page SQL

Specified by:
getPageSqlWithoutPageInfo in interface PageDialect
Parameters:
sql -
orderBy - cannot be missing, "order by" fields should exists in "select" fields
Returns:
the paging SQL, with '?' stands for pageIndex and pageSize

getPageSqlWithPageInfo

public final java.lang.String getPageSqlWithPageInfo(java.lang.String sql,
                                                     java.lang.String orderBy,
                                                     int pageIndex,
                                                     int pageSize)
generate page SQL by non-page SQL

Specified by:
getPageSqlWithPageInfo in interface PageDialect
Parameters:
sql -
orderBy - cannot be missing, "order by" fields should exists in "select" fields
pageIndex - page index, begin from 0
pageSize - page size, bigger than 0
Returns:
the paging SQL, with pageIndex and pageSize

mergePageParemeterValues

public java.util.List mergePageParemeterValues(java.util.List originalParemeterList,
                                               int[] pageParemeterValues)
merge page paremeter values, some normally add after orignal paramters

Specified by:
mergePageParemeterValues in interface PageDialect
Parameters:
pageParemeterValues -
Returns:
the paremeter list for query current page data