--- /dev/null
+package jalview.ws.slivkaws;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FormatAdapter;
+import jalview.ws.api.JobId;
+import jalview.ws.api.MultipleSequenceAlignmentI;
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.InvalidArgumentException;
+import jalview.ws.params.WsParamSetI;
+
+import java.io.IOError;
+import java.io.IOException;
+import java.rmi.ServerError;
+import java.util.List;
+
+import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
+import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
+import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
+
+public class SlivkaMsaServiceInstance extends SlivkaWSInstance implements MultipleSequenceAlignmentI
+{
+ SlivkaMsaServiceInstance(SlivkaClient client, SlivkaService service) {
+ super(client, service, "Sequence Alignment");
+ style = ServiceClient.MSAWSCLIENT;
+ }
+
+ @Override
+ public JobId align(List<SequenceI> toalign, WsParamSetI parameters, List<ArgumentI> list) throws Throwable
+ {
+ return super.submit(toalign, parameters, list);
+ }
+
+ @Override
+ public AlignmentI getAlignmentFor(JobId jobId) throws InvalidArgumentException, ServerError, IOError
+ {
+ List<RemoteFile> files;
+ try
+ {
+ files = client.getJobResults(jobId.getJobId());
+ for (RemoteFile f : files)
+ {
+ if (f.getMimeType().equals("application/clustal"))
+ {
+ return new FormatAdapter().readFile(f.getURL().toString(), DataSourceType.URL, FileFormat.Clustal);
+ }
+ else if (f.getMimeType().equals("application/fasta"))
+ {
+ return new FormatAdapter().readFile(f.getURL().toString(), DataSourceType.URL, FileFormat.Fasta);
+ }
+ }
+ } catch (IOException e)
+ {
+ throw new IOError(e);
+ }
+ return null;
+ }
+}