X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fslivkaws%2FSlivkaParamSet.java;h=8a1d382006bce4c9348877981b7812359702531b;hb=c8dfa0a1b91d46b9c11dc6ce7b2b4bfcbc71c13e;hp=7e81684d0a3ffdcf1f90d9f5e1853ec12b671f94;hpb=bc7c2cf5500c5a4124a69ef8e7b1374d8997558f;p=jalview.git diff --git a/src/jalview/ws/slivkaws/SlivkaParamSet.java b/src/jalview/ws/slivkaws/SlivkaParamSet.java index 7e81684..8a1d382 100644 --- a/src/jalview/ws/slivkaws/SlivkaParamSet.java +++ b/src/jalview/ws/slivkaws/SlivkaParamSet.java @@ -9,85 +9,90 @@ import jalview.ws.params.simple.StringParameter; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; 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.Parameter; 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 { + SlivkaParamSet(SlivkaService service) throws IOException + { this.service = service; - SlivkaForm form = service.getForm(); - for (FormField field : form.getFields()) + for (Parameter param : service.getParameters()) { - 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 choices = new ArrayList<>(choiceField.getChoices()); - if (field.hasMultipleValues()) { - int counter = 0; - for (String choice : choices) { + Object defaultValue = param.getDefault() instanceof List ? ((List) param.getDefault()).get(0) + : param.getDefault(); + if (param instanceof Parameter.FlagParameter) + { + args.add(new BooleanOption(param.getId(), param.getDescription(), + param.getName(), param.isRequired(), (Boolean) defaultValue, null)); + } + else if (param instanceof Parameter.TextParameter) + { + args.add(new StringParameter(param.getId(), param.getDescription(), + param.isRequired(), (String) defaultValue, (String) defaultValue)); + } + else if (param instanceof Parameter.IntegerParameter) + { + Integer min = ((Parameter.IntegerParameter) param).getMin(); + Integer max = ((Parameter.IntegerParameter) param).getMax(); + Integer defVal = defaultValue != null ? ((Number) defaultValue).intValue() : null; + args.add(new IntegerParameter(param.getId(), param.getDescription(), + param.isRequired(), defVal, (min == null) ? Integer.MIN_VALUE : min, + (max == null) ? Integer.MAX_VALUE : max)); + } + else if (param instanceof Parameter.DecimalParameter) + { + Double min = ((Parameter.DecimalParameter) param).getMin(); + Double max = ((Parameter.DecimalParameter) param).getMax(); + Double defVal = defaultValue != null ? ((Number) defaultValue).doubleValue() : null; + args.add(new DoubleParameter(param.getId(), param.getDescription(), + param.isRequired(), defVal, (min == null) ? -Double.MAX_VALUE : min, + (max == null) ? Double.MAX_VALUE : max)); + } + else if (param instanceof Parameter.ChoiceParameter) + { + List choices = ((Parameter.ChoiceParameter) param) + .getChoices(); + if (param.isArray()) + { + int i = 0; + List selected = param.getDefault() != null + ? (List) param.getDefault() + : Collections.EMPTY_LIST; + 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 - )); + String.format("%s$%d", param.getId(), i++), + param.getDescription(), choice, param.isRequired(), + selected.contains(choice), choice, null)); } } else { args.add(new StringParameter( - field.getName(), field.getDescription(), - field.isRequired(), choiceField.getDefault(), choiceField.getDefault(), - choices, choices - )); + param.getId(), param.getDescription(), + param.isRequired(), (String) param.getDefault(), + (String) defaultValue, choices, choices)); } - break; - case FILE: - default: - continue; + } + else if (param instanceof Parameter.FileParameter) + { + // skip: files are provided from sequences + } + else + { + String defaultVal = param.getDefault() != null + ? param.getDefault().toString() + : null; + args.add(new StringParameter(param.getId(), param.getDescription(), + param.isRequired(), defaultVal, defaultVal)); } } } @@ -107,7 +112,7 @@ public class SlivkaParamSet implements WsParamSetI @Override public String[] getApplicableUrls() { - return new String[] { service.getURL().toString() }; + return new String[] { service.getUrl().toString() }; } @Override