package edu.brown.catalog;
import java.util.Comparator;
import org.voltdb.catalog.CatalogType;
/**
* Comparator for CatalogTypes that examines one particular field
*/
public final class CatalogFieldComparator<T extends CatalogType> implements Comparator<T> {
private final String field;
public CatalogFieldComparator(String field) {
this.field = field;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public int compare(T obj0, T obj1) {
if (obj0 == null && obj1 == null)
return (0);
if (obj0 == null)
return (1);
if (obj1 == null)
return (-1);
Object val0 = obj0.getField(this.field);
Object val1 = obj1.getField(this.field);
if (val0 == null && val1 == null)
return (0);
if (val0 == null)
return (1);
if (val1 == null)
return (1);
return (val0 instanceof Comparable<?> ? ((Comparable) val0).compareTo(val1) : val0.toString().compareTo(val1.toString()));
};
}