From 33a16f7d993580ce417392cc238d6a81f700b892 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 6 Sep 2018 18:20:50 +0200 Subject: [PATCH] recon returns unsorted data entries for query - fix on best match --- .../services/annotators/ReconAnnotator.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) 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 8cf0fd072e..731bd37306 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"; -- GitLab