Merge branch 'alpha/JAL-3362_Jalview_212_alpha' into alpha/merge_212_JalviewJS_2112
[jalview.git] / src / jalview / ws / slivkaws / SlivkaParamSet.java
diff --git a/src/jalview/ws/slivkaws/SlivkaParamSet.java b/src/jalview/ws/slivkaws/SlivkaParamSet.java
new file mode 100644 (file)
index 0000000..7e81684
--- /dev/null
@@ -0,0 +1,142 @@
+package jalview.ws.slivkaws;
+
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.WsParamSetI;
+import jalview.ws.params.simple.BooleanOption;
+import jalview.ws.params.simple.DoubleParameter;
+import jalview.ws.params.simple.IntegerParameter;
+import jalview.ws.params.simple.StringParameter;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import uk.ac.dundee.compbio.slivkaclient.BooleanField;
+import uk.ac.dundee.compbio.slivkaclient.ChoiceField;
+import uk.ac.dundee.compbio.slivkaclient.DecimalField;
+import uk.ac.dundee.compbio.slivkaclient.FormField;
+import uk.ac.dundee.compbio.slivkaclient.IntegerField;
+import uk.ac.dundee.compbio.slivkaclient.SlivkaForm;
+import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
+import uk.ac.dundee.compbio.slivkaclient.TextField;
+
+
+
+public class SlivkaParamSet implements WsParamSetI
+{
+  private SlivkaService service;
+  private List<ArgumentI> args = new ArrayList<>();
+
+  SlivkaParamSet(SlivkaService service) throws IOException {
+    this.service = service;
+    SlivkaForm form = service.getForm();
+    for (FormField field : form.getFields())
+    {
+      switch (field.getType()) {
+      case BOOLEAN:
+        BooleanField boolField = (BooleanField) field;
+        args.add(new BooleanOption(
+            field.getName(), field.getDescription(), field.getLabel(),
+            field.isRequired(), boolField.getDefault(), null
+        ));
+        break;
+      case TEXT:
+        TextField textField = (TextField) field;
+        args.add(new StringParameter(
+            field.getName(), field.getDescription(), field.isRequired(),
+            textField.getDefault(), textField.getDefault()
+        ));
+        break;
+      case INTEGER:
+        IntegerField intField = (IntegerField) field;
+        args.add(new IntegerParameter(
+            field.getName(), field.getDescription(), field.isRequired(),
+            intField.getDefault(), intField.getMin(), intField.getMax()
+        ));
+        break;
+      case DECIMAL:
+        DecimalField doubleField = (DecimalField) field;
+        args.add(new DoubleParameter(
+            field.getName(), field.getDescription(), field.isRequired(),
+            doubleField.getDefault(), doubleField.getMin(),
+            doubleField.getMax()
+        ));
+        break;
+      case CHOICE:
+        ChoiceField choiceField = (ChoiceField) field;
+        List<String> choices = new ArrayList<>(choiceField.getChoices());
+        if (field.hasMultipleValues()) {
+          int counter = 0;
+          for (String choice : choices) {
+            args.add(new BooleanOption(
+                String.format("%s$%d", field.getName(), counter++),
+                field.getDescription(), choice, field.isRequired(),
+                choice.equals(choiceField.getDefault()), choice,
+                null
+            ));
+          }
+        }
+        else
+        {
+          args.add(new StringParameter(
+              field.getName(), field.getDescription(),
+              field.isRequired(), choiceField.getDefault(), choiceField.getDefault(),
+              choices, choices
+          ));
+        }
+        break;
+      case FILE:
+      default:
+        continue;
+      }
+    }
+  }
+
+  @Override
+  public String getName()
+  {
+    return "Default";
+  }
+
+  @Override
+  public String getDescription()
+  {
+    return "";
+  }
+
+  @Override
+  public String[] getApplicableUrls()
+  {
+    return new String[] { service.getURL().toString() };
+  }
+
+  @Override
+  public String getSourceFile()
+  {
+    return null;
+  }
+
+  @Override
+  public void setSourceFile(String newfile)
+  {
+  }
+
+  @Override
+  public boolean isModifiable()
+  {
+    return true;
+  }
+
+  @Override
+  public List<ArgumentI> getArguments()
+  {
+    return args;
+  }
+
+  @Override
+  public void setArguments(List<ArgumentI> args)
+  {
+    throw new RuntimeException();
+  }
+
+}