This is an automated email from the git hooks/post-receive script. New commit to branch devel in repository Pollen. See http://git.None/Pollen.git commit 5feaa08cdaf5d27d9bb3b7cd5d64f43853f3c1e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed May 28 11:58:17 2014 +0200 Improve pagination API --- .../pollen/persistence/entity/CommentTopiaDao.java | 1 - .../rest/api/PollenRestApiApplicationListener.java | 4 ++- .../services/bean/PaginationParameterBean.java | 27 +++++++++++++++ .../pollen/services/bean/PaginationResultBean.java | 39 +++++++++++++--------- .../chorem/pollen/services/bean/PollenBeans.java | 13 ++++++++ .../pollen/services/service/CommentService.java | 6 +++- 6 files changed, 72 insertions(+), 18 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/CommentTopiaDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/CommentTopiaDao.java index c314ee3..feba455 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/CommentTopiaDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/CommentTopiaDao.java @@ -29,7 +29,6 @@ public class CommentTopiaDao extends AbstractCommentTopiaDao<Comment> { public PaginationResult<Comment> find(Poll poll, PaginationParameter paginationParameter) { PaginationResult<Comment> comments = forPollEquals(poll) - .setOrderByArguments(Comment.PROPERTY_TOPIA_CREATE_DATE) .findPage(paginationParameter); return comments; diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationListener.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationListener.java index 886ce14..aa9581e 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationListener.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationListener.java @@ -34,6 +34,7 @@ import org.chorem.pollen.services.bean.ChoiceBean; import org.chorem.pollen.services.bean.CommentBean; import org.chorem.pollen.services.bean.FavoriteListBean; import org.chorem.pollen.services.bean.FavoriteListMemberBean; +import org.chorem.pollen.services.bean.PaginationParameterBean; import org.chorem.pollen.services.bean.PollBean; import org.chorem.pollen.services.bean.PollenUserBean; import org.chorem.pollen.services.bean.VoteBean; @@ -63,7 +64,8 @@ public class PollenRestApiApplicationListener implements WebMotionServerListener PollBean.class, PollenUserBean.class, FavoriteListBean.class, - FavoriteListMemberBean.class + FavoriteListMemberBean.class, + PaginationParameterBean.class ); @Override diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationParameterBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationParameterBean.java index a621328..e2ee793 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationParameterBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationParameterBean.java @@ -41,10 +41,21 @@ public class PaginationParameterBean { */ protected int pageSize; + protected String order; + + protected boolean desc; + public static PaginationParameterBean of(int pageNumber, int pageSize) { + PaginationParameterBean result = of (pageNumber, pageSize, null, false); + return result; + } + + public static PaginationParameterBean of(int pageNumber, int pageSize, String order, boolean desc) { PaginationParameterBean result = new PaginationParameterBean(); result.setPageNumber(pageNumber); result.setPageSize(pageSize); + result.setOrder(order); + result.setDesc(desc); return result; } @@ -70,4 +81,20 @@ public class PaginationParameterBean { public void setPageSize(int pageSize) { this.pageSize = pageSize; } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + public boolean isDesc() { + return desc; + } + + public void setDesc(boolean desc) { + this.desc = desc; + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationResultBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationResultBean.java index 79b08c3..223a59e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationResultBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PaginationResultBean.java @@ -33,11 +33,21 @@ public class PaginationResultBean<O extends PollenBean> { protected List<O> elements; - protected int currentPage; + public static class PaginationResultContextBean { - protected int lastPage; + protected int currentPage; - protected int pageSize; + protected int lastPage; + + protected int pageSize; + + protected String order; + + protected boolean desc; + + } + + protected PaginationResultContextBean pagination = new PaginationResultContextBean(); public List<O> getElements() { return elements; @@ -47,28 +57,27 @@ public class PaginationResultBean<O extends PollenBean> { this.elements = elements; } - public int getCurrentPage() { - return currentPage; + public PaginationResultContextBean getPagination() { + return pagination; } public void setCurrentPage(int currentPage) { - this.currentPage = currentPage; - } - - public int getLastPage() { - return lastPage; + pagination.currentPage = currentPage; } public void setLastPage(int lastPage) { - this.lastPage = lastPage; + pagination.lastPage = lastPage; } - public int getPageSize() { - return pageSize; + public void setPageSize(int pageSize) { + pagination.pageSize = pageSize; } - public void setPageSize(int pageSize) { - this.pageSize = pageSize; + public void setOrder(String order) { + pagination.order = order; } + public void setDesc(boolean desc) { + pagination.desc = desc; + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java index 7a2c2fc..fcfcd33 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java @@ -24,12 +24,15 @@ package org.chorem.pollen.services.bean; import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import org.apache.commons.collections4.CollectionUtils; import org.chorem.pollen.services.PollenTechnicalException; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.util.pagination.PaginationOrder; import org.nuiton.util.pagination.PaginationResult; import java.util.ArrayList; import java.util.Collection; +import java.util.List; /** * Created on 5/27/14. @@ -69,6 +72,16 @@ public class PollenBeans { result.setPageSize(entities.getCurrentPage().getPageSize()); result.setCurrentPage(entities.getCurrentPage().getPageNumber()); result.setLastPage(entities.getLastPage().getPageNumber()); + List<PaginationOrder> orderClauses = entities.getCurrentPage().getOrderClauses(); + if (CollectionUtils.isNotEmpty(orderClauses)) { + + // take the first order clause + PaginationOrder paginationOrder = orderClauses.get(0); + result.setOrder(paginationOrder.getClause()); + result.setDesc(paginationOrder.isDesc()); + + } + return result; diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java index 34ec81f..1141b41 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java @@ -210,7 +210,11 @@ public class CommentService extends PollenServiceSupport { if (paginationParameter == null) { int pageSize = getPollenServiceConfig().getDefaultCommentPaginationSize(); - paginationParameter = PaginationParameterBean.of(0, pageSize); + paginationParameter = PaginationParameterBean.of( + 0, + pageSize, + Comment.PROPERTY_TOPIA_CREATE_DATE, + true); } -- To stop receiving notification emails like this one, please contact Chorem.org SCM administrator <admin+scm@chorem.org>.