374d2eb97cc8a56b13a62198267e335522079c6c
[jalview.git] / src / jalview / ws / slivkaws / SlivkaMsaServiceInstance.java
1 package jalview.ws.slivkaws;
2
3
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.SequenceI;
6 import jalview.io.DataSourceType;
7 import jalview.io.FileFormat;
8 import jalview.io.FormatAdapter;
9 import jalview.ws.api.JobId;
10 import jalview.ws.api.MultipleSequenceAlignmentI;
11 import jalview.ws.params.ArgumentI;
12 import jalview.ws.params.InvalidArgumentException;
13 import jalview.ws.params.WsParamSetI;
14 import java.io.IOError;
15 import java.io.IOException;
16 import java.rmi.ServerError;
17 import java.util.Collection;
18 import java.util.List;
19
20 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
21 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
22 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
23
24 public class SlivkaMsaServiceInstance extends SlivkaWSInstance implements MultipleSequenceAlignmentI
25 {
26   SlivkaMsaServiceInstance(SlivkaClient client, SlivkaService service, String category) {
27     super(client, service, category);
28     style = ServiceClient.MSAWSCLIENT;
29   }
30
31   @Override
32   public JobId align(List<SequenceI> toalign, WsParamSetI parameters, List<ArgumentI> list) throws Throwable
33   {
34     return super.submit(toalign, parameters, list);
35   }
36
37   @Override
38   public AlignmentI getAlignmentFor(JobId jobId) throws InvalidArgumentException, ServerError, IOError
39   {
40     Collection<RemoteFile> files;
41     try
42     {
43       var slivkaJob = client.getJob(jobId.getJobId());
44       files = slivkaJob.getResults();
45       for (RemoteFile f : files)
46       {
47         if (f.getMediaType().equals("application/clustal"))
48         {
49           return new FormatAdapter().readFile(f.getContentUrl().toString(), DataSourceType.URL, FileFormat.Clustal);
50         }
51         else if (f.getMediaType().equals("application/fasta"))
52         {
53           return new FormatAdapter().readFile(f.getContentUrl().toString(), DataSourceType.URL, FileFormat.Fasta);
54         }
55       }
56     } catch (IOException e)
57     {
58       throw new IOError(e);
59     }
60     return null;
61   }
62 }