Merge branch 'bug/JAL-3807_jpred-with-slivka' into alpha/JAL-3066_Jalview_212_slivka...
[jalview.git] / src / jalview / ws / slivkaws / SlivkaMsaServiceInstance.java
1 package jalview.ws.slivkaws;
2
3 import jalview.datamodel.AlignmentI;
4 import jalview.datamodel.SequenceI;
5 import jalview.ws.api.JobId;
6 import jalview.ws.api.MultipleSequenceAlignmentI;
7 import jalview.ws.params.ArgumentI;
8 import jalview.ws.params.InvalidArgumentException;
9 import jalview.ws.params.WsParamSetI;
10
11 import java.io.IOError;
12 import java.io.IOException;
13 import java.rmi.ServerError;
14 import java.util.List;
15
16 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
17 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
18 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
19
20 public class SlivkaMsaServiceInstance extends SlivkaWSInstance implements MultipleSequenceAlignmentI
21 {
22   SlivkaMsaServiceInstance(SlivkaClient client, SlivkaService service, String category) {
23     super(client, service, category);
24     style = ServiceClient.MSAWSCLIENT;
25   }
26
27   @Override
28   public JobId align(List<SequenceI> toalign, WsParamSetI parameters, List<ArgumentI> list) throws Throwable
29   {
30     return super.submit(toalign, parameters, list);
31   }
32
33   @Override
34   public AlignmentI getAlignmentFor(JobId jobId) throws InvalidArgumentException, ServerError, IOError
35   {
36     try
37     {
38       List<RemoteFile> files = client.getJobResults(jobId.getJobId());
39       for (RemoteFile f : files)
40       {
41         var aln = readAlignment(f);
42         if (aln != null)
43         {
44           return aln;
45         }
46       }
47     } catch (IOException e)
48     {
49       throw new IOError(e);
50     }
51     return null;
52   }
53 }