99c3f28f722640a4d826cf7c3c9e9f537432f381
[jalview.git] / src / jalview / ws2 / client / jpred4 / JPred4WSDiscoverer.java
1 package jalview.ws2.client.jpred4;
2
3 import java.io.IOException;
4 import java.net.MalformedURLException;
5 import java.net.URL;
6 import java.util.Collections;
7 import java.util.List;
8
9 import jalview.ws.params.ArgumentI;
10 import jalview.ws.params.ParamManager;
11 import jalview.ws2.actions.secstructpred.SecStructPredAction;
12 import jalview.ws2.api.WebService;
13 import jalview.ws2.client.api.AbstractWebServiceDiscoverer;
14 import jalview.ws2.client.ebi.JobDispatcherWSDiscoverer;
15 import jalview.ws2.params.SimpleParamDatastore;
16 import uk.ac.dundee.compbio.jpred.JPredClient;
17
18 public class JPred4WSDiscoverer extends AbstractWebServiceDiscoverer
19 {
20   private static final URL DEFAULT_URL;
21   static
22   {
23     try
24     {
25       DEFAULT_URL = new URL("https://www.compbio.dundee.ac.uk/jpred4/");
26     } catch (MalformedURLException e)
27     {
28       throw new ExceptionInInitializerError(e);
29     }
30   }
31
32   private static JPred4WSDiscoverer instance = null;
33
34   private static ParamManager paramManager = null;
35
36   private JPred4WSDiscoverer()
37   {
38   }
39
40   public static JPred4WSDiscoverer getInstance()
41   {
42     if (instance == null)
43       instance = new JPred4WSDiscoverer();
44     return instance;
45   }
46
47   public static void setParamManager(ParamManager manager)
48   {
49     paramManager = manager;
50   }
51
52   @Override
53   public int getStatusForUrl(URL url)
54   {
55     // TODO: implement actual status check
56     return STATUS_OK;
57   }
58
59   @Override
60   public String getUrlsPropertyKey()
61   {
62     return null;
63   }
64
65   @Override
66   protected URL getDefaultUrl()
67   {
68     return DEFAULT_URL;
69   }
70
71   @Override
72   protected List<WebService<?>> fetchServices(URL url) throws IOException
73   {
74     JPredClient client = new JPredClient(url);
75     var wsBuilder = WebService.<SecStructPredAction> newBuilder();
76     wsBuilder.url(url);
77     wsBuilder.clientName("jpred4");
78     wsBuilder.category("Secondary structure prediction");
79     wsBuilder.name("jpred4");
80     wsBuilder.description("JPred4 Secondary Structure Prediction.");
81     wsBuilder.interactive(false);
82
83     wsBuilder
84         .paramDatastore(new SimpleParamDatastore(url, Collections.emptyList(),
85             Collections.emptyList(), paramManager));
86     wsBuilder.actionClass(SecStructPredAction.class);
87     var webService = wsBuilder.build();
88
89     var wsClient = new JPred4WSClient(client);
90     var actionBuilder = SecStructPredAction.newBuilder(wsClient);
91     actionBuilder.webService(webService);
92     actionBuilder.name("");
93     webService.addAction(actionBuilder.build());
94
95     return List.of(webService);
96   }
97 }