diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java index 8cf0fd072ee134331854eedfa95775c5655cef93..731bd37306faffc35df2d033f17f8855e634f7f4 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotator.java @@ -7,6 +7,7 @@ import java.util.Map.Entry; import org.apache.log4j.Logger; +import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -133,6 +134,7 @@ public class ReconAnnotator extends ElementAnnotator implements IExternalService logger.warn("Unknown class type: " + annotatedObject.getClass()); return; } + logger.debug(url); try { String content = getWebPageContent(url); @@ -142,7 +144,7 @@ public class ReconAnnotator extends ElementAnnotator implements IExternalService JsonElement jelement = new JsonParser().parse(content); JsonObject jobject = jelement.getAsJsonObject(); if (jobject.get("results").getAsJsonArray().size() > 0) { - jobject = jobject.get("results").getAsJsonArray().get(0).getAsJsonObject(); + jobject = getBestMatchForAbbreviation(id, jobject.get("results").getAsJsonArray()); for (Entry<String, JsonElement> entry : jobject.entrySet()) { String key = entry.getKey(); @@ -297,6 +299,15 @@ public class ReconAnnotator extends ElementAnnotator implements IExternalService } else if (key.equals("epa_id")) { // for now we don't handle it continue; + } else if (key.equals("createdDate")) { + // for now we don't handle it + continue; + } else if (key.equals("updatedDate")) { + // for now we don't handle it + continue; + } else if (key.equals("biocyc")) { + // for now we don't handle it + continue; } else { unknown = true; } @@ -316,6 +327,25 @@ public class ReconAnnotator extends ElementAnnotator implements IExternalService } } + private JsonObject getBestMatchForAbbreviation(String id, JsonArray asJsonArray) { + String match = null; + JsonObject result = null; + for (JsonElement element : asJsonArray) { + String objAbreviation = ((JsonObject) element).get("abbreviation").getAsString(); + if (match == null) { + match = objAbreviation; + result = (JsonObject) element; + } else if (match.length() > objAbreviation.length()) { + match = objAbreviation; + result = (JsonObject) element; + } else if (id.equalsIgnoreCase(objAbreviation)) { + match = objAbreviation; + result = (JsonObject) element; + } + } + return result; + } + @Override public String getCommonName() { return "Recon annotator";