package jalview.ws.dbsources; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefSource; import jalview.io.FormatAdapter; import jalview.io.IdentifyFile; import jalview.ws.intermine.IntermineFetchClient; import jalview.ws.seqfetcher.DbSourceProxyImpl; import java.util.Iterator; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import com.stevesoft.pat.Regex; public class Intermine extends DbSourceProxyImpl // implements DbSourceProxy { @Override public String getDbSource() { return DBRefSource.INTERMINE; } @Override public String getDbName() { return "Intermine"; } @Override public String getDbVersion() { return "0"; } @Override public String getAccessionSeparator() { return null; } @Override public Regex getAccessionValidator() { return null; } @Override public String getTestQuery() { // TODO Auto-generated method stub return "http://www.flymine.org/query/service/jbrowse/7227/features/2L?start=100000&end=100200&reference=true"; } @Override public boolean isValidReference(String accession) { return false; } @Override public AlignmentI getSequenceRecords(String query) throws Exception { startQuery(); String jsonString = IntermineFetchClient.fetchData(query); Object sequenceString = ""; System.out.println("Found json: " + jsonString); org.json.simple.parser.JSONParser jsonParser = new org.json.simple.parser.JSONParser(); try { JSONObject jobj = (JSONObject) jsonParser.parse(jsonString); JSONArray responses = (JSONArray) jobj.get("features"); for (Iterator rvals = responses.iterator(); rvals .hasNext();) { JSONObject feature = rvals.next(); Object seq = feature.get("seq"); System.out.println("Sequence : " + seq.toString()); } } catch (Exception e) { e.printStackTrace(); } stopQuery(); return parseResult(sequenceString.toString()); } @Override protected Alignment parseResult(String result) throws Exception { Alignment sequences = null; String format = new IdentifyFile().Identify(result, "Paste"); if (FormatAdapter.isValidFormat(format)) { sequences = new FormatAdapter().readFile(result, "Paste", format); } return sequences; } @Override public int getTier() { return 0; } }