package edu.isi.karma.util; import java.util.Comparator; import org.json.JSONObject; public class JSONLDReducerComparator implements Comparator<Object> { public JSONLDReducerComparator() { } @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.has("uri")) { return t.getString("uri").compareToIgnoreCase((String)o2); } else if (t.has("@id")) { return t.getString("@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.has("uri")) { return (((String)o1).compareToIgnoreCase(t2.getString("uri"))); } else if (t2.has("@id")) { return (((String)o1).compareToIgnoreCase(t2.getString("@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.has("uri") && t2.has("uri")) { return t1.getString("uri").compareTo(t2.getString("uri")); } else if (t1.has("@id") && t2.has("@id")) { return t1.getString("@id").compareTo(t2.getString("@id")); } else { return t1.toString().compareToIgnoreCase(t2.toString()); } } return 0; } }