X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblFeatures.java;h=6a0d67cf19609ac6554c33cf55915a677705549d;hb=8e7cf85a7f61f425e808cac53ead7bc27e402242;hp=9a45ddabe1b1fa260c9da3fcbecbad0ebd43b3ff;hpb=6f1a50917d60504ae3eb46377d3020271accacaf;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblFeatures.java b/src/jalview/ext/ensembl/EnsemblFeatures.java index 9a45dda..6a0d67c 100644 --- a/src/jalview/ext/ensembl/EnsemblFeatures.java +++ b/src/jalview/ext/ensembl/EnsemblFeatures.java @@ -35,10 +35,8 @@ import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -94,13 +92,9 @@ class EnsemblFeatures extends EnsemblRestClient // TODO: use a vararg String... for getSequenceRecords instead? List queries = new ArrayList<>(); queries.add(query); - BufferedReader fp = getSequenceReader(queries); - if (fp == null) - { - return null; - } - - SequenceI seq = parseFeaturesJson(fp); + SequenceI seq = parseFeaturesJson(queries); + if (seq == null) + return null; return new Alignment(new SequenceI[] { seq }); } @@ -111,30 +105,34 @@ class EnsemblFeatures extends EnsemblRestClient * @param br * @return */ - private SequenceI parseFeaturesJson(BufferedReader br) + @SuppressWarnings("unchecked") +private SequenceI parseFeaturesJson(List queries) { + + SequenceI seq = new Sequence("Dummy", ""); - JSONParser jp = new JSONParser(); try { - JSONArray responses = (JSONArray) jp.parse(br); - Iterator rvals = responses.iterator(); + + Iterator rvals = (Iterator) getJSON(null, queries, -1, MODE_ITERATOR, null); + if (rvals == null) + return null; while (rvals.hasNext()) { try { - JSONObject obj = (JSONObject) rvals.next(); + Map obj = (Map) rvals.next(); String type = obj.get("feature_type").toString(); int start = Integer.parseInt(obj.get("start").toString()); int end = Integer.parseInt(obj.get("end").toString()); String source = obj.get("source").toString(); String strand = obj.get("strand").toString(); String alleles = JSONUtils - .arrayToList((JSONArray) obj.get("alleles")); + .arrayToStringList((List) obj.get("alleles")); String clinSig = JSONUtils - .arrayToList( - (JSONArray) obj.get("clinical_significance")); + .arrayToStringList( + (List) obj.get("clinical_significance")); /* * convert 'variation' to 'sequence_variant', and 'cds' to 'CDS' @@ -169,20 +167,22 @@ class EnsemblFeatures extends EnsemblRestClient } } catch (ParseException | IOException e) { + e.printStackTrace(); // ignore } return seq; } - /** + +/** * Returns the first non-null attribute found (if any) as a string * * @param obj * @param keys * @return */ - protected String getFirstNotNull(JSONObject obj, String... keys) + protected String getFirstNotNull(Map obj, String... keys) { String desc = null; @@ -209,7 +209,7 @@ class EnsemblFeatures extends EnsemblRestClient * @param obj * @param key */ - protected void setFeatureAttribute(SequenceFeature sf, JSONObject obj, + protected void setFeatureAttribute(SequenceFeature sf, Map obj, String key) { Object object = obj.get(key);