From d1d5fa085dc0ed938bc2462299e099174436ae31 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Wed, 25 Sep 2019 13:58:39 +0200 Subject: [PATCH] =?UTF-8?q?DATACMNS-1583=20-=20Introduced=20QPageRequest.o?= =?UTF-8?q?f(=E2=80=A6)=20factory=20methods.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These methods are introduced for consistency with PageRequest. Constructors have been deprecated fro removal in 2.2. --- .../data/querydsl/QPageRequest.java | 49 +++++++++++++++++-- .../data/querydsl/QPageRequestUnitTests.java | 8 +-- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/springframework/data/querydsl/QPageRequest.java b/src/main/java/org/springframework/data/querydsl/QPageRequest.java index 928079835..bf7307ef7 100644 --- a/src/main/java/org/springframework/data/querydsl/QPageRequest.java +++ b/src/main/java/org/springframework/data/querydsl/QPageRequest.java @@ -26,6 +26,7 @@ import com.querydsl.core.types.OrderSpecifier; * Basic Java Bean implementation of {@link Pageable} with support for QueryDSL. * * @author Thomas Darimont + * @author Oliver Drotbohm */ public class QPageRequest extends AbstractPageRequest { @@ -39,7 +40,9 @@ public class QPageRequest extends AbstractPageRequest { * * @param page must not be negative. * @param size must be greater or equal to 0. + * @deprecated since 2.1, use {@link #of(int, int)} instead. */ + @Deprecated public QPageRequest(int page, int size) { this(page, size, QSort.unsorted()); } @@ -50,7 +53,9 @@ public class QPageRequest extends AbstractPageRequest { * @param page must not be negative. * @param size must be greater or equal to 0. * @param orderSpecifiers must not be {@literal null} or empty; + * @deprecated since 2.1, use {@link #of(int, int, OrderSpecifier...)} instead. */ + @Deprecated public QPageRequest(int page, int size, OrderSpecifier... orderSpecifiers) { this(page, size, new QSort(orderSpecifiers)); } @@ -61,7 +66,9 @@ public class QPageRequest extends AbstractPageRequest { * @param page must not be negative. * @param size must be greater or equal to 0. * @param sort must not be {@literal null}. + * @deprecated since 2.1, use {@link #of(int, int, QSort)} instead. */ + @Deprecated public QPageRequest(int page, int size, QSort sort) { super(page, size); @@ -71,6 +78,42 @@ public class QPageRequest extends AbstractPageRequest { this.sort = sort; } + /** + * Creates a new {@link QPageRequest}. Pages are zero indexed, thus providing 0 for {@code page} will return the first + * page. + * + * @param page must not be negative. + * @param size must be greater or equal to 0. + * @since 2.1 + */ + public static QPageRequest of(int page, int size) { + return new QPageRequest(page, size, QSort.unsorted()); + } + + /** + * Creates a new {@link QPageRequest} with the given {@link OrderSpecifier}s applied. + * + * @param page must not be negative. + * @param size must be greater or equal to 0. + * @param orderSpecifiers must not be {@literal null} or empty; + * @since 2.1 + */ + public static QPageRequest of(int page, int size, OrderSpecifier... orderSpecifiers) { + return new QPageRequest(page, size, new QSort(orderSpecifiers)); + } + + /** + * Creates a new {@link QPageRequest} with sort parameters applied. + * + * @param page must not be negative. + * @param size must be greater or equal to 0. + * @param sort must not be {@literal null}. + * @since 2.1 + */ + public static QPageRequest of(int page, int size, QSort sort) { + return new QPageRequest(page, size, sort); + } + /* * (non-Javadoc) * @see org.springframework.data.domain.Pageable#getSort() @@ -86,7 +129,7 @@ public class QPageRequest extends AbstractPageRequest { */ @Override public Pageable next() { - return new QPageRequest(getPageNumber() + 1, getPageSize(), sort); + return QPageRequest.of(getPageNumber() + 1, getPageSize(), sort); } /* @@ -95,7 +138,7 @@ public class QPageRequest extends AbstractPageRequest { */ @Override public Pageable previous() { - return new QPageRequest(getPageNumber() - 1, getPageSize(), sort); + return QPageRequest.of(getPageNumber() - 1, getPageSize(), sort); } /* @@ -104,6 +147,6 @@ public class QPageRequest extends AbstractPageRequest { */ @Override public Pageable first() { - return new QPageRequest(0, getPageSize(), sort); + return QPageRequest.of(0, getPageSize(), sort); } } diff --git a/src/test/java/org/springframework/data/querydsl/QPageRequestUnitTests.java b/src/test/java/org/springframework/data/querydsl/QPageRequestUnitTests.java index e22dc6502..31e06d5a3 100755 --- a/src/test/java/org/springframework/data/querydsl/QPageRequestUnitTests.java +++ b/src/test/java/org/springframework/data/querydsl/QPageRequestUnitTests.java @@ -31,14 +31,14 @@ public class QPageRequestUnitTests extends AbstractPageRequestUnitTests { */ @Override public AbstractPageRequest newPageRequest(int page, int size) { - return new QPageRequest(page, size); + return QPageRequest.of(page, size); } @Test public void constructsQPageRequestWithOrderSpecifiers() { QUser user = QUser.user; - QPageRequest pageRequest = new QPageRequest(0, 10, user.firstname.asc()); + QPageRequest pageRequest = QPageRequest.of(0, 10, user.firstname.asc()); assertThat(pageRequest.getSort()).isEqualTo(QSort.by(user.firstname.asc())); } @@ -47,7 +47,7 @@ public class QPageRequestUnitTests extends AbstractPageRequestUnitTests { public void constructsQPageRequestWithQSort() { QUser user = QUser.user; - QPageRequest pageRequest = new QPageRequest(0, 10, QSort.by(user.firstname.asc())); + QPageRequest pageRequest = QPageRequest.of(0, 10, QSort.by(user.firstname.asc())); assertThat(pageRequest.getSort()).isEqualTo(QSort.by(user.firstname.asc())); } @@ -56,6 +56,6 @@ public class QPageRequestUnitTests extends AbstractPageRequestUnitTests { public void rejectsNullSort() { assertThatExceptionOfType(IllegalArgumentException.class) // - .isThrownBy(() -> new QPageRequest(0, 10, (QSort) null)); + .isThrownBy(() -> QPageRequest.of(0, 10, (QSort) null)); } }