e738adff24b2e1a2a66ea74ec0d16740186be9d3
[jalview.git] / src / jalview / ws / dbsources / Intermine.java
1 package jalview.ws.dbsources;
2
3 import jalview.datamodel.Alignment;
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.DBRefSource;
6 import jalview.io.FormatAdapter;
7 import jalview.io.IdentifyFile;
8 import jalview.ws.intermine.IntermineFetchClient;
9 import jalview.ws.seqfetcher.DbSourceProxyImpl;
10
11 import java.util.Iterator;
12
13 import org.json.simple.JSONArray;
14 import org.json.simple.JSONObject;
15
16 import com.stevesoft.pat.Regex;
17
18 public class Intermine extends DbSourceProxyImpl // implements DbSourceProxy
19 {
20
21   @Override
22   public String getDbSource()
23   {
24     return DBRefSource.INTERMINE;
25   }
26
27   @Override
28   public String getDbName()
29   {
30     return "Intermine";
31   }
32
33   @Override
34   public String getDbVersion()
35   {
36     return "0";
37   }
38
39   @Override
40   public String getAccessionSeparator()
41   {
42     return null;
43   }
44
45   @Override
46   public Regex getAccessionValidator()
47   {
48     return null;
49   }
50
51
52   @Override
53   public String getTestQuery()
54   {
55     // TODO Auto-generated method stub
56     return "http://www.flymine.org/query/service/jbrowse/7227/features/2L?start=100000&end=100200&reference=true";
57   }
58
59   @Override
60   public boolean isValidReference(String accession)
61   {
62     return false;
63   }
64
65   @Override
66   public AlignmentI getSequenceRecords(String query) throws Exception
67   {
68     startQuery();
69     String jsonString = IntermineFetchClient.fetchData(query);
70
71     Object sequenceString = "";
72     System.out.println("Found json: " + jsonString);
73     org.json.simple.parser.JSONParser jsonParser = new org.json.simple.parser.JSONParser();
74     try
75     {
76       JSONObject jobj = (JSONObject) jsonParser.parse(jsonString);
77       JSONArray responses = (JSONArray) jobj.get("features");
78       for (Iterator<JSONObject> rvals = responses.iterator(); rvals
79               .hasNext();)
80       {
81         JSONObject feature = rvals.next();
82         Object seq = feature.get("seq");
83         System.out.println("Sequence : " + seq.toString());
84       }
85     } catch (Exception e)
86     {
87       e.printStackTrace();
88     }
89     stopQuery();
90     return parseResult(sequenceString.toString());
91   }
92
93   @Override
94   protected Alignment parseResult(String result) throws Exception
95   {
96     Alignment sequences = null;
97     String format = new IdentifyFile().Identify(result, "Paste");
98     if (FormatAdapter.isValidFormat(format))
99     {
100       sequences = new FormatAdapter().readFile(result, "Paste",
101               format);
102     }
103     return sequences;
104   }
105
106
107
108
109
110   @Override
111   public int getTier()
112   {
113     return 0;
114   }
115
116 }