Clover icon

Coverage Report

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