Merge branch 'improvement/JAL-3848_slivka_0.8' into alpha/JAL-3066_Jalview_212_slivka...
[jalview.git] / src / jalview / ws / slivkaws / SlivkaJPredServiceInstance.java
index b8e4d2f..3958198 100644 (file)
@@ -2,22 +2,48 @@ package jalview.ws.slivkaws;
 
 import java.io.IOError;
 import java.io.IOException;
+import java.util.Collection;
 import java.util.List;
 
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.io.DataSourceType;
 import jalview.io.JPredFile;
-import jalview.ws.api.JPredMutlipleAlignmentServiceI;
+import jalview.ws.api.JPredServiceI;
 import jalview.ws.api.JobId;
+import jalview.ws.params.ArgumentI;
 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
 
 public class SlivkaJPredServiceInstance extends SlivkaWSInstance
-    implements JPredMutlipleAlignmentServiceI
+    implements JPredServiceI
 {
 
+  private class InputFormatParameter implements ArgumentI
+  {
+    String value = "";
+
+    @Override
+    public String getName()
+    {
+      return "format";
+    }
+
+    @Override
+    public String getValue()
+    {
+      return value;
+    }
+
+    @Override
+    public void setValue(String selectedItem)
+    {
+      value = selectedItem;
+    }
+  }
+
+
   public SlivkaJPredServiceInstance(SlivkaClient client,
       SlivkaService service, String action)
   {
@@ -26,17 +52,22 @@ public class SlivkaJPredServiceInstance extends SlivkaWSInstance
   }
 
   @Override
-  public JobId align(List<SequenceI> sequences) throws Throwable
+  public JobId predict(List<SequenceI> sequences, boolean msa) throws Throwable
   {
-    return super.submit(sequences, null, null);
+    // Hack allowing to send both single and msa jobs
+    // until msa and single sequence services are separated.
+    var arg = new InputFormatParameter();
+    arg.setValue(msa ? "fasta" : "seq");
+    return super.submit(sequences, null, List.of(arg));
   }
 
   @Override
   public AlignmentI getAlignment(JobId jobId) throws Exception
   {
-    List<RemoteFile> files;
+    Collection<RemoteFile> files;
     try {
-      files = client.getJobResults(jobId.getJobId());
+      var job = client.getJob(jobId.getJobId());
+      files = job.getResults();
       for (RemoteFile f : files) {
         var alignment = readAlignment(f);
         if (alignment != null)
@@ -54,12 +85,12 @@ public class SlivkaJPredServiceInstance extends SlivkaWSInstance
   @Override
   public JPredFile getPrediction(JobId jobId) throws Exception
   {
-    List<RemoteFile> files = client.getJobResults(jobId.getJobId());
+    Collection<RemoteFile> files = client.getJob(jobId.getJobId()).getResults();
     for (RemoteFile f : files)
     {
       if (f.getLabel().equals("concise"))
       {
-        return new JPredFile(f.getURL(), DataSourceType.URL);
+        return new JPredFile(f.getContentUrl(), DataSourceType.URL);
       }
     }
     return null;