68bd4b07ba85a615a195d6a0d5d90f810c0d2c17
[jalview.git] / src / jalview / ws / WSClient.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.ws;
22
23 import jalview.gui.AlignFrame;
24 import jalview.gui.WebserviceInfo;
25 import jalview.ws.api.UIinfo;
26
27 public abstract class WSClient // implements WSMenuEntryProviderI
28 {
29   /**
30    * WSClient holds the basic attributes that are displayed to the user for all
31    * jalview web service clients
32    */
33   /**
34    * displayed name for this web service
35    */
36   protected String WebServiceName;
37
38   /**
39    * specific job title (e.g. 'ClustalW Alignment of Selection from Aligment
40    * from Cut and Paste input')
41    */
42   protected String WebServiceJobTitle;
43
44   /**
45    * String giving additional information such as method citations for this
46    * service
47    */
48   protected String WebServiceReference;
49
50   /**
51    * Service endpoint
52    */
53   protected String WsURL;
54
55   /**
56    * Web service information used to initialise the WSClient attributes
57    */
58   protected WebserviceInfo wsInfo;
59
60   /**
61    * total number of jobs managed by this web service client instance.
62    */
63   int jobsRunning = 0;
64
65   /**
66    * TODO: this is really service metadata, and should be moved elsewhere.
67    * mappings between abstract interface names and menu entries
68    */
69   protected java.util.Hashtable ServiceActions;
70
71   /**
72    * alignFrame associated with this client
73    */
74   protected AlignFrame alignFrame;
75   {
76     ServiceActions = new java.util.Hashtable();
77     ServiceActions.put("MsaWS", "Multiple Sequence Alignment");
78     ServiceActions.put("SecStrPred", "Secondary Structure Prediction");
79   };
80
81   public WSClient()
82   {
83   }
84
85   protected WebserviceInfo setWebService(UIinfo serv, boolean b)
86   {
87     WebServiceName = serv.getName();
88     WebServiceJobTitle = serv.getActionText();
89     WsURL = serv.getHostURL();
90     if (!b)
91     {
92       return new WebserviceInfo(WebServiceJobTitle,
93               WebServiceJobTitle + " using service hosted at "
94                       + WsURL + "\n"
95                       + (serv.getDescription() != null
96                               ? serv.getDescription()
97                               : ""),
98               false);
99     }
100     return null;
101   }
102 }