1 package jalview.ws.slivkaws;
3 import jalview.gui.WebserviceInfo;
4 import jalview.ws.api.JalviewServiceEndpointProviderI;
5 import jalview.ws.api.JalviewWebServiceI;
6 import jalview.ws.api.ServiceWithParameters;
7 import jalview.ws.gui.WsJob;
8 import jalview.ws.params.ParamDatastoreI;
9 import jalview.ws.params.ParamManager;
11 import java.io.IOError;
12 import java.io.IOException;
13 import java.util.EnumMap;
15 import uk.ac.dundee.compbio.slivkaclient.FormValidationException;
16 import uk.ac.dundee.compbio.slivkaclient.JobState;
17 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
18 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
19 import uk.ac.dundee.compbio.slivkaclient.ValidationException;
21 public abstract class SlivkaWSInstance extends ServiceWithParameters
22 implements JalviewServiceEndpointProviderI, JalviewWebServiceI
24 protected final SlivkaClient client;
26 protected final SlivkaService service;
28 protected SlivkaDatastore store = null;
30 protected static final EnumMap<JobState, WsJob.JobState> stateMap = new EnumMap<>(JobState.class);
32 stateMap.put(JobState.PENDING, WsJob.JobState.QUEUED);
33 stateMap.put(JobState.QUEUED, WsJob.JobState.QUEUED);
34 stateMap.put(JobState.RUNNING, WsJob.JobState.RUNNING);
35 stateMap.put(JobState.COMPLETED, WsJob.JobState.FINISHED);
36 stateMap.put(JobState.FAILED, WsJob.JobState.FAILED);
37 stateMap.put(JobState.ERROR, WsJob.JobState.SERVERERROR);
38 stateMap.put(JobState.UNKNOWN, WsJob.JobState.UNKNOWN);
41 public SlivkaWSInstance(SlivkaClient client, SlivkaService service, String action)
43 super(service.getLabel(), action, service.getName(), "Slivka",
44 client.getUrl().toString());
46 this.service = service;
50 public final void updateStatus(WsJob job)
54 job.setState(stateMap.get(client.getJobState(job.getJobId())));
55 } catch (IOException e)
62 public final boolean updateJobProgress(WsJob job)
68 public final boolean handleSubmitError(Throwable _lex, WsJob j, WebserviceInfo wsInfo)
70 if (_lex instanceof FormValidationException)
72 FormValidationException formError = (FormValidationException) _lex;
73 String[] messages = new String[formError.getErrors().size()];
75 for (ValidationException e : formError.getErrors())
77 messages[i++] = String.format("%s: %s,", e.getField().getName(), e.getMessage());
79 j.setState(WsJob.JobState.INVALID);
80 j.setStatus(String.join(", ", messages));
87 public final boolean handleCollectionException(Exception e, WsJob msjob, WebserviceInfo wsInfo)
93 final SlivkaService getService()
99 public final Object getEndpoint()
105 public final void initParamStore(ParamManager userParameterStore)
111 store = new SlivkaDatastore(service);
112 } catch (IOException e)
114 throw new IOError(e);
120 public boolean hasParameters()
126 public final ParamDatastoreI getParamStore()
130 initParamStore(null);