JSON refactoring
[jalview.git] / src / jalview / ext / ensembl / EnsemblSeqProxy.java
index 6be0486..7bf2563 100644 (file)
@@ -40,8 +40,8 @@ import jalview.util.Comparison;
 import jalview.util.DBRefUtils;
 import jalview.util.IntRangeComparator;
 import jalview.util.MapList;
+import jalview.util.Platform;
 
-import java.io.BufferedReader;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -49,9 +49,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
 
 /**
@@ -258,6 +257,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
     String accId = querySeq.getName();
     try
     {
+      System.out.println("Adding protein product for " + accId);
       AlignmentI protein = new EnsemblProtein(getDomain())
               .getSequenceRecords(accId);
       if (protein == null || protein.getHeight() == 0)
@@ -387,13 +387,11 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
       inProgress = false;
       throw new JalviewException("ENSEMBL Rest API not available.");
     }
-    BufferedReader br = getSequenceReader(ids);
-    if (br == null)
-    {
-      return alignment;
-    }
+       Platform.timeCheck("EnsemblSeqProx.fetchSeq ", Platform.TIME_MARK);
 
-    List<SequenceI> seqs = parseSequenceJson(br);
+    List<SequenceI> seqs = parseSequenceJson(ids);
+    if (seqs == null)
+       return alignment;
 
     if (seqs.isEmpty())
     {
@@ -446,9 +444,9 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
    * @return a single jalview.datamodel.Sequence
    * @see http://rest.ensembl.org/documentation/info/sequence_id
    */
-  protected List<SequenceI> parseSequenceJson(BufferedReader br)
+  @SuppressWarnings("unchecked")
+  protected List<SequenceI> parseSequenceJson(List<String> ids)
   {
-    JSONParser jp = new JSONParser();
     List<SequenceI> result = new ArrayList<>();
     try
     {
@@ -456,7 +454,9 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
        * for now, assumes only one sequence returned; refactor if needed
        * in future to handle a JSONArray with more than one
        */
-      final JSONObject val = (JSONObject) jp.parse(br);
+      Map<String, Object> val = (Map<String, Object>) getJSON(null, ids, -1, MODE_MAP, null);
+      if (val == null)
+         return null;
       Object s = val.get("desc");
       String desc = s == null ? null : s.toString();
       s = val.get("id");