JAL-961 JAL-976 abstracted container for dynamic calculation parameters
authorjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 6 Jul 2012 17:29:00 +0000 (18:29 +0100)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 6 Jul 2012 17:29:54 +0000 (18:29 +0100)
src/jalview/ws/jws2/dm/AAConsSettings.java
src/jalview/ws/params/AutoCalcSetting.java [new file with mode: 0644]

index f2d7126..d1310c7 100644 (file)
@@ -4,11 +4,15 @@ import java.util.ArrayList;
 import java.util.List;
 
 import compbio.metadata.Argument;
+import compbio.metadata.Option;
 import compbio.metadata.Preset;
 
+import jalview.ws.jws2.JabaParamStore;
 import jalview.ws.jws2.JabaPreset;
+import jalview.ws.jws2.ParameterUtils;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.ArgumentI;
+import jalview.ws.params.ParamManager;
 import jalview.ws.params.WsParamSetI;
 
 /**
@@ -17,34 +21,15 @@ import jalview.ws.params.WsParamSetI;
  * @author jprocter TODO: refactor to a generic 'last job and service run'
  *         container ?
  */
-public class AAConsSettings
+public class AAConsSettings extends jalview.ws.params.AutoCalcSetting 
 {
-  boolean autoUpdate;
-
   Jws2Instance service;
 
-  WsParamSetI preset;
-
-  List<Argument> jobArgset;
-
   public AAConsSettings(boolean autoUpdate, Jws2Instance service,
-          WsParamSetI preset, List<Argument> jobArgset)
+          WsParamSetI preset, List<ArgumentI> jobArgset)
   {
-    super();
-    this.autoUpdate = autoUpdate;
+    super(preset, jobArgset, autoUpdate);
     this.service = service;
-    this.preset = preset;
-    this.jobArgset = jobArgset;
-  }
-
-  public boolean isAutoUpdate()
-  {
-    return autoUpdate;
-  }
-
-  public void setAutoUpdate(boolean autoUpdate)
-  {
-    this.autoUpdate = autoUpdate;
   }
 
   public Jws2Instance getService()
@@ -93,26 +78,45 @@ public class AAConsSettings
     }
   }
 
-  public WsParamSetI getPreset()
+  public List<Argument> getJobArgset()
   {
-    return preset;
+    return jobArgset==null ? null : JabaParamStore.getJabafromJwsArgs(jobArgset);
   }
 
-  public void setPreset(WsParamSetI preset)
+  public void setJobArgset(List<Argument> jobArgset)
   {
-    // TODO: test if service URL is in presets
-    this.preset = preset;
+    // TODO: test if parameters valid for service
+    this.jobArgset = jobArgset==null ? null : JabaParamStore.getJwsArgsfromJaba(jobArgset);
   }
 
-  public List<Argument> getJobArgset()
+  public String getWsParamFile()
   {
-    return jobArgset;
+    List<Option> opts=null;
+    if (jobArgset!=null)
+    {
+      opts = JabaParamStore.getJabafromJwsArgs(jobArgset);
+    } else {
+      if (preset!=null)
+      {
+        opts = JabaParamStore.getJabafromJwsArgs(preset.getArguments());
+      }
+    }
+    if (opts==null  || opts.size()==0)
+    {
+      return "";
+    }
+    StringBuffer pset=new StringBuffer();
+    for (String ps:ParameterUtils.writeParameterSet(opts, " "))
+    {
+      pset.append(ps); pset.append("\n");
+    }
+    return pset.toString();
   }
 
-  public void setJobArgset(List<Argument> jobArgset)
+  @Override
+  public String getServiceURI()
   {
-    // TODO: test if parameters valid for service
-    this.jobArgset = jobArgset;
+    return service.getServiceTypeURI();
   }
 
 }
diff --git a/src/jalview/ws/params/AutoCalcSetting.java b/src/jalview/ws/params/AutoCalcSetting.java
new file mode 100644 (file)
index 0000000..49134ae
--- /dev/null
@@ -0,0 +1,73 @@
+package jalview.ws.params;
+
+import java.util.List;
+
+public abstract class AutoCalcSetting
+{
+
+  protected boolean autoUpdate;
+
+  protected WsParamSetI preset;
+
+  protected List<ArgumentI> jobArgset;
+
+  public AutoCalcSetting(WsParamSetI preset2, List<ArgumentI> jobArgset2,
+          boolean autoUpdate2)
+  {
+    autoUpdate = autoUpdate2;
+    preset = preset2;
+    jobArgset = jobArgset2;
+  }
+
+  public boolean isAutoUpdate()
+  {
+    return autoUpdate;
+  }
+
+  public void setAutoUpdate(boolean autoUpdate)
+  {
+    this.autoUpdate = autoUpdate;
+  }
+
+  public WsParamSetI getPreset()
+  {
+    return preset;
+  }
+
+  public void setPreset(WsParamSetI preset)
+  {
+    // TODO: test if service URL is in presets
+    this.preset = preset;
+  }
+
+  public List<ArgumentI> getArgumentSet()
+  {
+    return jobArgset;
+  }
+
+  /**
+   * 
+   * @return characteristic URI for this service. The URI should reflect the
+   *         type and version of this service, enabling the service client code
+   *         to recover the correct client for this calculation.
+   */
+  public abstract String getServiceURI();
+
+  /**
+   * return any concrete service endpoints associated with this calculation.
+   * built in services should return a zero length array
+   * 
+   * @return
+   */
+  public String[] getServiceURLs()
+  {
+    return new String[0];
+  }
+
+  /**
+   * 
+   * @return stringified representation of the parameters for this setting
+   */
+  public abstract String getWsParamFile();
+
+}