package jalview.ws.slivkaws; import jalview.bin.Cache; 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.Collection; 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, String category) { super(client, service, category); style = ServiceClient.MSAWSCLIENT; } @Override public JobId align(List toalign, WsParamSetI parameters, List list) throws Throwable { return super.submit(toalign, parameters, list); } @Override public AlignmentI getAlignmentFor(JobId jobId) throws InvalidArgumentException, ServerError, IOError { Collection files; try { var slivkaJob = client.getJob(jobId.getJobId()); files = slivkaJob.getResults(); for (RemoteFile f : files) { if (f.getMediaType().equals("application/clustal")) { return new FormatAdapter().readFile(f.getContentUrl().toString(), DataSourceType.URL, FileFormat.Clustal); } else if (f.getMediaType().equals("application/fasta")) { return new FormatAdapter().readFile(f.getContentUrl().toString(), DataSourceType.URL, FileFormat.Fasta); } } } catch (IOException e) { throw new IOError(e); } return null; } }