diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index 54451a0502..7fe2a40dd2 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -106,6 +106,20 @@ google-collections 1.0 + + + + + commons-beanutils + commons-beanutils + 1.8.3 + + + + commons-collections + commons-collections + 3.2.1 + org.freemarker 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 655b817530..474ee4ef31 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 @@ -35,6 +35,8 @@ package sonia.scm.api.rest.resources; //~--- non-JDK imports -------------------------------------------------------- +import org.apache.commons.beanutils.BeanComparator; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,6 +50,7 @@ import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ import java.util.Collection; +import java.util.Comparator; import java.util.Date; import javax.ws.rs.Consumes; @@ -484,6 +487,31 @@ public abstract class AbstractManagerResource createComparator(String sortby, boolean desc) + { + Comparator comparator = null; + + if (desc) + { + comparator = new BeanReverseComparator(sortby); + } + else + { + comparator = new BeanComparator(sortby); + } + + return comparator; + } + /** * Method description * @@ -505,13 +533,20 @@ public abstract class AbstractManagerResource 0) { + if (Util.isEmpty(sortby)) + { - // TODO create comparator - items = manager.getAll(start, limit); + // replace with somethind useful + sortby = "id"; + } + + items = manager.getAll(createComparator(sortby, desc), start, limit); } else { items = manager.getAll(); + + // TODO sort result if sortby is not empty } return items; @@ -540,6 +575,53 @@ public abstract class AbstractManagerResource