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