Clover icon

Coverage Report

  1. Project Clover database Tue Mar 10 2026 14:58:44 GMT
  2. Package jalview.ws2.client.slivka

File SlivkaParamStoreFactory.java

 

Coverage histogram

../../../../img/srcFileCovDistChart0.png
0% 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.00%
 

Contributing tests

No tests hitting this source file were found.

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