JAL-3878 Add annotation operations to slivka discoverer.
[jalview.git] / src / jalview / ws2 / slivka / SlivkaWSDiscoverer.java
index 7e4178c..c0c7502 100644 (file)
@@ -9,6 +9,7 @@ import java.util.concurrent.*;
 import jalview.bin.Cache;
 import jalview.ws2.*;
 import jalview.ws2.operations.AlignmentOperation;
+import jalview.ws2.operations.AnnotationOperation;
 import jalview.ws2.operations.Operation;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
@@ -111,10 +112,10 @@ public class SlivkaWSDiscoverer implements WebServiceDiscoverer
     {
       if (!task.isDone())
       {
-        return false;
+        return true;
       }
     }
-    return true;
+    return false;
   }
 
   public boolean isDone()
@@ -132,6 +133,7 @@ public class SlivkaWSDiscoverer implements WebServiceDiscoverer
               reloadServices();
               return SlivkaWSDiscoverer.this;
             });
+    task.thenRun(() -> fireServicesChanged(getServices()));
     discoveryTasks.add(task);
     return task;
   }
@@ -165,11 +167,26 @@ public class SlivkaWSDiscoverer implements WebServiceDiscoverer
             Operation op = null;
             switch (path[path.length - 1].toLowerCase())
             {
+            case "sequence alignment analysis (conservation)":
+              AnnotationOperation anop;
+              op = anop = new AnnotationOperation(instance,
+                  instance::getAnnotations, instance::getFeaturesFile, "Conservation");
+              anop.setAlignmentAnalysis(true);
+              anop.setInteractive(true);
+              break;
+            case "protein sequence analysis":
+              op = new AnnotationOperation(instance, instance::getAnnotations,
+                  instance::getFeaturesFile, "Protein Disorder");
+              break;
             case "multiple sequence alignment":
               op = new AlignmentOperation(instance, instance::getAlignment);
+              break;
             }
             if (op != null)
+            {
               instance.addOperation(op);
+              break;
+            }
           }
         }
         if (instance.operations.size() > 0)
@@ -180,7 +197,6 @@ public class SlivkaWSDiscoverer implements WebServiceDiscoverer
     }
     this.services = allServices;
     Cache.log.info("Reloading slivka services finished");
-    fireServicesChanged(getServices());
     return allServices;
   }