};
discoverThread.start();
}
+ /**
+ * binding service abstract name to handler class
+ */
+ private static Hashtable serviceClientBindings;
+ public static WSClient getServiceClient(ServiceHandle sh)
+ {
+ if (serviceClientBindings==null)
+ {
+ // get a list from Config or create below
+ serviceClientBindings = new Hashtable();
+ serviceClientBindings.put("MsaWS",new MsaWSClient());
+ serviceClientBindings.put("SecStrPred",new JPredClient());
+ serviceClientBindings.put("SeqSearch",new SeqSearchWSClient());
+ }
+ WSClient instance = (WSClient) serviceClientBindings.get(sh.getAbstractName());
+ if (instance==null)
+ {
+ System.err.println("WARNING - POSSIBLE IMPLEMENTATION ERROR - cannot find WSClient implementation for "+sh.getAbstractName());
+ } else
+ {
+ instance.serviceHandle = sh;
+ }
+ return instance;
+ }
+ /**
+ * notes on discovery service
+ * 1. need to allow multiple discovery source urls.
+ * 2. user interface to add/control list of urls in preferences
+ * notes on wsclient discovery
+ * 1. need a classpath property with list of additional plugin directories
+ * 2. optional config to cite specific bindings between class name and Abstract service name.
+ * 3. precedence for automatic discovery by using getAbstractName for WSClient - user added plugins override default plugins ?
+ * notes on wsclient gui
+ * code for gui attachment now moved to wsclient implementation. Needs more abstraction but approach seems to work.
+ * is it possible to 'generalise' the data retrieval calls further ? current methods are very specific (gatherForMSA or gatherForSeqOrMsaSecStrPred), new methods for conservation (group or alignment), treecalc (aligned profile), seqannot (sequences selected from dataset, annotation back to dataset).
+ *
+ */
}