X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fslivkaws%2FSlivkaParamSet.java;fp=src%2Fjalview%2Fws%2Fslivkaws%2FSlivkaParamSet.java;h=c8b99db7ebbe29e684a68fa81df416577c8ea8f6;hb=49db0dff1da16c3355b43a41498c1fc93ef47e91;hp=7e81684d0a3ffdcf1f90d9f5e1853ec12b671f94;hpb=304e64fb34b32659be1bbfd39fb4e15b2f79586e;p=jalview.git diff --git a/src/jalview/ws/slivkaws/SlivkaParamSet.java b/src/jalview/ws/slivkaws/SlivkaParamSet.java index 7e81684..c8b99db 100644 --- a/src/jalview/ws/slivkaws/SlivkaParamSet.java +++ b/src/jalview/ws/slivkaws/SlivkaParamSet.java @@ -1,93 +1,102 @@ package jalview.ws.slivkaws; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + 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.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) + { 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)); } } } @@ -101,13 +110,13 @@ public class SlivkaParamSet implements WsParamSetI @Override public String getDescription() { - return ""; + return service.getDescription(); } @Override public String[] getApplicableUrls() { - return new String[] { service.getURL().toString() }; + return new String[] { service.getUrl().toString() }; } @Override