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