From a99d7e6b1ef18946dbc3eecee3e36fc674cc39f8 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 9 Jun 2011 21:46:22 +0200 Subject: [PATCH] improve manager paging api --- scm-core/src/main/java/sonia/scm/Manager.java | 22 +++++++++++---- .../resources/AbstractManagerResource.java | 4 ++- .../sonia/scm/group/xml/XmlGroupManager.java | 26 +++++++++++++---- .../repository/xml/XmlRepositoryManager.java | 28 ++++++++++++++----- .../sonia/scm/user/xml/XmlUserManager.java | 26 +++++++++++++---- 5 files changed, 81 insertions(+), 25 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/Manager.java b/scm-core/src/main/java/sonia/scm/Manager.java index c89d2a7914..093a494c14 100644 --- a/scm-core/src/main/java/sonia/scm/Manager.java +++ b/scm-core/src/main/java/sonia/scm/Manager.java @@ -38,6 +38,7 @@ package sonia.scm; import java.io.IOException; import java.util.Collection; +import java.util.Comparator; /** * @@ -86,15 +87,26 @@ public interface Manager * Method description * * - * - * @param sortby - * @param desc * @param start * @param limit * * @return * @since 1.4 */ - public Collection getAll(String sortby, boolean desc, int start, - int limit); + public Collection getAll(int start, int limit); + + /** + * Method description + * + * + * + * + * @param comparator + * @param start + * @param limit + * + * @return + * @since 1.4 + */ + public Collection getAll(Comparator comparator, int start, int limit); } diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java index e88dc02189..655b817530 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java @@ -505,7 +505,9 @@ public abstract class AbstractManagerResource 0) { - items = manager.getAll(sortby, desc, start, limit); + + // TODO create comparator + items = manager.getAll(start, limit); } else { diff --git a/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java b/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java index a0fd0834bb..02637720fb 100644 --- a/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java +++ b/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java @@ -63,6 +63,7 @@ import sonia.scm.util.Util; import java.io.IOException; import java.util.Collection; +import java.util.Comparator; import java.util.LinkedList; /** @@ -367,20 +368,18 @@ public class XmlGroupManager extends AbstractGroupManager * Method description * * - * @param sortby - * @param desc + * + * @param comparator * @param start * @param limit * * @return */ @Override - public Collection getAll(String sortby, boolean desc, int start, + public Collection getAll(Comparator comparator, int start, int limit) { - - // TODO sort - return Util.createSubCollection(groupDB.values(), + return Util.createSubCollection(groupDB.values(), comparator, new CollectionAppender() { @Override @@ -391,6 +390,21 @@ public class XmlGroupManager extends AbstractGroupManager }, start, limit); } + /** + * Method description + * + * + * @param start + * @param limit + * + * @return + */ + @Override + public Collection getAll(int start, int limit) + { + return getAll(null, start, limit); + } + /** * Method description * diff --git a/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java index 39cde13ad4..950b4591d0 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java @@ -71,6 +71,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; @@ -400,20 +401,18 @@ public class XmlRepositoryManager extends AbstractRepositoryManager * Method description * * - * @param sortby - * @param desc + * + * @param comparator * @param start * @param limit * * @return */ @Override - public Collection getAll(String sortby, boolean desc, int start, - int limit) + public Collection getAll(Comparator comparator, + int start, int limit) { - - // TODO sort - return Util.createSubCollection(repositoryDB.values(), + return Util.createSubCollection(repositoryDB.values(), comparator, new CollectionAppender() { @Override @@ -424,6 +423,21 @@ public class XmlRepositoryManager extends AbstractRepositoryManager }, start, limit); } + /** + * Method description + * + * + * @param start + * @param limit + * + * @return + */ + @Override + public Collection getAll(int start, int limit) + { + return getAll(null, start, limit); + } + /** * Method description * diff --git a/scm-webapp/src/main/java/sonia/scm/user/xml/XmlUserManager.java b/scm-webapp/src/main/java/sonia/scm/user/xml/XmlUserManager.java index 0bd2f44d54..4902544a91 100644 --- a/scm-webapp/src/main/java/sonia/scm/user/xml/XmlUserManager.java +++ b/scm-webapp/src/main/java/sonia/scm/user/xml/XmlUserManager.java @@ -69,6 +69,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; +import java.util.Comparator; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -411,20 +412,18 @@ public class XmlUserManager extends AbstractUserManager * Method description * * - * @param sortby - * @param desc + * + * @param comaparator * @param start * @param limit * * @return */ @Override - public Collection getAll(String sortby, boolean desc, int start, + public Collection getAll(Comparator comaparator, int start, int limit) { - - // TODO sort - return Util.createSubCollection(userDB.values(), + return Util.createSubCollection(userDB.values(), comaparator, new CollectionAppender() { @Override @@ -435,6 +434,21 @@ public class XmlUserManager extends AbstractUserManager }, start, limit); } + /** + * Method description + * + * + * @param start + * @param limit + * + * @return + */ + @Override + public Collection getAll(int start, int limit) + { + return getAll(null, start, limit); + } + /** * Method description *