JAL-3070 set calcId and autocalculated flags for annotation returned by the service
[jalview.git] / src / jalview / ws / jws2 / SeqAnnotationServiceCalcWorker.java
index df3a311..81dfa30 100644 (file)
@@ -229,8 +229,13 @@ public class SeqAnnotationServiceCalcWorker extends AlignCalcWorker
   @Override
   public void run()
   {
+    if (checkDone())
+    {
+      return;
+    }
     if (!hasService())
     {
+      calcMan.workerComplete(this);
       return;
     }
 
@@ -244,10 +249,6 @@ public class SeqAnnotationServiceCalcWorker extends AlignCalcWorker
     WebserviceInfo info = new WebserviceInfo("foo", "bar", false);
     try
     {
-      if (checkDone())
-      {
-        return;
-      }
       List<SequenceI> seqs = getInputSequences(
               alignViewport.getAlignment(),
               bySequence ? alignViewport.getSelectionGroup() : null);
@@ -275,7 +276,9 @@ public class SeqAnnotationServiceCalcWorker extends AlignCalcWorker
         return;
       }
       // TODO: handle job submission error reporting here.
-      
+      Cache.log.debug("Service " + service.getUri() + "\nSubmitted job ID: "
+              + rslt);
+      ;
       // ///
       // otherwise, construct WsJob and any UI handlers
       running = new AnnotationWsJob();
@@ -421,6 +424,24 @@ public class SeqAnnotationServiceCalcWorker extends AlignCalcWorker
         // sequence, excluding regions not annotated due to gapMap/column
         // visibility
 
+        // update calcId if it is not already set on returned annotation
+        if (returnedAnnot != null)
+        {
+          for (AlignmentAnnotation aa : returnedAnnot)
+          {
+            // assume that any CalcIds already set
+            if (getCalcId() != null && aa.getCalcId() == null
+                    || "".equals(aa.getCalcId()))
+            {
+              aa.setCalcId(getCalcId());
+            }
+            // autocalculated annotation are created by interactive alignment
+            // analysis services
+            aa.autoCalculated = service.isAlignmentAnalysis()
+                    && service.isInteractiveUpdate();
+          }
+        }
+
         running.setAnnotation(returnedAnnot);
 
         if (running.hasResults())
@@ -508,7 +529,6 @@ public class SeqAnnotationServiceCalcWorker extends AlignCalcWorker
       calcMan.workerComplete(this);
       if (ap != null)
       {
-        calcMan.workerComplete(this);
         if (guiProgress != null && progressId != -1)
         {
           guiProgress.setProgressBar("", progressId);