implementing comparator with BeanComparator of commons beanutils

This commit is contained in:
Sebastian Sdorra
2011-06-09 22:03:35 +02:00
parent a99d7e6b1e
commit cef6d27c99
2 changed files with 98 additions and 2 deletions

View File

@@ -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<T extends ModelObject,
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
*
@@ -505,13 +533,20 @@ public abstract class AbstractManagerResource<T extends ModelObject,
if (limit > 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<T extends ModelObject,
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 ---------------------------------------------------------------
/** Field description */