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.actions.hmmer.PhmmerAction;
14 import jalview.ws2.api.WebService;
15 import jalview.ws2.client.api.AbstractWebServiceDiscoverer;
16 import uk.ac.dundee.compbio.hmmerclient.PhmmerClient;
18 public final class JobDispatcherWSDiscoverer extends AbstractWebServiceDiscoverer
21 private static final URL DEFAULT_URL;
26 DEFAULT_URL = new URL("https://www.ebi.ac.uk/Tools/services/rest/hmmer3_phmmer/");
27 } catch (MalformedURLException e)
29 throw new ExceptionInInitializerError(e);
33 private static JobDispatcherWSDiscoverer instance = null;
34 private static ParamManager paramManager = null;
36 private JobDispatcherWSDiscoverer() {}
38 public static JobDispatcherWSDiscoverer getInstance() {
40 instance = new JobDispatcherWSDiscoverer();
44 public String getName()
46 return "Job Dispatcher";
49 public static void setParamManager(ParamManager manager)
51 paramManager = manager;
55 public int getStatusForUrl(URL url)
59 return new PhmmerClient(url).testEndpoint() ? STATUS_OK : STATUS_INVALID;
60 } catch (URISyntaxException e)
62 Console.error(e.getMessage());
63 return STATUS_INVALID;
68 protected String getUrlsPropertyKey()
74 protected URL getDefaultUrl()
80 protected List<WebService<?>> fetchServices(URL url) throws IOException
82 PhmmerClient phmmerClient;
84 phmmerClient = new PhmmerClient(url);
86 catch (URISyntaxException e) {
87 throw new MalformedURLException(e.getMessage());
89 if (!phmmerClient.testEndpoint())
90 throw new IOException(
91 "unable to reach dispatcher server at " + url);
92 var wsBuilder = WebService.<PhmmerAction> newBuilder();
94 wsBuilder.clientName("job dispatcher");
95 wsBuilder.category("Database search");
96 wsBuilder.name("pHMMER");
97 wsBuilder.description("Hmmer3 phmmer is used to search one or more query sequences against a sequence database.");
98 wsBuilder.interactive(false);
99 wsBuilder.paramDatastore(ParamStores.newPhmmerDatastore(url, paramManager));
100 wsBuilder.actionClass(PhmmerAction.class);
101 var webService = wsBuilder.build();
103 var client = new PhmmerWSClient(phmmerClient);
104 var actionBuilder = PhmmerAction.newBuilder(client);
105 actionBuilder.webService(webService);
106 actionBuilder.name("");
107 webService.addAction(actionBuilder.build());
109 return List.of(webService);