mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 00:15:44 +01:00
implementing comparator with BeanComparator of commons beanutils
This commit is contained in:
@@ -106,6 +106,20 @@
|
|||||||
<artifactId>google-collections</artifactId>
|
<artifactId>google-collections</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- only for BeanComparator, replace with own implementation -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-beanutils</groupId>
|
||||||
|
<artifactId>commons-beanutils</artifactId>
|
||||||
|
<version>1.8.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-collections</groupId>
|
||||||
|
<artifactId>commons-collections</artifactId>
|
||||||
|
<version>3.2.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.freemarker</groupId>
|
<groupId>org.freemarker</groupId>
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ package sonia.scm.api.rest.resources;
|
|||||||
|
|
||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
|
import org.apache.commons.beanutils.BeanComparator;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -48,6 +50,7 @@ import sonia.scm.util.Util;
|
|||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
@@ -484,6 +487,31 @@ public abstract class AbstractManagerResource<T extends ModelObject,
|
|||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method description
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param sortby
|
||||||
|
* @param desc
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Comparator<T> createComparator(String sortby, boolean desc)
|
||||||
|
{
|
||||||
|
Comparator comparator = null;
|
||||||
|
|
||||||
|
if (desc)
|
||||||
|
{
|
||||||
|
comparator = new BeanReverseComparator(sortby);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
comparator = new BeanComparator(sortby);
|
||||||
|
}
|
||||||
|
|
||||||
|
return comparator;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method description
|
* Method description
|
||||||
*
|
*
|
||||||
@@ -505,13 +533,20 @@ public abstract class AbstractManagerResource<T extends ModelObject,
|
|||||||
|
|
||||||
if (limit > 0)
|
if (limit > 0)
|
||||||
{
|
{
|
||||||
|
if (Util.isEmpty(sortby))
|
||||||
|
{
|
||||||
|
|
||||||
// TODO create comparator
|
// replace with somethind useful
|
||||||
items = manager.getAll(start, limit);
|
sortby = "id";
|
||||||
|
}
|
||||||
|
|
||||||
|
items = manager.getAll(createComparator(sortby, desc), start, limit);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
items = manager.getAll();
|
items = manager.getAll();
|
||||||
|
|
||||||
|
// TODO sort result if sortby is not empty
|
||||||
}
|
}
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
@@ -540,6 +575,53 @@ public abstract class AbstractManagerResource<T extends ModelObject,
|
|||||||
return lastModified;
|
return lastModified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//~--- inner classes --------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class description
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @version Enter version here..., 11/06/09
|
||||||
|
* @author Enter your name here...
|
||||||
|
*/
|
||||||
|
private static class BeanReverseComparator extends BeanComparator
|
||||||
|
{
|
||||||
|
|
||||||
|
/** Field description */
|
||||||
|
private static final long serialVersionUID = -8535047820348790009L;
|
||||||
|
|
||||||
|
//~--- constructors -------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs ...
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param sortby
|
||||||
|
*/
|
||||||
|
private BeanReverseComparator(String sortby)
|
||||||
|
{
|
||||||
|
super(sortby);
|
||||||
|
}
|
||||||
|
|
||||||
|
//~--- methods ------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method description
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param o1
|
||||||
|
* @param o2
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int compare(Object o1, Object o2)
|
||||||
|
{
|
||||||
|
return super.compare(o1, o2) * -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
|
|||||||
Reference in New Issue
Block a user