1 package jalview.ws2.client.ebi;
3 import java.io.IOException;
4 import java.net.MalformedURLException;
5 import java.net.URISyntaxException;
9 import jalview.bin.Console;
10 import jalview.ws.params.ParamManager;
11 import jalview.ws2.actions.NullAction;
12 import jalview.ws2.actions.api.ActionI;
13 import jalview.ws2.api.WebService;
14 import jalview.ws2.client.api.AbstractWebServiceDiscoverer;
15 import uk.ac.dundee.compbio.hmmerclient.PhmmerClient;
17 public final class JobDispatcherWSDiscoverer extends AbstractWebServiceDiscoverer
20 private static final URL DEFAULT_URL;
25 DEFAULT_URL = new URL("https://www.ebi.ac.uk/Tools/services/rest/hmmer3_phmmer/");
26 } catch (MalformedURLException e)
28 throw new ExceptionInInitializerError(e);
32 private static JobDispatcherWSDiscoverer instance = null;
33 private static ParamManager paramManager = null;
35 private JobDispatcherWSDiscoverer() {}
37 public static JobDispatcherWSDiscoverer getInstance() {
39 instance = new JobDispatcherWSDiscoverer();
43 public static void setParamManager(ParamManager manager)
45 paramManager = manager;
49 public int getStatusForUrl(URL url)
53 return new PhmmerClient(url).testEndpoint() ? STATUS_OK : STATUS_INVALID;
54 } catch (URISyntaxException e)
56 Console.error(e.getMessage());
57 return STATUS_INVALID;
62 protected String getUrlsPropertyKey()
68 protected URL getDefaultUrl()
74 protected List<WebService<?>> fetchServices(URL url) throws IOException
78 client = new PhmmerClient(url);
80 catch (URISyntaxException e) {
81 throw new MalformedURLException(e.getMessage());
83 if (!client.testEndpoint())
84 throw new IOException(
85 "unable to reach dispatcher server at " + url);
86 // TODO change once a concrete action is implemented
87 var wsBuilder = WebService.<NullAction> newBuilder();
89 wsBuilder.clientName("job dispatcher");
90 wsBuilder.category("Database search");
91 wsBuilder.name("pHMMER");
92 wsBuilder.description("Hmmer3 phmmer is used to search one or more query sequences against a sequence database.");
93 wsBuilder.interactive(false);
94 wsBuilder.paramDatastore(ParamStores.newPhmmerDatastore(url, paramManager));
95 wsBuilder.actionClass(NullAction.class);
96 var webService = wsBuilder.build();
98 var actionBuilder = NullAction.newBuilder();
99 actionBuilder.webService(webService);
100 actionBuilder.name("");
101 webService.addAction(actionBuilder.build());
103 return List.of(webService);