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.Collections;
\r
7 import java.util.List;
\r
9 import compbio.data.msa.Metadata;
\r
10 import compbio.metadata.Limit;
\r
11 import compbio.metadata.LimitsManager;
\r
12 import compbio.metadata.Option;
\r
13 import compbio.metadata.Preset;
\r
14 import compbio.metadata.PresetManager;
\r
15 import compbio.metadata.RunnerConfig;
\r
16 import compbio.metadata.WrongParameterException;
\r
18 public class MetadataHelper {
\r
21 * Returns a list of options supported by web service
\r
27 * @return List of options supported by a web service
\r
29 static <T> List<Option<T>> getParametersList(Metadata<T> msaws) {
\r
30 assert msaws != null;
\r
31 RunnerConfig<T> config = msaws.getRunnerOptions();
\r
32 if (config == null) {
\r
33 return Collections.emptyList();
\r
35 return config.getArguments();
\r
39 * Returns an objects from which the list of presets supported by web
\r
40 * service <T> can be obtained
\r
46 * @return PresetManager, object which operates on presets
\r
48 static <T> PresetManager<T> getPresetList(Metadata<T> msaws) {
\r
49 assert msaws != null;
\r
50 PresetManager<T> presetman = msaws.getPresets();
\r
55 * Returns a list of limits supported by web service Each limit correspond
\r
56 * to a particular preset.
\r
62 * @return List of limits supported by a web service
\r
64 static <T> List<Limit<T>> getLimits(Metadata<T> msaws) {
\r
65 assert msaws != null;
\r
66 LimitsManager<T> lmanger = msaws.getLimits();
\r
68 return lmanger != null ? lmanger.getLimits() : null;
\r
72 * Returns {@code Preset} by its name
\r
78 * @return Return a Preset by its optionName
\r
80 static <T> Preset<T> getPreset(Metadata<T> msaws, String presetName) {
\r
81 assert presetName != null;
\r
82 PresetManager<T> presets = MetadataHelper.getPresetList(msaws);
\r
83 if (presets == null) {
\r
85 .println("No presets are supported by the service! Ignoring -r directive!");
\r
88 Preset<T> pre = presets.getPresetByName(presetName);
\r
90 System.out.println("Cannot find preset: " + presetName
\r
91 + " WARN: ignoring -r directive!");
\r
97 * Converts options supplied via parameters file into {@code Option} objects
\r
103 * @return List of Options of type T
\r
105 static <T> List<Option<T>> processParameters(List<String> params,
\r
106 RunnerConfig<T> options) {
\r
107 List<Option<T>> chosenOptions = new ArrayList<Option<T>>();
\r
108 for (String param : params) {
\r
109 String oname = null;
\r
110 if (isParameter(param)) {
\r
111 oname = getParamName(param);
\r
115 Option<T> o = options.getArgumentByOptionName(oname);
\r
117 System.out.println("WARN ignoring unsuppoted parameter: "
\r
121 if (isParameter(param)) {
\r
123 o.setValue(getParamValue(param));
\r
124 } catch (WrongParameterException e) {
\r
126 .println("Problem setting value for the parameter: "
\r
128 e.printStackTrace();
\r
131 chosenOptions.add(o);
\r
133 return chosenOptions;
\r
136 static String getParamName(String fullName) {
\r
137 assert isParameter(fullName);
\r
138 return fullName.substring(0, fullName.indexOf(pseparator));
\r
141 static String getParamValue(String fullName) {
\r
142 assert isParameter(fullName);
\r
143 return fullName.substring(fullName.indexOf(pseparator) + 1);
\r
146 static boolean isParameter(String param) {
\r
147 return param.contains(pseparator);
\r