updated jalview version of dasobert 1.53e client and added Das Sequence Source discov...
[jalview.git] / src / jalview / ws / dbsources / das / DasSequenceSourceListener.java
1 package jalview.ws.dbsources.das;\r
2 \r
3 import jalview.datamodel.AlignmentI;\r
4 import jalview.datamodel.Alignment;\r
5 import jalview.datamodel.DBRefEntry;\r
6 import jalview.datamodel.Sequence;\r
7 import jalview.datamodel.SequenceI;\r
8 import jalview.ws.dbsources.DasSequenceSource;\r
9 \r
10 import org.biojava.dasobert.eventmodel.SequenceEvent;\r
11 import org.biojava.dasobert.eventmodel.SequenceListener;\r
12 \r
13 /**\r
14  * Listen for sequence fetch events from a dasobert SequenceThread started with a \r
15  * query string and collect sequences returned from the DAS sequence source. \r
16  * @author JimP\r
17  *\r
18  */\r
19 public class DasSequenceSourceListener implements SequenceListener\r
20 {\r
21   \r
22   String ourAccession = null;\r
23   DasSequenceSource oursource=null;\r
24   /**\r
25    * \r
26    * @param source the DAS Sequence DbProxy object containing database details for this source\r
27    * @param query the query string sent to the das source that we should be listening for.\r
28    */\r
29   public DasSequenceSourceListener(DasSequenceSource source, String query)\r
30   {\r
31     oursource=source;\r
32     ourAccession=query;\r
33   }\r
34 \r
35   public void clearSelection()\r
36   {\r
37     // TODO Auto-generated method stub\r
38 \r
39   }\r
40   java.util.Vector seqs = null;\r
41   public void newSequence(SequenceEvent e)\r
42   {\r
43     if (!e.getAccessionCode().equals(ourAccession))\r
44     {\r
45       System.err.println("Warning - received sequence event for strange accession code ("\r
46               +e.getAccessionCode()+") - we expected "+ourAccession);\r
47       \r
48       return;\r
49     }\r
50     if (seqs==null)\r
51     {\r
52       if (e.getSequence().length()==0)\r
53       {\r
54         System.err.println("Empty sequence returned for accession code ("\r
55                 +e.getAccessionCode()+") from "+oursource.getDbName());\r
56         called=true;\r
57         noSequences=true;\r
58         return;\r
59       }\r
60       seqs = new java.util.Vector();\r
61     }\r
62     Sequence sq = new Sequence(e.getAccessionCode(), e.getSequence());\r
63     sq.addDBRef(new DBRefEntry(oursource.getDbSource(), oursource.getDbVersion()+":"+e.getVersion(), e.getAccessionCode()));\r
64     seqs.addElement(sq);\r
65     called=true;\r
66   }\r
67 \r
68   public void selectedSeqPosition(int position)\r
69   {\r
70     // TODO Auto-generated method stub\r
71 \r
72   }\r
73 \r
74   public void selectedSeqRange(int start, int end)\r
75   {\r
76     // TODO Auto-generated method stub\r
77 \r
78   }\r
79 \r
80   public void selectionLocked(boolean flag)\r
81   {\r
82     // TODO Auto-generated method stub\r
83 \r
84   }\r
85 \r
86   public void newObjectRequested(String accessionCode)\r
87   {\r
88     // TODO Auto-generated method stub\r
89 \r
90   }\r
91   boolean noSequences=false;\r
92   public void noObjectFound(String accessionCode)\r
93   {\r
94     if (accessionCode.equals(ourAccession))\r
95     {\r
96       noSequences=true;\r
97       called = true;\r
98     }\r
99   }\r
100   public boolean hasNoSequences() {\r
101     return noSequences;\r
102   }\r
103   boolean called=false;\r
104   public boolean isNotCalled()\r
105   {\r
106     return !called;\r
107   }\r
108 \r
109   public AlignmentI getSequences()\r
110   {\r
111     if (noSequences || seqs!=null && seqs.size()==0)\r
112       return null;\r
113     SequenceI[] sqs = new SequenceI[seqs.size()];\r
114     for (int i=0,iSize=seqs.size(); i<iSize;i++)\r
115     {\r
116       sqs[i] = (SequenceI) seqs.elementAt(i);\r
117     }\r
118     Alignment al = new Alignment(sqs);\r
119     if (oursource.getSource().hasCapability("features"))\r
120     {\r
121       java.util.Vector src = new java.util.Vector();\r
122       src.addElement(oursource.getSource());\r
123       new jalview.ws.DasSequenceFeatureFetcher(sqs, \r
124               null,\r
125               src, false, false);\r
126     }\r
127     \r
128     return al;\r
129   }\r
130 \r
131 }\r