(JAL-976) refactored common code for JABAWS v2 service clients
[jalview.git] / src / jalview / ws / jws2 / Jws2Client.java
index 184e514..e6b4cf5 100644 (file)
  */
 package jalview.ws.jws2;
 
+import java.util.List;
+
 import javax.swing.JMenu;
 
+import compbio.metadata.Argument;
+
 import jalview.gui.AlignFrame;
+import jalview.gui.Desktop;
 import jalview.gui.WebserviceInfo;
-import jalview.ws.jws2.Jws2Discoverer.Jws2Instance;
+import jalview.gui.WsJobParameters;
+import jalview.ws.jws2.dm.JabaWsParamSet;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.WsParamSetI;
 
 /**
- * provides metadata for a jws2 service instance - resolves names, etc.
+ * provides metadata for a jabaws2 service instance - resolves names, etc.
  * 
  * @author JimP
  * 
  */
 public abstract class Jws2Client extends jalview.ws.WSClient
 {
+  protected AlignFrame alignFrame;
+
+  protected WsParamSetI preset;
+
+  protected List<Argument> paramset;
+
+  public Jws2Client(AlignFrame _alignFrame,
+          WsParamSetI preset, List<Argument> arguments)
+  {
+    alignFrame = _alignFrame;
+    this.preset = preset;
+    if (preset != null)
+    {
+      if (!((preset instanceof JabaPreset) || preset instanceof JabaWsParamSet))
+      {
+        /*
+         * { this.preset = ((JabaPreset) preset).p; } else if (preset instanceof
+         * JabaWsParamSet) { List<Argument> newargs = new ArrayList<Argument>();
+         * JabaWsParamSet pset = ((JabaWsParamSet) preset); for (Option opt :
+         * pset.getjabaArguments()) { newargs.add(opt); } if (arguments != null
+         * && arguments.size() > 0) { // merge arguments with preset's own
+         * arguments. for (Argument opt : arguments) { newargs.add(opt); } }
+         * paramset = newargs; } else {
+         */
+        throw new Error(
+                "Implementation error: Can only instantiate Jaba parameter sets.");
+      }
+    }
+    else
+    {
+      // just provided with a bunch of arguments
+      this.paramset = arguments;
+    }
+  }
+
+  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 = new WsJobParameters(sh, preset);
+      if (adjustingExisting)
+      {
+        jobParams.setName("Adjusting parameters for existing Calculation");
+      }
+      if (!jobParams.showRunDialog())
+      {
+        return false;
+      }
+      WsParamSetI prset = jobParams.getPreset();
+      if (prset == null)
+      {
+        paramset = JabaParamStore.getJabafromJwsArgs(jobParams
+                .getJobParams());
+      }
+      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
+  }
+
   protected WebserviceInfo setWebService(Jws2Instance serv, boolean b)
   {
     // serviceHandle = serv;
-    String serviceInstance = serv.service.getClass().getName();
+    String serviceInstance = serv.action; // serv.service.getClass().getName();
     WebServiceName = serv.serviceType;
     WebServiceJobTitle = serv.getActionText();
     WsURL = serv.hosturl;
     if (!b)
     {
       return new WebserviceInfo(WebServiceJobTitle, WebServiceJobTitle
-              + " using service hosted at " + serv.hosturl);
+              + " using service hosted at " + serv.hosturl + "\n"
+              + (serv.description != null ? serv.description : ""));
     }
     return null;
   }