JAL-3878 Add dataset and viewport arguments to ResultSupplier.
[jalview.git] / src / jalview / ws2 / operations / AlignmentOperation.java
index 530ea24..b70678a 100644 (file)
@@ -302,6 +302,8 @@ public class AlignmentOperation implements Operation
 
     private final AlignmentI dataset;
 
+    private final AlignViewport viewport;
+
     private final List<AlignedCodonFrame> codonFrame = new ArrayList<>();
 
     private List<ArgumentI> args = Collections.emptyList();
@@ -337,6 +339,7 @@ public class AlignmentOperation implements Operation
       this.alnTitle = alnTitle;
       this.submitGaps = submitGaps;
       this.preserveOrder = preserveOrder;
+      this.viewport = viewport;
       this.gapCharacter = viewport.getGapCharacter();
 
       String panelInfo = String.format("%s using service hosted at %s%n%s",
@@ -366,6 +369,7 @@ public class AlignmentOperation implements Operation
     @Override
     public void startJobs() throws IOException
     {
+      Cache.log.info(format("Starting new %s job.", service.getName()));
       String outputHeader = String.format("%s of %s%nJob details%n",
               submitGaps ? "Re-alignment" : "Alignment", alnTitle);
       SequenceI[][] conmsa = msa.getVisibleContigs('-');
@@ -382,7 +386,7 @@ public class AlignmentOperation implements Operation
         WSJob job = new WSJob(service.getProviderName(), service.getName(),
                 service.getHostName());
         job.setJobNum(wsInfo.addJobPane());
-        if (conmsa.length > 0)
+        if (conmsa.length > 1)
         {
           wsInfo.setProgressName(String.format("region %d", i),
                   job.getJobNum());
@@ -448,7 +452,7 @@ public class AlignmentOperation implements Operation
       boolean done = true;
       for (WSJob job : getJobs())
       {
-        if (!job.getStatus().isDone())
+        if (!job.getStatus().isDone() && !job.getStatus().isFailed())
         {
           Cache.log.debug(format("Polling job %s.", job));
           try
@@ -479,7 +483,7 @@ public class AlignmentOperation implements Operation
           Cache.log.debug(
                   format("Job %s status is %s", job, job.getStatus()));
         }
-        done &= job.getStatus().isDone();
+        done &= job.getStatus().isDone() || job.getStatus().isFailed();
       }
       updateWSInfoGlobalStatus();
       return done;
@@ -523,9 +527,11 @@ public class AlignmentOperation implements Operation
       Map<Long, AlignmentI> results = new LinkedHashMap<>();
       for (WSJob job : getJobs())
       {
+        if (job.getStatus().isFailed())
+          continue;
         try
         {
-          AlignmentI alignment = supplier.getResult(job);
+          AlignmentI alignment = supplier.getResult(job, dataset.getSequences(), viewport);
           if (alignment != null)
           {
             results.put(job.getUid(), alignment);