Clover icon

Coverage Report

  1. Project Clover database Thu Dec 4 2025 16:11:35 GMT
  2. Package jalview.ws2.client.slivka

File SlivkaParamStoreFactory.java

 

Coverage histogram

../../../../img/srcFileCovDistChart8.png
20% of files have more coverage

Code metrics

28
98
12
1
229
202
28
0.29
8.17
12
2.33

Classes

Class Line # Actions
SlivkaParamStoreFactory 29 98 28
0.7608695676.1%
 

Contributing tests

This file is covered by 110 tests. .

Source view

1    package jalview.ws2.client.slivka;
2   
3    import java.io.File;
4    import java.net.MalformedURLException;
5    import java.net.URL;
6    import java.util.ArrayList;
7    import java.util.Collections;
8    import java.util.List;
9    import java.util.Map;
10   
11    import com.stevesoft.pat.NotImplementedError;
12   
13    import jalview.bin.Cache;
14    import jalview.bin.Console;
15    import jalview.ws.params.ArgumentI;
16    import jalview.ws.params.ParamDatastoreI;
17    import jalview.ws.params.ParamManager;
18    import jalview.ws.params.WsParamSetI;
19    import jalview.ws.params.simple.BooleanOption;
20    import jalview.ws.params.simple.DoubleParameter;
21    import jalview.ws.params.simple.IntegerParameter;
22    import jalview.ws.params.simple.Option;
23    import jalview.ws.params.simple.StringParameter;
24    import jalview.ws2.params.SimpleParamDatastore;
25    import jalview.ws2.params.SimpleParamSet;
26    import uk.ac.dundee.compbio.slivkaclient.Parameter;
27    import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
28   
 
29    class SlivkaParamStoreFactory
30    {
31    private final SlivkaService service;
32   
33    private final ParamManager manager;
34   
 
35  1507 toggle SlivkaParamStoreFactory(SlivkaService service, ParamManager manager)
36    {
37  1507 this.service = service;
38  1507 this.manager = manager;
39    }
40   
 
41  1507 toggle ParamDatastoreI createParamDatastore()
42    {
43  1507 URL url = null;
44  1507 try
45    {
46  1507 url = service.getUrl().toURL();
47    } catch (MalformedURLException e)
48    {
49  0 Console.warn("Invalid service url " + service.getUrl(), e);
50    }
51  1507 List<WsParamSetI> presets = new ArrayList<>(service.getPresets().size());
52  1507 for (var preset : service.getPresets())
53    {
54  0 presets.add(createPreset(preset));
55    }
56  1507 List<ArgumentI> arguments = createPresetArguments(Collections.emptyMap());
57  1507 return new SimpleParamDatastore(url, arguments, presets, manager);
58    }
59   
 
60  0 toggle WsParamSetI createPreset(SlivkaService.Preset preset)
61    {
62  0 var builder = SimpleParamSet.newBuilder();
63  0 builder.name(preset.name);
64  0 builder.description(preset.description);
65  0 builder.url(service.getUrl().toString());
66  0 builder.modifiable(false);
67  0 builder.arguments(createPresetArguments(preset.values));
68  0 return builder.build();
69    }
70   
 
71  1507 toggle List<ArgumentI> createPresetArguments(Map<String, Object> values)
72    {
73  1507 var args = new ArrayList<ArgumentI>();
74  1507 for (Parameter param : service.getParameters())
75    {
76  13003 if (param instanceof Parameter.IntegerParameter)
77    {
78  3031 args.add(createOption((Parameter.IntegerParameter) param,
79    (Integer) values.get(param.getId())));
80    }
81  9972 else if (param instanceof Parameter.DecimalParameter)
82    {
83  2129 args.add(createOption((Parameter.DecimalParameter) param,
84    (Double) values.get(param.getId())));
85    }
86  7843 else if (param instanceof Parameter.TextParameter)
87    {
88  1 args.add(createOption((Parameter.TextParameter) param,
89    (String) values.get(param.getId())));
90    }
91  7842 else if (param instanceof Parameter.FlagParameter)
92    {
93  3025 args.add(createOption((Parameter.FlagParameter) param,
94    (Boolean) values.get(param.getId())));
95    }
96  4817 else if (param instanceof Parameter.ChoiceParameter)
97    {
98  3361 Object ovalue = values.get(param.getId());
99  3361 List<String> lvalue = null;
100  3361 if (param.isArray())
101  112 lvalue = (List<String>) ovalue;
102  3249 else if (ovalue != null)
103  0 lvalue = List.of((String) ovalue);
104  3361 args.addAll(createChoiceOptions((Parameter.ChoiceParameter) param, lvalue));
105    }
106  1456 else if (param instanceof Parameter.FileParameter)
107    {
108    // args.add(createOption((Parameter.FileParameter) param, null));
109    }
110    else
111    {
112  0 args.add(createOption(param, values.get(param.getId())));
113    }
114    }
115  1507 return args;
116    }
117   
 
118  3031 toggle private Option createOption(Parameter.IntegerParameter param, Integer value)
119    {
120  3031 var builder = IntegerParameter.newBuilder();
121  3031 setCommonProperties(param, builder);
122  3031 builder.setDefaultValue((Integer) param.getDefault());
123  3031 builder.setValue(value);
124  3031 builder.setBounds(param.getMin(), param.getMax());
125  3031 return builder.build();
126    }
127   
 
128  2129 toggle private Option createOption(Parameter.DecimalParameter param, Double value)
129    {
130  2129 var builder = DoubleParameter.newBuilder();
131  2129 setCommonProperties(param, builder);
132  2129 builder.setDefaultValue((Double) param.getDefault());
133  2129 builder.setValue(value);
134  2129 builder.setBounds(param.getMin(), param.getMax());
135  2129 return builder.build();
136    }
137   
 
138  1 toggle private Option createOption(Parameter.TextParameter param, String value)
139    {
140  1 var builder = StringParameter.newBuilder();
141  1 setCommonProperties(param, builder);
142  1 builder.setDefaultValue((String) param.getDefault());
143  1 builder.setValue(value);
144  1 return builder.build();
145    }
146   
 
147  3025 toggle private Option createOption(Parameter.FlagParameter param, Boolean value)
148    {
149  3025 var builder = BooleanOption.newBuilder();
150  3025 setCommonProperties(param, builder);
151  3025 builder.setDefaultValue((Boolean) param.getDefault());
152  3025 builder.setValue(value);
153  3025 return builder.build();
154    }
155   
 
156  3361 toggle private List<Option> createChoiceOptions(Parameter.ChoiceParameter param, List<String> value)
157    {
158  3361 value = value != null ? value : Collections.emptyList();
159  3361 if (param.isArray())
160    {
161    /*
162    * Array parameter means that multiple values can be provided.
163    * Use multiple boolean checkboxes to represent the value.
164    */
165  112 List<Option> options = new ArrayList<>();
166  112 List<?> selected = param.getDefault() != null
167    ? (List<?>) param.getDefault()
168    : Collections.emptyList();
169  112 int i = 0;
170  112 var builder = BooleanOption.newBuilder();
171  112 setCommonProperties(param, builder);
172  112 for (String choice : param.getChoices())
173    {
174  2016 builder.setName(String.format("%s$%d", param.getId(), i++));
175  2016 builder.setLabel(choice);
176  2016 builder.setDefaultValue(selected.contains(choice));
177  2016 builder.setValue(value.contains(choice));
178  2016 builder.setReprValue(choice);
179  2016 options.add(builder.build());
180    }
181  112 return options;
182    }
183    else
184    {
185    /*
186    * Single value parameter means a single string with limited possible
187    * values can be used.
188    */
189  3249 var builder = StringParameter.newBuilder();
190  3249 setCommonProperties(param, builder);
191  3249 builder.setDefaultValue((String) param.getDefault());
192  3249 if (value.size() > 0)
193  0 builder.setValue(value.get(0));
194  3249 builder.setPossibleValues(param.getChoices());
195  3249 return List.of(builder.build());
196    }
197    }
198   
 
199  0 toggle private Option createOption(Parameter.FileParameter param, File value)
200    {
201  0 throw new NotImplementedError("file paramters are not implemented for slivka");
202    }
203   
 
204  0 toggle private Option createOption(Parameter param, Object value)
205    {
206  0 var builder = StringParameter.newBuilder();
207  0 setCommonProperties(param, builder);
208  0 if (param.getDefault() != null)
209  0 builder.setDefaultValue(param.getDefault().toString());
210  0 if (value != null)
211  0 builder.setValue(value.toString());
212  0 return builder.build();
213    }
214   
 
215  11547 toggle private void setCommonProperties(Parameter param, Option.Builder builder)
216    {
217  11547 builder.setName(param.getId());
218  11547 builder.setLabel(param.getName());
219  11547 builder.setDescription(param.getDescription());
220  11547 builder.setRequired(param.isRequired());
221  11547 try
222    {
223  11547 builder.setDetailsUrl(service.getUrl().toURL());
224    } catch (MalformedURLException e)
225    {
226  0 Console.warn("invalid service url " + service.getUrl(), e);
227    }
228    }
229    }