From b3b4310a5f0e59fbeab4bcf24877df0419681ebd Mon Sep 17 00:00:00 2001 From: Mahmoud Ben Hassine Date: Mon, 27 May 2024 11:26:07 +0200 Subject: [PATCH] Remove unused parameter in SqlPagingQueryUtils#generateGroupedTopSqlQuery --- .../support/HsqlPagingQueryProvider.java | 5 ++-- .../database/support/SqlPagingQueryUtils.java | 26 +++++++++++++++++++ .../support/SqlServerPagingQueryProvider.java | 5 ++-- .../support/SybasePagingQueryProvider.java | 5 ++-- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java index fed56bab8b..49e3741a4f 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2022 the original author or authors. + * Copyright 2006-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ * * @author Thomas Risberg * @author Michael Minella + * @author Mahmoud Ben Hassine * @since 2.0 */ public class HsqlPagingQueryProvider extends AbstractSqlPagingQueryProvider { @@ -37,7 +38,7 @@ public String generateFirstPageQuery(int pageSize) { @Override public String generateRemainingPagesQuery(int pageSize) { if (StringUtils.hasText(getGroupClause())) { - return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, true, buildTopClause(pageSize)); + return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, buildTopClause(pageSize)); } else { return SqlPagingQueryUtils.generateTopSqlQuery(this, true, buildTopClause(pageSize)); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java index 29e1ee2a52..2ae66e4388 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java @@ -144,7 +144,10 @@ public static String generateTopSqlQuery(AbstractSqlPagingQueryProvider provider * to the first page (false) * @param topClause the implementation specific top clause to be used * @return the generated query + * @deprecated since v5.2 in favor of + * {@link #generateGroupedTopSqlQuery(AbstractSqlPagingQueryProvider, String)} */ + @Deprecated public static String generateGroupedTopSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, String topClause) { StringBuilder sql = new StringBuilder(); @@ -161,6 +164,29 @@ public static String generateGroupedTopSqlQuery(AbstractSqlPagingQueryProvider p return sql.toString(); } + /** + * Generate SQL query string using a TOP clause + * @param provider {@link AbstractSqlPagingQueryProvider} providing the implementation + * specifics + * @param topClause the implementation specific top clause to be used + * @return the generated query + * @since 5.2 + */ + public static String generateGroupedTopSqlQuery(AbstractSqlPagingQueryProvider provider, String topClause) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ").append(topClause).append(" * FROM ("); + sql.append("SELECT ").append(provider.getSelectClause()); + sql.append(" FROM ").append(provider.getFromClause()); + sql.append(provider.getWhereClause() == null ? "" : " WHERE " + provider.getWhereClause()); + buildGroupByClause(provider, sql); + sql.append(") AS MAIN_QRY "); + sql.append("WHERE "); + buildSortConditions(provider, sql); + sql.append(" ORDER BY ").append(buildSortClause(provider)); + + return sql.toString(); + } + /** * Generate SQL query string using a ROW_NUM condition * @param provider {@link AbstractSqlPagingQueryProvider} providing the implementation diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProvider.java index 59332cf271..51b879ed2a 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ * * @author Thomas Risberg * @author Michael Minella + * @author Mahmoud Ben Hassine * @since 2.0 */ public class SqlServerPagingQueryProvider extends SqlWindowingPagingQueryProvider { @@ -37,7 +38,7 @@ public String generateFirstPageQuery(int pageSize) { @Override public String generateRemainingPagesQuery(int pageSize) { if (StringUtils.hasText(getGroupClause())) { - return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, true, buildTopClause(pageSize)); + return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, buildTopClause(pageSize)); } else { return SqlPagingQueryUtils.generateTopSqlQuery(this, true, buildTopClause(pageSize)); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SybasePagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SybasePagingQueryProvider.java index d91e1f44c4..af69169139 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SybasePagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SybasePagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ * * @author Thomas Risberg * @author Michael Minella + * @author Mahmoud Ben Hassine * @since 2.0 */ public class SybasePagingQueryProvider extends SqlWindowingPagingQueryProvider { @@ -37,7 +38,7 @@ public String generateFirstPageQuery(int pageSize) { @Override public String generateRemainingPagesQuery(int pageSize) { if (StringUtils.hasText(getGroupClause())) { - return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, true, buildTopClause(pageSize)); + return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, buildTopClause(pageSize)); } else { return SqlPagingQueryUtils.generateTopSqlQuery(this, true, buildTopClause(pageSize));