--- /dev/null
+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();
+ }
+
+}