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 args = new ArrayList<>(); SlivkaParamSet(SlivkaService service) throws IOException { this.service = service; SlivkaForm form = service.getForm(); for (FormField field : form.getFields()) { ArgumentI arg; switch (field.getType()) { case BOOLEAN: BooleanField boolField = (BooleanField) field; arg = new BooleanOption( field.getName(), field.getDescription(), field.isRequired(), boolField.getDefault(), boolField.getDefault(), null ); break; case TEXT: TextField textField = (TextField) field; arg = new StringParameter( field.getName(), field.getDescription(), field.isRequired(), textField.getDefault(), textField.getDefault() ); break; case INTEGER: IntegerField intField = (IntegerField) field; arg = new IntegerParameter( field.getName(), field.getDescription(), field.isRequired(), intField.getDefault(), intField.getMin(), intField.getMax() ); break; case DECIMAL: DecimalField doubleField = (DecimalField) field; arg = new DoubleParameter( field.getName(), field.getDescription(), field.isRequired(), doubleField.getDefault(), doubleField.getMin(), doubleField.getMax() ); break; case CHOICE: ChoiceField choiceField = (ChoiceField) field; List choices = new ArrayList<>(choiceField.getChoices()); arg = new StringParameter(field.getName(), field.getDescription(), field.isRequired(), choiceField.getDefault(), choices.get(0), choices, choices ); break; case FILE: default: continue; } args.add(arg); } } @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 getArguments() { return args; } @Override public void setArguments(List args) { throw new RuntimeException(); } }