JAL-3878 Add jpred operation and worker to the services.
[jalview.git] / src / jalview / ws2 / slivka / SlivkaWebService.java
index 9078013..e2873c1 100644 (file)
@@ -1,20 +1,17 @@
 package jalview.ws2.slivka;
 
 import static java.lang.String.format;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.EnumMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
-import jalview.api.AlignViewportI;
 import jalview.api.FeatureColourI;
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
@@ -26,18 +23,14 @@ import jalview.io.AnnotationFile;
 import jalview.io.DataSourceType;
 import jalview.io.FeaturesFile;
 import jalview.io.FileFormat;
-import jalview.io.FileFormatI;
 import jalview.io.FormatAdapter;
 import jalview.io.JPredFile;
-import jalview.ws.gui.WsJob;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.ParamDatastoreI;
-import jalview.ws.params.WsParamSetI;
 import jalview.ws.slivkaws.SlivkaDatastore;
-import jalview.ws2.WebServiceI;
-import jalview.ws2.operations.Operation;
 import jalview.ws2.WSJob;
 import jalview.ws2.WSJobStatus;
+import jalview.ws2.WebServiceI;
 import javajs.http.ClientProtocolException;
 import uk.ac.dundee.compbio.slivkaclient.Job;
 import uk.ac.dundee.compbio.slivkaclient.Parameter;
@@ -50,11 +43,11 @@ public class SlivkaWebService implements WebServiceI
   protected final SlivkaClient client;
 
   protected final SlivkaService service;
-  
+
   protected ParamDatastoreI store;
 
   protected static final EnumMap<Job.Status, WSJobStatus> statusMap = new EnumMap<>(
-          Job.Status.class);
+      Job.Status.class);
   {
     statusMap.put(Job.Status.PENDING, WSJobStatus.SUBMITTED);
     statusMap.put(Job.Status.REJECTED, WSJobStatus.INVALID);
@@ -117,7 +110,7 @@ public class SlivkaWebService implements WebServiceI
 
   @Override
   public String submit(List<SequenceI> sequences, List<ArgumentI> args)
-          throws IOException
+      throws IOException
   {
     var request = new uk.ac.dundee.compbio.slivkaclient.JobRequest();
     for (Parameter param : service.getParameters())
@@ -144,8 +137,8 @@ public class SlivkaWebService implements WebServiceI
           break;
         }
         InputStream stream = new ByteArrayInputStream(format.getWriter(null)
-                .print(sequences.toArray(new SequenceI[0]), false)
-                .getBytes());
+            .print(sequences.toArray(new SequenceI[0]), false)
+            .getBytes());
         request.addFile(param.getId(), stream);
       }
     }
@@ -232,12 +225,12 @@ public class SlivkaWebService implements WebServiceI
       if (f.getMediaType().equals("application/clustal"))
       {
         return new FormatAdapter().readFile(f.getContentUrl().toString(),
-                DataSourceType.URL, FileFormat.Clustal);
+            DataSourceType.URL, FileFormat.Clustal);
       }
       else if (f.getMediaType().equals("application/fasta"))
       {
         return new FormatAdapter().readFile(f.getContentUrl().toString(),
-                DataSourceType.URL, FileFormat.Fasta);
+            DataSourceType.URL, FileFormat.Fasta);
       }
     }
     return null;
@@ -288,6 +281,19 @@ public class SlivkaWebService implements WebServiceI
     return Arrays.asList(aln.getAlignmentAnnotation());
   }
 
+  public JPredFile getPrediction(WSJob job) throws IOException
+  {
+    Collection<RemoteFile> files = client.getJob(job.getJobId()).getResults();
+    for (RemoteFile f : files)
+    {
+      if (f.getLabel().equals("concise"))
+      {
+        return new JPredFile(f.getContentUrl(), DataSourceType.URL);
+      }
+    }
+    return null;
+  }
+
   @Override
   public String toString()
   {