Class SqlPagingQueryUtils


  • public class SqlPagingQueryUtils
    extends java.lang.Object
    Utility class that generates the actual SQL statements used by query providers.
    Since:
    2.0
    Author:
    Thomas Risberg, Dave Syer, Michael Minella
    • Constructor Detail

      • SqlPagingQueryUtils

        public SqlPagingQueryUtils()
    • Method Detail

      • generateLimitSqlQuery

        public static java.lang.String generateLimitSqlQuery​(AbstractSqlPagingQueryProvider provider,
                                                             boolean remainingPageQuery,
                                                             java.lang.String limitClause)
        Generate SQL query string using a LIMIT clause
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        remainingPageQuery - is this query for the remaining pages (true) as opposed to the first page (false)
        limitClause - the implementation specific limit clause to be used
        Returns:
        the generated query
      • generateLimitGroupedSqlQuery

        public static java.lang.String generateLimitGroupedSqlQuery​(AbstractSqlPagingQueryProvider provider,
                                                                    boolean remainingPageQuery,
                                                                    java.lang.String limitClause)
        Generate SQL query string using a LIMIT clause
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        remainingPageQuery - is this query for the remaining pages (true) as opposed to the first page (false)
        limitClause - the implementation specific limit clause to be used
        Returns:
        the generated query
      • generateTopSqlQuery

        public static java.lang.String generateTopSqlQuery​(AbstractSqlPagingQueryProvider provider,
                                                           boolean remainingPageQuery,
                                                           java.lang.String topClause)
        Generate SQL query string using a TOP clause
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        remainingPageQuery - is this query for the remaining pages (true) as opposed to the first page (false)
        topClause - the implementation specific top clause to be used
        Returns:
        the generated query
      • generateGroupedTopSqlQuery

        public static java.lang.String generateGroupedTopSqlQuery​(AbstractSqlPagingQueryProvider provider,
                                                                  boolean remainingPageQuery,
                                                                  java.lang.String topClause)
        Generate SQL query string using a TOP clause
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        remainingPageQuery - is this query for the remaining pages (true) as opposed to the first page (false)
        topClause - the implementation specific top clause to be used
        Returns:
        the generated query
      • generateRowNumSqlQuery

        public static java.lang.String generateRowNumSqlQuery​(AbstractSqlPagingQueryProvider provider,
                                                              boolean remainingPageQuery,
                                                              java.lang.String rowNumClause)
        Generate SQL query string using a ROW_NUM condition
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        remainingPageQuery - is this query for the remaining pages (true) as opposed to the first page (false)
        rowNumClause - the implementation specific row num clause to be used
        Returns:
        the generated query
      • generateRowNumSqlQuery

        public static java.lang.String generateRowNumSqlQuery​(AbstractSqlPagingQueryProvider provider,
                                                              java.lang.String selectClause,
                                                              boolean remainingPageQuery,
                                                              java.lang.String rowNumClause)
        Generate SQL query string using a ROW_NUM condition
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        selectClause - String containing the select portion of the query.
        remainingPageQuery - is this query for the remaining pages (true) as opposed to the first page (false)
        rowNumClause - the implementation specific row num clause to be used
        Returns:
        the generated query
      • generateRowNumSqlQueryWithNesting

        public static java.lang.String generateRowNumSqlQueryWithNesting​(AbstractSqlPagingQueryProvider provider,
                                                                         java.lang.String selectClause,
                                                                         boolean remainingPageQuery,
                                                                         java.lang.String rowNumClause)
      • generateRowNumSqlQueryWithNesting

        public static java.lang.String generateRowNumSqlQueryWithNesting​(AbstractSqlPagingQueryProvider provider,
                                                                         java.lang.String innerSelectClause,
                                                                         java.lang.String outerSelectClause,
                                                                         boolean remainingPageQuery,
                                                                         java.lang.String rowNumClause)
      • generateLimitJumpToQuery

        public static java.lang.String generateLimitJumpToQuery​(AbstractSqlPagingQueryProvider provider,
                                                                java.lang.String limitClause)
        Generate SQL query string using a LIMIT clause
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        limitClause - the implementation specific top clause to be used
        Returns:
        the generated query
      • generateTopJumpToQuery

        public static java.lang.String generateTopJumpToQuery​(AbstractSqlPagingQueryProvider provider,
                                                              java.lang.String topClause)
        Generate SQL query string using a TOP clause
        Parameters:
        provider - AbstractSqlPagingQueryProvider providing the implementation specifics
        topClause - the implementation specific top clause to be used
        Returns:
        the generated query
      • buildSortClause

        public static java.lang.String buildSortClause​(AbstractSqlPagingQueryProvider provider)
        Generates ORDER BY attributes based on the sort keys.
        Parameters:
        provider - the AbstractSqlPagingQueryProvider to be used for used for pagination.
        Returns:
        a String that can be appended to an ORDER BY clause.
      • buildSortClause

        public static java.lang.String buildSortClause​(java.util.Map<java.lang.String,​Order> sortKeys)
        Generates ORDER BY attributes based on the sort keys.
        Parameters:
        sortKeys - Map where the key is the name of the column to be sorted and the value contains the Order.
        Returns:
        a String that can be appended to an ORDER BY clause.
      • buildSortConditions

        public static void buildSortConditions​(AbstractSqlPagingQueryProvider provider,
                                               java.lang.StringBuilder sql)
        Appends the where conditions required to query for the subsequent pages.
        Parameters:
        provider - the AbstractSqlPagingQueryProvider to be used for pagination.
        sql - StringBuilder containing the sql to be used for the query.