package me.osm.gazetter.join.out_handlers;
import java.util.Comparator;
import me.osm.gazetter.striper.GeoJsonWriter;
/**
* Hierarchical sorter
* */
public class JSONHComparator implements Comparator<String> {
private boolean inverse;
/**
* @param inverse inverse order
*/
public JSONHComparator (boolean inverse) {
this.inverse = inverse;
}
@Override
public int compare(String o1, String o2) {
if(o1 == null && o2 == null) return 0;
if(o1 == null || o2 == null) return o1 == null ? -1 : 1;
String h1 = GeoJsonWriter.getHHash(o1);
String h2 = GeoJsonWriter.getHHash(o2);
if(h1 == null && h2 == null) return 0;
if(h1 == null || h2 == null) return h1 == null ? -1 : 1;
return inverse ? h1.compareTo(h2) : h2.compareTo(h1);
}
}