package com.feedly.cassandra.dao;
import java.util.Comparator;
import java.util.List;
class IndexedValueComparator<V> implements Comparator<IndexedValue<V>>
{
private final int _sortAsc;
public IndexedValueComparator(boolean sortAsc)
{
_sortAsc = sortAsc ? 1 : -1;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public int compare(IndexedValue<V> o1, IndexedValue<V> o2)
{
List<Object> vals1 = o1.getIndexValues();
List<Object> vals2 = o2.getIndexValues();
int size1 = vals1.size();
int size2 = vals2.size();
for(int i = 0; i < size1; i++)
{
if(i == size2)
return _sortAsc;
Comparable cmp1 = (Comparable) vals1.get(i);
Comparable cmp2 = (Comparable) vals2.get(i);
int result = cmp1.compareTo(cmp2);
if(result != 0)
return _sortAsc * result;
}
return _sortAsc * (size1 - size2);
}
}