Format changes
[jalview.git] / src / jalview / ws / MsaWSClient.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2006 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.ws;\r
20 \r
21 import ext.vamsas.*;\r
22 \r
23 import jalview.datamodel.*;\r
24 \r
25 import jalview.gui.*;\r
26 \r
27 import javax.swing.*;\r
28 \r
29 /**\r
30  * DOCUMENT ME!\r
31  *\r
32  * @author $author$\r
33  * @version $Revision$\r
34  */\r
35 public class MsaWSClient\r
36     extends WSClient\r
37 {\r
38   /**\r
39    * server is a WSDL2Java generated stub for an archetypal MsaWSI service.\r
40    */\r
41   ext.vamsas.MuscleWS server;\r
42   AlignFrame alignFrame;\r
43 \r
44 \r
45   /**\r
46    * Creates a new MsaWSClient object that uses a service\r
47    * given by an externally retrieved ServiceHandle\r
48    *\r
49    * @param sh service handle of type AbstractName(MsaWS)\r
50    * @param altitle DOCUMENT ME!\r
51    * @param msa DOCUMENT ME!\r
52    * @param submitGaps DOCUMENT ME!\r
53    * @param preserveOrder DOCUMENT ME!\r
54    */\r
55 \r
56   public MsaWSClient(ext.vamsas.ServiceHandle sh, String altitle,\r
57                      jalview.datamodel.AlignmentView msa,\r
58                      boolean submitGaps, boolean preserveOrder,\r
59                      Alignment seqdataset,\r
60                      AlignFrame _alignFrame)\r
61   {\r
62     super();\r
63     alignFrame = _alignFrame;\r
64     if (!sh.getAbstractName().equals("MsaWS"))\r
65     {\r
66       JOptionPane.showMessageDialog(Desktop.desktop,\r
67                                     "The Service called \n" + sh.getName() +\r
68           "\nis not a \nMultiple Sequence Alignment Service !",\r
69                                     "Internal Jalview Error",\r
70                                     JOptionPane.WARNING_MESSAGE);\r
71 \r
72       return;\r
73     }\r
74 \r
75     if ((wsInfo = setWebService(sh))==null)\r
76      {\r
77        JOptionPane.showMessageDialog(Desktop.desktop,\r
78                                      "The Multiple Sequence Alignment Service named " +\r
79                                      sh.getName() +\r
80                                      " is unknown", "Internal Jalview Error",\r
81                                      JOptionPane.WARNING_MESSAGE);\r
82 \r
83        return;\r
84      }\r
85     startMsaWSClient(altitle, msa, submitGaps, preserveOrder, seqdataset);\r
86 \r
87   }\r
88 \r
89 \r
90   private void startMsaWSClient(String altitle, AlignmentView msa,\r
91                      boolean submitGaps, boolean preserveOrder, Alignment seqdataset)\r
92   {\r
93     if (!locateWebService())\r
94     {\r
95       return;\r
96     }\r
97 \r
98     wsInfo.setProgressText( ( (submitGaps) ? "Re-alignment" : "Alignment") +\r
99                            " of " + altitle + "\nJob details\n");\r
100 \r
101     MsaWSThread musclethread = new MsaWSThread(server, WsURL, wsInfo, alignFrame,\r
102                                                WebServiceName,\r
103                                                WebServiceName+" alignment of " + altitle,\r
104                                                msa,\r
105                                                submitGaps, preserveOrder, seqdataset);\r
106     wsInfo.setthisService(musclethread);\r
107     musclethread.start();\r
108   }\r
109 \r
110   /**\r
111    * Initializes the server field with a valid service implementation.\r
112    *\r
113    * @return true if service was located.\r
114    */\r
115   private boolean locateWebService()\r
116   {\r
117     // TODO: MuscleWS transmuted to generic MsaWS client\r
118     MuscleWSServiceLocator loc = new MuscleWSServiceLocator(); // Default\r
119 \r
120     try\r
121     {\r
122       this.server = (MuscleWS) loc.getMuscleWS(new java.net.URL(WsURL));\r
123       ( (MuscleWSSoapBindingStub)this.server).setTimeout(60000); // One minute timeout\r
124     }\r
125     catch (Exception ex)\r
126     {\r
127       wsInfo.setProgressText("Serious! " + WebServiceName +\r
128                              " Service location failed\nfor URL :" + WsURL +\r
129                              "\n" +\r
130                              ex.getMessage());\r
131       wsInfo.setStatus(WebserviceInfo.ERROR);\r
132       ex.printStackTrace();\r
133 \r
134       return false;\r
135     }\r
136 \r
137     loc.getEngine().setOption("axis", "1");\r
138 \r
139     return true;\r
140   }\r
141 \r
142   protected String getServiceActionKey()\r
143   {\r
144     return "MsaWS";\r
145   }\r
146 \r
147   protected String getServiceActionDescription()\r
148   {\r
149     return "Multiple Sequence Alignment";\r
150   }\r
151 }\r