(JAL-812,JAL-811) - generic test for 'calculation involving annotation' in progress...
[jalview.git] / src / jalview / api / AlignCalcManagerI.java
index e310696..e9b625b 100644 (file)
@@ -1,5 +1,9 @@
 package jalview.api;
 
+import java.util.List;
+
+import jalview.datamodel.AlignmentAnnotation;
+
 public interface AlignCalcManagerI
 {
 
@@ -37,6 +41,11 @@ public interface AlignCalcManagerI
   void workerCannotRun(AlignCalcWorkerI worker);
 
   /**
+   * indicate that a worker like this may be run on the platform.  
+   * @param worker of class to be removed from the execution blacklist
+   */
+  void workerMayRun(AlignCalcWorkerI worker);
+  /**
    * launch a new worker
    * @param worker
    */
@@ -55,4 +64,45 @@ public interface AlignCalcManagerI
    */
   boolean isWorking();
 
+  
+  /**
+   * register a restartable worker
+   * @param worker
+   */
+  void registerWorker(AlignCalcWorkerI worker);
+
+  /**
+   * restart any registered workers 
+   */
+  void restartWorkers();
+
+  /**
+   * 
+   * @param alignmentAnnotation
+   * @return true if a currently registered and working worker indicates its involvement with the given alignmentAnnotation
+   */
+  boolean workingInvolvedWith(AlignmentAnnotation alignmentAnnotation);
+
+  /**
+   * kick any known instances of the given worker class to update their annotation 
+   * @param workerClass
+   */
+  void updateAnnotationFor(Class workerClass);
+
+  /**
+   * return any registered workers of the given class 
+   * @param workerClass
+   * @return null or one or more workers of the given class
+   */
+  List<AlignCalcWorkerI> getRegisteredWorkersOfClass(
+          Class workerClass);
+
+  /**
+   * start any workers of the given class
+   * @param workerClass
+   * @return false if no workers of given class were registered
+   * (note - blacklisted classes cannot be restarted, so this method will return true for blacklisted workers)
+   */
+  boolean startRegisteredWorkersOfClass(Class workerClass);
+
 }