seq size cant be less than 2 for tree
[jalview.git] / src / jalview / io / EBIFetchClient.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 package jalview.io;\r
20 \r
21 import java.io.*;\r
22 \r
23 import org.apache.axis.client.*;\r
24 import org.apache.axis.encoding.XMLType;\r
25 \r
26 import javax.xml.namespace.QName;\r
27 import javax.xml.rpc.ParameterMode;\r
28 \r
29 \r
30 /**\r
31  * DOCUMENT ME!\r
32  *\r
33  * @author $author$\r
34  * @version $Revision$\r
35  */\r
36 public class EBIFetchClient\r
37 {\r
38     Call call;\r
39     String format = "default";\r
40     String style = "raw";\r
41 \r
42     /**\r
43      * Creates a new EBIFetchClient object.\r
44      */\r
45     public EBIFetchClient()\r
46     {\r
47         try\r
48         {\r
49             call = (Call) new Service().createCall();\r
50             call.setTargetEndpointAddress(new java.net.URL(\r
51                     "http://www.ebi.ac.uk/ws/services/Dbfetch"));\r
52         }\r
53         catch (Exception ex)\r
54         {\r
55         }\r
56     }\r
57 \r
58     /**\r
59      * DOCUMENT ME!\r
60      *\r
61      * @return DOCUMENT ME!\r
62      */\r
63     public String[] getSupportedDBs()\r
64     {\r
65         try\r
66         {\r
67             call.setOperationName(new QName("urn:Dbfetch", "getSupportedDBs"));\r
68             call.setReturnType(XMLType.SOAP_ARRAY);\r
69 \r
70             return (String[]) call.invoke(new Object[] {  });\r
71         }\r
72         catch (Exception ex)\r
73         {\r
74             return null;\r
75         }\r
76     }\r
77 \r
78     /**\r
79      * DOCUMENT ME!\r
80      *\r
81      * @return DOCUMENT ME!\r
82      */\r
83     public String[] getSupportedFormats()\r
84     {\r
85         try\r
86         {\r
87             call.setOperationName(new QName("urn:Dbfetch", "getSupportedFormats"));\r
88             call.setReturnType(XMLType.SOAP_ARRAY);\r
89 \r
90             return (String[]) call.invoke(new Object[] {  });\r
91         }\r
92         catch (Exception ex)\r
93         {\r
94             return null;\r
95         }\r
96     }\r
97 \r
98     /**\r
99      * DOCUMENT ME!\r
100      *\r
101      * @return DOCUMENT ME!\r
102      */\r
103     public String[] getSupportedStyles()\r
104     {\r
105         try\r
106         {\r
107             call.setOperationName(new QName("urn:Dbfetch", "getSupportedStyles"));\r
108             call.setReturnType(XMLType.SOAP_ARRAY);\r
109 \r
110             return (String[]) call.invoke(new Object[] {  });\r
111         }\r
112         catch (Exception ex)\r
113         {\r
114             return null;\r
115         }\r
116     }\r
117 \r
118     public static void main (String [] args)\r
119     {\r
120       EBIFetchClient ebi = new EBIFetchClient();\r
121       String[] result = ebi.fetchData("uniprot:25K89D_SARPE;G6PblobD_HUMAN",\r
122                            "xml", null);\r
123 \r
124      try{\r
125        java.io.PrintWriter out = new java.io.PrintWriter(\r
126       new java.io.FileWriter("out.xml"));\r
127 \r
128 \r
129        for(int i=0; i<result.length; i++)\r
130        {\r
131          out.println(result[i]);\r
132        }\r
133        out.close();\r
134      }catch(Exception ex){ex.printStackTrace();}\r
135 \r
136     }\r
137 \r
138 \r
139     public File fetchDataAsFile(String ids, String f, String s)\r
140     {\r
141       String [] data = fetchData(ids, f, s);\r
142       File outFile = null;\r
143       try{\r
144         outFile = File.createTempFile("jalview", ".xml");\r
145         outFile.deleteOnExit();\r
146         PrintWriter out = new PrintWriter(new FileOutputStream(outFile));\r
147         int index=0;\r
148         while( index < data.length )\r
149         {\r
150           out.println(data[index]);\r
151           index++;\r
152         }\r
153         out.close();\r
154       }catch(Exception ex){}\r
155       return outFile;\r
156     }\r
157 \r
158     /**\r
159      * DOCUMENT ME!\r
160      *\r
161      * @param ids DOCUMENT ME!\r
162      * @param f DOCUMENT ME!\r
163      * @param s DOCUMENT ME!\r
164      *\r
165      * @return DOCUMENT ME!\r
166      */\r
167     public String[] fetchData(String ids, String f, String s)\r
168     {\r
169         // ids should be of the form uniprot:25KD_SARPE;ADHR_DROPS;\r
170         // max 50 ids can be added at one time\r
171         try\r
172         {\r
173             call.setOperationName(new QName("urn:Dbfetch", "fetchData"));\r
174             call.addParameter("query", XMLType.XSD_STRING, ParameterMode.IN);\r
175             call.addParameter("format", XMLType.XSD_STRING, ParameterMode.IN);\r
176             call.addParameter("style", XMLType.XSD_STRING, ParameterMode.IN);\r
177             call.setReturnType(XMLType.SOAP_ARRAY);\r
178 \r
179             if (f != null)\r
180             {\r
181                 format = f;\r
182             }\r
183 \r
184             if (s != null)\r
185             {\r
186                 style = s;\r
187             }\r
188 \r
189             return (String[]) call.invoke(new Object[] { ids, format, style });\r
190         }\r
191         catch (Exception ex)\r
192         {\r
193             return null;\r
194         }\r
195     }\r
196 }\r