abstracted GUI to use jalview.ws.params objects (JAL-591, JAL-633)
[jalview.git] / src / jalview / ws / jws2 / dm / JabaWsParamSet.java
diff --git a/src/jalview/ws/jws2/dm/JabaWsParamSet.java b/src/jalview/ws/jws2/dm/JabaWsParamSet.java
new file mode 100644 (file)
index 0000000..ac90baa
--- /dev/null
@@ -0,0 +1,187 @@
+package jalview.ws.jws2.dm;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import compbio.metadata.Argument;
+import compbio.metadata.Option;
+
+import jalview.ws.jws2.JabaParamStore;
+import jalview.ws.jws2.ParameterUtils;
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.ParamDatastoreI;
+import jalview.ws.params.WsParamSetI;
+
+public class JabaWsParamSet implements WsParamSetI
+{
+  /**
+   * raw jaba arguments.
+   */
+  List<Option> jabaArguments;
+
+  String name, description, applicableUrls[], sourceFile;
+
+  public JabaWsParamSet(String storeSetName, String descr, List jobParams)
+  {
+    if (jobParams.size() > 0)
+    {
+      if (jobParams.get(0) instanceof Option)
+      {
+        jabaArguments = new ArrayList<Option>();
+        // if classCastExceptions are raised then there has been an
+        // implementation error.
+        jabaArguments.addAll((List<Option>) jobParams);
+      }
+      else
+      {
+        if (!allJaba(jobParams))
+        {
+          throw new Error(
+                  "Cannot create a JabaWSParamSet from non-JabaWS parameters");
+        }
+        else
+        {
+          jabaArguments = JabaParamStore.getJabafromJwsArgs(jobParams);
+        }
+      }
+    }
+    name = storeSetName;
+    description = descr;
+    sourceFile = null;
+    applicableUrls = null;
+  }
+
+  public JabaWsParamSet()
+  {
+
+  }
+
+  private boolean allJaba(List jobParams)
+  {
+
+    boolean allJaba = true;
+    for (Object jp : jobParams)
+    {
+      if (jp instanceof JabaParameter || jp instanceof JabaOption)
+      {
+        allJaba &= true;
+      }
+      else
+      {
+        allJaba = false;
+        break;
+      }
+    }
+    return allJaba;
+  }
+
+  @Override
+  public String getName()
+  {
+    return name;
+  }
+
+  @Override
+  public String getDescription()
+  {
+    return description;
+  }
+
+  /**
+   * @param name
+   *          the name to set
+   */
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+
+  /**
+   * @param description
+   *          the description to set
+   */
+  public void setDescription(String description)
+  {
+    this.description = description;
+  }
+
+  /**
+   * @param applicableUrls
+   *          the applicableUrls to set
+   */
+  public void setApplicableUrls(String[] applicableUrls)
+  {
+    this.applicableUrls = applicableUrls;
+  }
+
+  /**
+   * @param modifiable
+   *          the modifiable to set
+   */
+  public void setModifiable(boolean modifiable)
+  {
+    this.modifiable = modifiable;
+  }
+
+  @Override
+  public String[] getApplicableUrls()
+  {
+    return applicableUrls;
+  }
+
+  @Override
+  public String getSourceFile()
+  {
+    return sourceFile;
+  }
+
+  @Override
+  public void setSourceFile(String newfile)
+  {
+    sourceFile = newfile;
+  }
+
+  boolean modifiable = true;
+
+  @Override
+  public boolean isModifiable()
+  {
+    return modifiable;
+  }
+
+  @Override
+  public List<ArgumentI> getArguments()
+  {
+    return JabaParamStore.getJwsArgsfromJaba(jabaArguments);
+  }
+
+  @Override
+  public void setArguments(List<ArgumentI> args)
+  {
+    if (!allJaba(args))
+    {
+      throw new Error(
+              "Cannot set arguments to a JabaWSParamSet that are not JabaWS arguments");
+    }
+    jabaArguments = new ArrayList<Option>();
+    for (ArgumentI rg : args)
+    {
+      jabaArguments.add(((JabaOption) rg).opt);
+    }
+  }
+
+  public List<Option> getjabaArguments()
+  {
+    return jabaArguments;
+  }
+
+  public void setjabaArguments(List<Option> args)
+  {
+    jabaArguments = args;
+  }
+
+}