1 package jalview.ws.slivkaws;
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.Collections;
8 import jalview.ws.params.ArgumentI;
9 import jalview.ws.params.WsParamSetI;
10 import jalview.ws.params.simple.BooleanOption;
11 import jalview.ws.params.simple.DoubleParameter;
12 import jalview.ws.params.simple.IntegerParameter;
13 import jalview.ws.params.simple.StringParameter;
14 import uk.ac.dundee.compbio.slivkaclient.Parameter;
15 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
17 public class SlivkaParamSet implements WsParamSetI
19 private SlivkaService service;
21 private List<ArgumentI> args = new ArrayList<>();
23 SlivkaParamSet(SlivkaService service)
25 this.service = service;
26 for (Parameter param : service.getParameters())
28 Object defaultValue = param.getDefault() instanceof List
29 ? ((List<?>) param.getDefault()).get(0)
31 if (param instanceof Parameter.FlagParameter)
33 args.add(new BooleanOption(param.getId(), param.getDescription(),
34 param.getName(), param.isRequired(), (Boolean) defaultValue, null));
36 else if (param instanceof Parameter.TextParameter)
38 args.add(new StringParameter(param.getId(), param.getDescription(),
39 param.isRequired(), (String) defaultValue, (String) defaultValue));
41 else if (param instanceof Parameter.IntegerParameter)
43 Integer min = ((Parameter.IntegerParameter) param).getMin();
44 Integer max = ((Parameter.IntegerParameter) param).getMax();
45 Integer defVal = defaultValue != null
46 ? ((Number) defaultValue).intValue()
48 args.add(new IntegerParameter(param.getId(), param.getDescription(),
49 param.isRequired(), defVal, (min == null) ? Integer.MIN_VALUE : min,
50 (max == null) ? Integer.MAX_VALUE : max));
52 else if (param instanceof Parameter.DecimalParameter)
54 Double min = ((Parameter.DecimalParameter) param).getMin();
55 Double max = ((Parameter.DecimalParameter) param).getMax();
56 Double defVal = defaultValue != null
57 ? ((Number) defaultValue).doubleValue()
59 args.add(new DoubleParameter(param.getId(), param.getDescription(),
60 param.isRequired(), defVal, (min == null) ? -Double.MAX_VALUE : min,
61 (max == null) ? Double.MAX_VALUE : max));
63 else if (param instanceof Parameter.ChoiceParameter)
65 List<String> choices = ((Parameter.ChoiceParameter) param)
70 List<?> selected = param.getDefault() != null
71 ? (List<?>) param.getDefault()
72 : Collections.EMPTY_LIST;
73 for (String choice : choices)
75 args.add(new BooleanOption(
76 String.format("%s$%d", param.getId(), i++),
77 param.getDescription(), choice, param.isRequired(),
78 selected.contains(choice), choice, null));
83 args.add(new StringParameter(
84 param.getId(), param.getDescription(),
85 param.isRequired(), (String) param.getDefault(),
86 (String) defaultValue, choices, choices));
89 else if (param instanceof Parameter.FileParameter)
91 // skip: files are provided from sequences
95 String defaultVal = param.getDefault() != null
96 ? param.getDefault().toString()
98 args.add(new StringParameter(param.getId(), param.getDescription(),
99 param.isRequired(), defaultVal, defaultVal));
105 public String getName()
111 public String getDescription()
113 return service.getDescription();
117 public String[] getApplicableUrls()
119 return new String[] { service.getUrl().toString() };
123 public String getSourceFile()
129 public void setSourceFile(String newfile)
134 public boolean isModifiable()
140 public List<ArgumentI> getArguments()
146 public void setArguments(List<ArgumentI> args)
148 throw new RuntimeException();