JAL-3807 - Re-implement results processing.
[jalview.git] / src / jalview / ws / slivkaws / SlivkaJPredServiceInstance.java
1 package jalview.ws.slivkaws;
2
3 import java.io.IOError;
4 import java.io.IOException;
5 import java.util.List;
6
7 import jalview.datamodel.AlignmentI;
8 import jalview.datamodel.SequenceI;
9 import jalview.io.DataSourceType;
10 import jalview.io.JPredFile;
11 import jalview.ws.api.JPredMutlipleAlignmentServiceI;
12 import jalview.ws.api.JobId;
13 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
14 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
15 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
16
17 public class SlivkaJPredServiceInstance extends SlivkaWSInstance
18     implements JPredMutlipleAlignmentServiceI
19 {
20
21   public SlivkaJPredServiceInstance(SlivkaClient client,
22       SlivkaService service, String action)
23   {
24     super(client, service, action);
25     style = ServiceClient.JPREDWSCLIENT;
26   }
27
28   @Override
29   public JobId align(List<SequenceI> sequences) throws Throwable
30   {
31     return super.submit(sequences, null, null);
32   }
33
34   @Override
35   public AlignmentI getAlignment(JobId jobId) throws Exception
36   {
37     List<RemoteFile> files;
38     try {
39       files = client.getJobResults(jobId.getJobId());
40       for (RemoteFile f : files) {
41         var alignment = readAlignment(f);
42         if (alignment != null)
43         {
44           return alignment;
45         }
46       }
47     }
48     catch (IOException e) {
49       throw new IOError(e);
50     }
51     return null;
52   }
53
54   @Override
55   public JPredFile getPrediction(JobId jobId) throws Exception
56   {
57     List<RemoteFile> files = client.getJobResults(jobId.getJobId());
58     for (RemoteFile f : files)
59     {
60       if (f.getLabel().equals("concise"))
61       {
62         return new JPredFile(f.getURL(), DataSourceType.URL);
63       }
64     }
65     return null;
66   }
67 }