JAL-3070 pull up logic for offering a parameters dialog for a service to base client...
authorJim Procter <jprocter@issues.jalview.org>
Thu, 26 Jul 2018 16:07:08 +0000 (17:07 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Thu, 26 Jul 2018 16:07:08 +0000 (17:07 +0100)
src/jalview/ws/WSClient.java
src/jalview/ws/jws2/Jws2Client.java

index 68bd4b0..d031142 100755 (executable)
 package jalview.ws;
 
 import jalview.gui.AlignFrame;
+import jalview.gui.Desktop;
 import jalview.gui.WebserviceInfo;
+import jalview.gui.WsJobParameters;
+import jalview.util.MessageManager;
+import jalview.ws.api.ServiceWithParameters;
 import jalview.ws.api.UIinfo;
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.ParamDatastoreI;
+import jalview.ws.params.WsParamSetI;
+
+import java.util.List;
 
 public abstract class WSClient // implements WSMenuEntryProviderI
 {
@@ -78,10 +87,37 @@ public abstract class WSClient // implements WSMenuEntryProviderI
     ServiceActions.put("SecStrPred", "Secondary Structure Prediction");
   };
 
+  /**
+   * The preset for the job executed by this client (may be null)
+   */
+  protected WsParamSetI preset;
+
+  /**
+   * The parameters for the job executed by this client (may be null)
+   */
+  protected List<ArgumentI> paramset;
+
   public WSClient()
   {
   }
 
+  /**
+   * base constructor for a web service with parameters. Extending classes
+   * should implement this constructor with additional logic to verify that
+   * preset and arguments are compatible with the service being configured.
+   * 
+   * @param _alignFrame
+   * @param preset
+   * @param arguments
+   */
+  public WSClient(AlignFrame _alignFrame, WsParamSetI preset,
+          List<ArgumentI> arguments)
+  {
+    alignFrame = _alignFrame;
+    this.preset = preset;
+    this.paramset = arguments;
+  }
+
   protected WebserviceInfo setWebService(UIinfo serv, boolean b)
   {
     WebServiceName = serv.getName();
@@ -99,4 +135,60 @@ public abstract class WSClient // implements WSMenuEntryProviderI
     }
     return null;
   }
+
+  /**
+   * called to open a parameter editing dialog for parameterised services
+   * 
+   * @param sh
+   * @param editParams
+   * @return
+   */
+  protected boolean processParams(ServiceWithParameters sh,
+          boolean editParams)
+  {
+    return processParams(sh, editParams, false);
+  }
+
+  protected boolean processParams(ServiceWithParameters sh,
+          boolean editParams,
+          boolean adjustingExisting)
+  {
+
+    if (editParams)
+    {
+      // always do this
+      sh.initParamStore(Desktop.getUserParameterStore());
+
+      WsJobParameters jobParams = (preset == null && paramset != null
+              && paramset.size() > 0)
+                      ? new WsJobParameters((ParamDatastoreI) null, sh,
+                              (WsParamSetI) null, paramset)
+                      : new WsJobParameters((ParamDatastoreI) null, sh,
+                              preset, (List<ArgumentI>) null);
+      if (adjustingExisting)
+      {
+        jobParams.setName(MessageManager
+                .getString("label.adjusting_parameters_for_calculation"));
+      }
+      if (!jobParams.showRunDialog())
+      {
+        return false; // dialog cancelled
+      }
+
+      WsParamSetI prset = jobParams.getPreset();
+      if (prset == null)
+      {
+        paramset = jobParams.isServiceDefaults() ? null
+                : jobParams.getJobParams();
+        this.preset = null;
+      }
+      else
+      {
+        this.preset = prset; // ((JabaPreset) prset).p;
+        paramset = null; // no user supplied parameters.
+      }
+    }
+    return true;
+  }
+
 }
index 334f3c3..b4d498d 100644 (file)
@@ -23,15 +23,12 @@ package jalview.ws.jws2;
 import jalview.api.AlignCalcWorkerI;
 import jalview.bin.Cache;
 import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
 import jalview.gui.JvSwingUtils;
-import jalview.gui.WsJobParameters;
 import jalview.util.MessageManager;
 import jalview.ws.jws2.dm.AAConSettings;
 import jalview.ws.jws2.dm.JabaWsParamSet;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.ArgumentI;
-import jalview.ws.params.ParamDatastoreI;
 import jalview.ws.params.WsParamSetI;
 import jalview.ws.uimodel.AlignAnalysisUIText;
 
@@ -53,15 +50,10 @@ import javax.swing.event.MenuListener;
  */
 public abstract class Jws2Client extends jalview.ws.WSClient
 {
-  protected WsParamSetI preset;
-
-  protected List<ArgumentI> paramset;
-
   public Jws2Client(AlignFrame _alignFrame, WsParamSetI preset,
           List<ArgumentI> arguments)
   {
-    alignFrame = _alignFrame;
-    this.preset = preset;
+    super(_alignFrame, preset, arguments);
     if (preset != null)
     {
       if (!((preset instanceof JabaPreset)
@@ -82,63 +74,11 @@ public abstract class Jws2Client extends jalview.ws.WSClient
     }
     else
     {
-      // just provided with a bunch of arguments
-      this.paramset = arguments;
+      // TODO: verify that paramset is compatible with the service being
+      // contacted
     }
   }
 
-  boolean processParams(Jws2Instance sh, boolean editParams)
-  {
-    return processParams(sh, editParams, false);
-  }
-
-  protected boolean processParams(Jws2Instance sh, boolean editParams,
-          boolean adjustingExisting)
-  {
-
-    if (editParams)
-    {
-      if (sh.paramStore == null)
-      {
-        sh.paramStore = new JabaParamStore(sh,
-                Desktop.getUserParameterStore());
-      }
-      WsJobParameters jobParams = (preset == null && paramset != null
-              && paramset.size() > 0)
-                      ? new WsJobParameters((ParamDatastoreI) null, sh,
-                              (WsParamSetI) null,
-                              JabaParamStore.getJwsArgsfromJaba(paramset))
-                      : new WsJobParameters((ParamDatastoreI) null, sh,
-                              preset,
-                              (List<ArgumentI>) null);
-      if (adjustingExisting)
-      {
-        jobParams.setName(MessageManager
-                .getString("label.adjusting_parameters_for_calculation"));
-      }
-      if (!jobParams.showRunDialog())
-      {
-        return false; // dialog cancelled
-      }
-
-      WsParamSetI prset = jobParams.getPreset();
-      if (prset == null)
-      {
-        paramset = jobParams.isServiceDefaults() ? null
-                : JabaParamStore
-                        .getJabafromJwsArgs(jobParams.getJobParams());
-        this.preset = null;
-      }
-      else
-      {
-        this.preset = prset; // ((JabaPreset) prset).p;
-        paramset = null; // no user supplied parameters.
-      }
-    }
-    return true;
-
-  }
-
   public Jws2Client()
   {
     // anonymous constructor - used for headless method calls only