import jalview.datamodel.SequenceI;
import jalview.io.gff.SequenceOntologyI;
import jalview.util.JSONUtils;
+import jalview.util.Platform;
import java.io.BufferedReader;
import java.io.IOException;
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;
/**
public AlignmentI getSequenceRecords(String query) throws IOException
{
// TODO: use a vararg String... for getSequenceRecords instead?
+
List<String> queries = new ArrayList<>();
queries.add(query);
- BufferedReader fp = getSequenceReader(queries);
- if (fp == null)
- {
+ SequenceI seq = parseFeaturesJson(queries);
+ if (seq == null)
return null;
- }
-
- SequenceI seq = parseFeaturesJson(fp);
return new Alignment(new SequenceI[] { seq });
+
}
/**
* @param br
* @return
*/
- private SequenceI parseFeaturesJson(BufferedReader br)
+ @SuppressWarnings("unchecked")
+ private SequenceI parseFeaturesJson(List<String> queries)
{
SequenceI seq = new Sequence("Dummy", "");
-
- JSONParser jp = new JSONParser();
try
{
- JSONArray responses = (JSONArray) jp.parse(br);
- Iterator rvals = responses.iterator();
+ Iterator<Object> rvals = (Iterator<Object>) getJSON(null, queries, -1,
+ MODE_ITERATOR, null);
+ if (rvals == null)
+ {
+ return null;
+ }
while (rvals.hasNext())
{
try
{
- JSONObject obj = (JSONObject) rvals.next();
+ Map<String, Object> obj = (Map<String, Object>) 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 strand = obj.get("strand").toString();
Object phase = obj.get("phase");
String alleles = JSONUtils
- .arrayToList((JSONArray) obj.get("alleles"));
- String clinSig = JSONUtils
- .arrayToList(
- (JSONArray) obj.get("clinical_significance"));
+ .arrayToStringList((List<Object>) obj.get("alleles"));
+ String clinSig = JSONUtils.arrayToStringList(
+ (List<Object>) obj.get("clinical_significance"));
/*
* convert 'variation' to 'sequence_variant', and 'cds' to 'CDS'
{
type = SequenceOntologyI.CDS;
}
-
+
String desc = getFirstNotNull(obj, "alleles", "external_name",
JSON_ID);
SequenceFeature sf = new SequenceFeature(type, desc, start, end,
sf.setValue("clinical_significance", clinSig);
seq.addSequenceFeature(sf);
+
} catch (Throwable t)
{
// ignore - keep trying other features
}
} catch (ParseException | IOException e)
{
+ e.printStackTrace();
// ignore
}
* @param keys
* @return
*/
- protected String getFirstNotNull(JSONObject obj, String... keys)
+ @SuppressWarnings("unchecked")
+ protected String getFirstNotNull(Map<String, Object> obj, String... keys)
{
- String desc = null;
-
for (String key : keys)
{
Object val = obj.get(key);
if (val != null)
{
- String s = val instanceof JSONArray
- ? JSONUtils.arrayToList((JSONArray) val)
+ String s = val instanceof List<?>
+ ? JSONUtils.arrayToStringList((List<Object>) val)
: val.toString();
if (!s.isEmpty())
{
}
}
}
- return desc;
+ return null;
}
/**
* @param obj
* @param key
*/
- protected void setFeatureAttribute(SequenceFeature sf, JSONObject obj,
- String key)
+ protected void setFeatureAttribute(SequenceFeature sf,
+ Map<String, Object> obj, String key)
{
Object object = obj.get(key);
if (object != null)