JAL-3954 Report error log when job fails
[jalview.git] / src / jalview / ws2 / client / ebi / PhmmerWSClient.java
index 0bcb2f9..380e8e6 100644 (file)
@@ -1,16 +1,23 @@
 package jalview.ws2.client.ebi;
 
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.StringReader;
 import java.net.URI;
 import java.util.List;
 
 import jalview.bin.Console;
+import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
+import jalview.io.FileParse;
 import jalview.io.FormatAdapter;
+import jalview.io.StockholmFile;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.simple.BooleanOption;
 import jalview.ws.params.simple.DoubleParameter;
@@ -225,7 +232,14 @@ public class PhmmerWSClient implements AlignmentWebServiceClientI
   @Override
   public String getErrorLog(WebServiceJobHandle job) throws IOException
   {
-    return "";
+    if (getStatus(job) != JobStatus.FAILED)
+      return "";
+    try(InputStream stream = client.getResultStream(job.getJobId(), "error"))
+    {
+      ByteArrayOutputStream out = new ByteArrayOutputStream();
+      stream.transferTo(out);
+      return out.toString();
+    }
   }
 
   @Override
@@ -243,6 +257,15 @@ public class PhmmerWSClient implements AlignmentWebServiceClientI
   public AlignmentI getAlignment(WebServiceJobHandle job) throws IOException
   {
     URI url = client.getResultURL(job.getJobId(), "sto");
-    return new FormatAdapter().readFile(url.toString(), DataSourceType.URL, FileFormat.Stockholm);
+    try(InputStream stream = client.getResultStream(job.getJobId(), "sto"))
+    {
+      StockholmFile file = new StockholmFile(new FileParse(
+              new BufferedReader(new InputStreamReader(stream)),
+              url.toString(), DataSourceType.URL));
+      var aln = new Alignment(file.getSeqsAsArray());
+      for (var annotation : file.getAnnotations())
+        aln.addAnnotation(annotation);
+      return aln;
+    }
   }
 }