1 package compbio.ws.client;
\r
3 import static compbio.ws.client.Constraints.pseparator;
\r
5 import java.util.ArrayList;
\r
6 import java.util.List;
\r
8 import compbio.data.msa.Metadata;
\r
9 import compbio.metadata.Limit;
\r
10 import compbio.metadata.LimitsManager;
\r
11 import compbio.metadata.Option;
\r
12 import compbio.metadata.Preset;
\r
13 import compbio.metadata.PresetManager;
\r
14 import compbio.metadata.RunnerConfig;
\r
15 import compbio.metadata.WrongParameterException;
\r
17 public class MetadataHelper {
\r
20 * Returns a list of options supported by web service
\r
26 * @return List of options supported by a web service
\r
28 static <T> List<Option<T>> getParametersList(Metadata<T> msaws) {
\r
29 assert msaws != null;
\r
30 return msaws.getRunnerOptions().getArguments();
\r
34 * Returns an objects from which the list of presets supported by web
\r
35 * service <T> can be obtained
\r
41 * @return PresetManager, object which operates on presets
\r
43 static <T> PresetManager<T> getPresetList(Metadata<T> msaws) {
\r
44 assert msaws != null;
\r
45 PresetManager<T> presetman = msaws.getPresets();
\r
50 * Returns a list of limits supported by web service Each limit correspond
\r
51 * to a particular preset.
\r
57 * @return List of limits supported by a web service
\r
59 static <T> List<Limit<T>> getLimits(Metadata<T> msaws) {
\r
60 assert msaws != null;
\r
61 LimitsManager<T> lmanger = msaws.getLimits();
\r
63 return lmanger != null ? lmanger.getLimits() : null;
\r
67 * Returns {@code Preset} by its name
\r
73 * @return Return a Preset by its optionName
\r
75 static <T> Preset<T> getPreset(Metadata<T> msaws, String presetName) {
\r
76 assert presetName != null;
\r
77 PresetManager<T> presets = MetadataHelper.getPresetList(msaws);
\r
78 if (presets == null) {
\r
80 .println("No presets are supported by the service! Ignoring -r directive!");
\r
83 Preset<T> pre = presets.getPresetByName(presetName);
\r
85 System.out.println("Cannot find preset: " + presetName
\r
86 + " WARN: ignoring -r directive!");
\r
92 * Converts options supplied via parameters file into {@code Option} objects
\r
98 * @return List of Options of type T
\r
100 static <T> List<Option<T>> processParameters(List<String> params,
\r
101 RunnerConfig<T> options) {
\r
102 List<Option<T>> chosenOptions = new ArrayList<Option<T>>();
\r
103 for (String param : params) {
\r
104 String oname = null;
\r
105 if (isParameter(param)) {
\r
106 oname = getParamName(param);
\r
110 Option<T> o = options.getArgumentByOptionName(oname);
\r
112 System.out.println("WARN ignoring unsuppoted parameter: "
\r
116 if (isParameter(param)) {
\r
118 o.setValue(getParamValue(param));
\r
119 } catch (WrongParameterException e) {
\r
121 .println("Problem setting value for the parameter: "
\r
123 e.printStackTrace();
\r
126 chosenOptions.add(o);
\r
128 return chosenOptions;
\r
131 static String getParamName(String fullName) {
\r
132 assert isParameter(fullName);
\r
133 return fullName.substring(0, fullName.indexOf(pseparator));
\r
136 static String getParamValue(String fullName) {
\r
137 assert isParameter(fullName);
\r
138 return fullName.substring(fullName.indexOf(pseparator) + 1);
\r
141 static boolean isParameter(String param) {
\r
142 return param.contains(pseparator);
\r