package org.reldb.rel.v0.values;
import java.util.Comparator;
import org.reldb.rel.v0.generator.SelectOrder;
import org.reldb.rel.v0.types.OrderMap;
public class Sorter implements Comparator<Value> {
private int map[];
private SelectOrder.Order order[];
public Sorter(OrderMap orderMap) {
map = orderMap.getMap();
order = orderMap.getOrder();
}
public int compare(Value t1, Value t2) {
Value[] v1 = ((ValueTuple)t1).getValues();
Value[] v2 = ((ValueTuple)t2).getValues();
for (int i=0; i<map.length; i++) {
int attributeIndex = map[i];
int c = v1[attributeIndex].compareTo(v2[attributeIndex]);
if (c != 0)
return (order[i] == SelectOrder.Order.ASC) ? c : -c;
}
return 0;
}
}