package name.abuchen.portfolio.ui.util;
import java.util.Comparator;
import java.util.function.Function;
public final class AttributeComparator implements Comparator<Object>
{
private Function<Object, Comparable<?>> provider;
public AttributeComparator(Function<Object, Comparable<?>> attributeProvider)
{
super();
this.provider = attributeProvider;
}
@Override
public int compare(Object o1, Object o2)
{
@SuppressWarnings("unchecked")
Comparable<Object> object1 = (Comparable<Object>) provider.apply(o1);
@SuppressWarnings("unchecked")
Comparable<Object> object2 = (Comparable<Object>) provider.apply(o2);
if (object1 == null && object2 == null)
return 0;
else if (object1 == null)
return -1;
else if (object2 == null)
return 1;
return object1.compareTo(object2);
}
}