Merge remote-tracking branch 'origin/tasks/JAL-3070_wsinterfaces' into alpha/JAL...
authorMateusz Warowny <mmzwarowny@dundee.ac.uk>
Fri, 11 Oct 2019 10:43:17 +0000 (11:43 +0100)
committerMateusz Warowny <mmzwarowny@dundee.ac.uk>
Fri, 11 Oct 2019 10:43:17 +0000 (11:43 +0100)
src/jalview/workers/AlignCalcManager.java
src/jalview/ws/jws2/SeqAnnotationServiceCalcWorker.java
src/jalview/ws/jws2/SequenceAnnotationWSClient.java

index 3a3dc44..1967375 100644 (file)
@@ -78,6 +78,19 @@ public class AlignCalcManager implements AlignCalcManagerI
     canUpdate = new HashSet<>();
   }
 
+  private static boolean listContains(List<AlignCalcWorkerI> upd,
+          AlignCalcWorkerI worker)
+  {
+    // avoid use of 'Contains' in case
+    for (AlignCalcWorkerI _otherworker : upd)
+    {
+      if (_otherworker == upd)
+      {
+        return true;
+      }
+    }
+    return false;
+  }
   @Override
   public void notifyStart(AlignCalcWorkerI worker)
   {
@@ -91,18 +104,16 @@ public class AlignCalcManager implements AlignCalcManagerI
       }
       synchronized (upd)
       {
-        // avoid use of 'Contains' in case
-        for (AlignCalcWorkerI _otherworker : upd)
+        if (listContains(upd, worker))
         {
-          if (_otherworker == upd)
-          {
-            Cache.log.debug(
+          Cache.log.debug(
                     "Ignoring second call to notifyStart for worker "
                             + worker);
-            return;
-          }
         }
+        else
+        {
           upd.add(worker);
+        }
       }
     }
   }
@@ -139,7 +150,7 @@ public class AlignCalcManager implements AlignCalcManagerI
   {
     synchronized (inProgress)
     {
-      if (inProgress.contains(worker))
+      if (listContains(inProgress, worker))
       {
         return false; // worker is already working, so ask caller to wait around
       }
@@ -156,7 +167,7 @@ public class AlignCalcManager implements AlignCalcManagerI
   {
     synchronized (inProgress)
     {
-      // System.err.println("Worker " + worker + " marked as complete.");
+      Cache.log.debug("Worker " + worker + " marked as complete.");
       inProgress.remove(worker);
       List<AlignCalcWorkerI> upd = updating.get(worker.getClass());
       if (upd != null)
@@ -224,7 +235,7 @@ public class AlignCalcManager implements AlignCalcManagerI
   {
     synchronized (restartable)
     {
-      if (!restartable.contains(worker))
+      if (!listContains(restartable, worker))
       {
         restartable.add(worker);
       }
index 661bdf7..81dfa30 100644 (file)
@@ -424,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())
index 501e93d..11ce798 100644 (file)
@@ -116,9 +116,10 @@ public class SequenceAnnotationWSClient extends Jws2Client
                   MessageManager.getString("error.implementation_error"),
                   x);
         }
-        alignFrame.getViewport().getCalcManager().registerWorker(worker);
-        alignFrame.getViewport().getCalcManager().startWorker(worker);
-
+        alignFrame.getViewport().getCalcManager().registerWorker(worker); // also
+                                                                          // starts
+                                                                          // the
+                                                                          // worker
       }
       else
       {