JAL-3878 Annotation operation skeleton.
[jalview.git] / src / jalview / ws2 / slivka / SlivkaWebService.java
index 3f0f5b0..aee6b73 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.ws2.slivka;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -14,7 +15,9 @@ import java.util.Set;
 import jalview.bin.Cache;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
+import jalview.io.AnnotationFile;
 import jalview.io.DataSourceType;
+import jalview.io.FeaturesFile;
 import jalview.io.FileFormat;
 import jalview.io.FileFormatI;
 import jalview.io.FormatAdapter;
@@ -189,6 +192,22 @@ public class SlivkaWebService implements WebServiceI
   {
     var slivkaJob = client.getJob(job.getJobId());
     job.setStatus(statusMap.get(slivkaJob.getStatus()));
+    Collection<RemoteFile> files = slivkaJob.getResults();
+    for (RemoteFile f : files)
+    {
+      if (f.getLabel().equals("log"))
+      {
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        f.writeTo(stream);
+        job.setLog(stream.toString("UTF-8"));
+      }
+      else if (f.getLabel().equals("error-log"))
+      {
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        f.writeTo(stream);
+        job.setErrorLog(stream.toString("UTF-8"));
+      }
+    }
   }
 
   @Override
@@ -236,6 +255,34 @@ public class SlivkaWebService implements WebServiceI
     return null;
   }
 
+  public FeaturesFile getFeaturesFile(WSJob job) throws IOException
+  {
+    var slivkaJob = client.getJob(job.getJobId());
+    Collection<RemoteFile> files = slivkaJob.getResults();
+    for (RemoteFile f : files)
+    {
+      if (f.getMediaType().equals("application/jalview-features"))
+      {
+        return new FeaturesFile(f.getContentUrl().toString(), DataSourceType.URL);
+      }
+    }
+    return null;
+  }
+
+  public AnnotationFile getAnnotationFile(WSJob job) throws IOException
+  {
+    var slivkaJob = client.getJob(job.getJobId());
+    Collection<RemoteFile> files = slivkaJob.getResults();
+    for (RemoteFile f : files)
+    {
+      if (f.getMediaType().equals("application/jalview-annotations"))
+      {
+        // return new AnnorationFile(...);
+      }
+    }
+    return null;
+  }
+
   @Override
   public String toString()
   {