package edu.isi.karma.util;
import java.util.Comparator;
import org.json.simple.JSONObject;
public class JSONLDReducerComparatorSimple implements Comparator<Object>
{
public JSONLDReducerComparatorSimple()
{
}
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof String && o2 instanceof String)
{
return ((String)o1).compareToIgnoreCase((String)o2);
}
else if(o1 instanceof JSONObject && o2 instanceof String)
{
JSONObject t = (JSONObject)o1;
if (t.containsKey("uri")) {
return ((String)t.get("uri")).compareToIgnoreCase((String)o2);
}
else if (t.containsKey("@id")) {
return ((String)t.get("@id")).compareToIgnoreCase((String)o2);
}
else {
return t.toString().compareToIgnoreCase((String)o2);
}
}
else if(o1 instanceof String && o2 instanceof JSONObject)
{
JSONObject t2 = (JSONObject)o2;
if (t2.containsKey("uri")) {
return (((String)o1).compareToIgnoreCase(((String)t2.get("uri"))));
}
else if (t2.containsKey("@id")) {
return (((String)o1).compareToIgnoreCase(((String)t2.get("@id"))));
}
else {
return o1.toString().compareToIgnoreCase(t2.toString());
}
}
else if(o1 instanceof JSONObject && o2 instanceof JSONObject)
{
JSONObject t1 = (JSONObject)o1;
JSONObject t2 = (JSONObject)o2;
if (t1.containsKey("uri") && t2.containsKey("uri")) {
return ((String)t1.get("uri")).compareTo(((String)t2.get("uri")));
}
else if (t1.containsKey("@id") && t2.containsKey("@id")) {
return ((String)t1.get("@id")).compareTo(((String)t2.get("@id")));
}
else {
return t1.toString().compareToIgnoreCase(t2.toString());
}
}
return 0;
}
}