Implementation of support for Intermine webservice as a source of sequence data
[jalview.git] / src / jalview / ws / dbsources / Intermine.java
index 65ce5c9..e738adf 100644 (file)
@@ -1,13 +1,21 @@
 package jalview.ws.dbsources;
 
+import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.DBRefSource;
-import jalview.ws.seqfetcher.DbSourceProxy;
+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
+public class Intermine extends DbSourceProxyImpl // implements DbSourceProxy
 {
 
   @Override
@@ -25,77 +33,83 @@ public class Intermine extends DbSourceProxyImpl implements DbSourceProxy
   @Override
   public String getDbVersion()
   {
-    // TODO Auto-generated method stub
-    return null;
+    return "0";
   }
 
   @Override
   public String getAccessionSeparator()
   {
-    // TODO Auto-generated method stub
     return null;
   }
 
   @Override
   public Regex getAccessionValidator()
   {
-    // TODO Auto-generated method stub
     return null;
   }
 
-  // @Override
-  // public Hashtable getDbSourceProperties()
-  // {
-  // // TODO Auto-generated method stub
-  // return null;
-  // }
 
   @Override
   public String getTestQuery()
   {
     // TODO Auto-generated method stub
-    return null;
+    return "http://www.flymine.org/query/service/jbrowse/7227/features/2L?start=100000&end=100200&reference=true";
   }
 
   @Override
   public boolean isValidReference(String accession)
   {
-    // TODO Auto-generated method stub
     return false;
   }
 
   @Override
-  public AlignmentI getSequenceRecords(String queries) throws Exception
+  public AlignmentI getSequenceRecords(String query) throws Exception
   {
-    // TODO Auto-generated method stub
-    return null;
+    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<JSONObject> 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
-  public boolean queryInProgress()
+  protected Alignment parseResult(String result) throws Exception
   {
-    // TODO Auto-generated method stub
-    return false;
+    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 StringBuffer getRawRecords()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
 
-  @Override
-  public boolean isA(Object dbsourceproperty)
-  {
-    // TODO Auto-generated method stub
-    return false;
-  }
+
+
 
   @Override
   public int getTier()
   {
-    // TODO Auto-generated method stub
     return 0;
   }