Clover icon

Coverage Report

  1. Project Clover database Wed Dec 3 2025 17:03:17 GMT
  2. Package jalview.ws2.client.slivka

File SlivkaParamStoreFactory.java

 

Coverage histogram

../../../../img/srcFileCovDistChart8.png
21% 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 107 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  1494 toggle SlivkaParamStoreFactory(SlivkaService service, ParamManager manager)
36    {
37  1494 this.service = service;
38  1494 this.manager = manager;
39    }
40   
 
41  1494 toggle ParamDatastoreI createParamDatastore()
42    {
43  1494 URL url = null;
44  1494 try
45    {
46  1494 url = service.getUrl().toURL();
47    } catch (MalformedURLException e)
48    {
49  0 Console.warn("Invalid service url " + service.getUrl(), e);
50    }
51  1494 List<WsParamSetI> presets = new ArrayList<>(service.getPresets().size());
52  1494 for (var preset : service.getPresets())
53    {
54  0 presets.add(createPreset(preset));
55    }
56  1494 List<ArgumentI> arguments = createPresetArguments(Collections.emptyMap());
57  1494 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  1494 toggle List<ArgumentI> createPresetArguments(Map<String, Object> values)
72    {
73  1494 var args = new ArrayList<ArgumentI>();
74  1494 for (Parameter param : service.getParameters())
75    {
76  12887 if (param instanceof Parameter.IntegerParameter)
77    {
78  3004 args.add(createOption((Parameter.IntegerParameter) param,
79    (Integer) values.get(param.getId())));
80    }
81  9883 else if (param instanceof Parameter.DecimalParameter)
82    {
83  2110 args.add(createOption((Parameter.DecimalParameter) param,
84    (Double) values.get(param.getId())));
85    }
86  7773 else if (param instanceof Parameter.TextParameter)
87    {
88  1 args.add(createOption((Parameter.TextParameter) param,
89    (String) values.get(param.getId())));
90    }
91  7772 else if (param instanceof Parameter.FlagParameter)
92    {
93  2998 args.add(createOption((Parameter.FlagParameter) param,
94    (Boolean) values.get(param.getId())));
95    }
96  4774 else if (param instanceof Parameter.ChoiceParameter)
97    {
98  3331 Object ovalue = values.get(param.getId());
99  3331 List<String> lvalue = null;
100  3331 if (param.isArray())
101  111 lvalue = (List<String>) ovalue;
102  3220 else if (ovalue != null)
103  0 lvalue = List.of((String) ovalue);
104  3331 args.addAll(createChoiceOptions((Parameter.ChoiceParameter) param, lvalue));
105    }
106  1443 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  1494 return args;
116    }
117   
 
118  3004 toggle private Option createOption(Parameter.IntegerParameter param, Integer value)
119    {
120  3004 var builder = IntegerParameter.newBuilder();
121  3004 setCommonProperties(param, builder);
122  3004 builder.setDefaultValue((Integer) param.getDefault());
123  3004 builder.setValue(value);
124  3004 builder.setBounds(param.getMin(), param.getMax());
125  3004 return builder.build();
126    }
127   
 
128  2110 toggle private Option createOption(Parameter.DecimalParameter param, Double value)
129    {
130  2110 var builder = DoubleParameter.newBuilder();
131  2110 setCommonProperties(param, builder);
132  2110 builder.setDefaultValue((Double) param.getDefault());
133  2110 builder.setValue(value);
134  2110 builder.setBounds(param.getMin(), param.getMax());
135  2110 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  2998 toggle private Option createOption(Parameter.FlagParameter param, Boolean value)
148    {
149  2998 var builder = BooleanOption.newBuilder();
150  2998 setCommonProperties(param, builder);
151  2998 builder.setDefaultValue((Boolean) param.getDefault());
152  2998 builder.setValue(value);
153  2998 return builder.build();
154    }
155   
 
156  3331 toggle private List<Option> createChoiceOptions(Parameter.ChoiceParameter param, List<String> value)
157    {
158  3331 value = value != null ? value : Collections.emptyList();
159  3331 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  111 List<Option> options = new ArrayList<>();
166  111 List<?> selected = param.getDefault() != null
167    ? (List<?>) param.getDefault()
168    : Collections.emptyList();
169  111 int i = 0;
170  111 var builder = BooleanOption.newBuilder();
171  111 setCommonProperties(param, builder);
172  111 for (String choice : param.getChoices())
173    {
174  1998 builder.setName(String.format("%s$%d", param.getId(), i++));
175  1998 builder.setLabel(choice);
176  1998 builder.setDefaultValue(selected.contains(choice));
177  1998 builder.setValue(value.contains(choice));
178  1998 builder.setReprValue(choice);
179  1998 options.add(builder.build());
180    }
181  111 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  3220 var builder = StringParameter.newBuilder();
190  3220 setCommonProperties(param, builder);
191  3220 builder.setDefaultValue((String) param.getDefault());
192  3220 if (value.size() > 0)
193  0 builder.setValue(value.get(0));
194  3220 builder.setPossibleValues(param.getChoices());
195  3220 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  11444 toggle private void setCommonProperties(Parameter param, Option.Builder builder)
216    {
217  11444 builder.setName(param.getId());
218  11444 builder.setLabel(param.getName());
219  11444 builder.setDescription(param.getDescription());
220  11444 builder.setRequired(param.isRequired());
221  11444 try
222    {
223  11444 builder.setDetailsUrl(service.getUrl().toURL());
224    } catch (MalformedURLException e)
225    {
226  0 Console.warn("invalid service url " + service.getUrl(), e);
227    }
228    }
229    }