1 package jalview.ws.jws2;
3 import java.io.BufferedReader;
4 import java.io.IOException;
7 import java.util.ArrayList;
8 import java.util.Hashtable;
11 import compbio.metadata.Argument;
12 import compbio.metadata.Option;
13 import compbio.metadata.Parameter;
14 import compbio.metadata.Preset;
15 import compbio.metadata.PresetManager;
16 import compbio.metadata.RunnerConfig;
18 import jalview.ws.jws2.Jws2Discoverer.Jws2Instance;
19 import jalview.ws.jws2.dm.JabaOption;
20 import jalview.ws.jws2.dm.JabaParameter;
21 import jalview.ws.jws2.dm.JabaWsParamSet;
22 import jalview.ws.params.ArgumentI;
23 import jalview.ws.params.ParamDatastoreI;
24 import jalview.ws.params.WsParamSetI;
26 public class JabaParamStore implements ParamDatastoreI
29 Hashtable<String, JabaWsParamSet> editedParams = new Hashtable<String, JabaWsParamSet>();
31 private Jws2Instance service;
33 private RunnerConfig serviceOptions;
35 private Hashtable<String, JabaPreset> servicePresets;
37 public JabaParamStore(Jws2Instance service)
39 this.service = service;
40 serviceOptions = service.getRunnerConfig();
41 // TODO: discover all the user's locally sored presets for this service and populate the hash table
46 * store the given parameters in the user parameter set database.
51 * - setDescr.getText()
55 private void _storeUserPreset(String storeSetName, String descr,
56 List<Argument> jobParams)
58 // this is a simple hash store.
59 editedParams.put(storeSetName, new JabaWsParamSet(storeSetName, descr,
60 JabaParamStore.getJwsArgsfromJaba(jobParams)));
61 // writeParam("Saving " + storeSetName + ": ", jobParams);
64 private void writeParam(String nm, List<Argument> params)
66 for (Argument p : params)
68 System.out.println(nm + ":" + System.identityHashCode(p) + " Name: "
69 + p.getName() + " Value: " + p.getDefaultValue());
73 private JabaWsParamSet _getUserPreset(String setName)
75 JabaWsParamSet pset = editedParams.get(setName);
80 * remove the given user preset from the preset stash
84 private void _deleteUserPreset(String setName)
86 editedParams.remove(setName);
90 public List<WsParamSetI> getPresets()
92 List<WsParamSetI> prefs = new ArrayList();
93 if (servicePresets == null)
95 servicePresets = new Hashtable<String, JabaPreset>();
97 if ((prman = service.getPresets()) != null)
99 List pset = prman.getPresets();
102 for (Object pr : pset)
104 JabaPreset prset = new JabaPreset(service, (Preset) pr);
105 servicePresets.put(prset.getName(), prset);
110 for (JabaPreset pr : servicePresets.values())
114 for (WsParamSetI wspset : editedParams.values())
122 public WsParamSetI getPreset(String name)
124 for (WsParamSetI pr : getPresets())
126 if (pr.getName().equals(name))
134 public static List<ArgumentI> getJwsArgsfromJaba(List jabargs)
136 List<ArgumentI> rgs = new ArrayList<ArgumentI>();
137 for (Object rg : jabargs)
139 ArgumentI narg = (rg instanceof Parameter) ? new JabaParameter(
140 (Parameter) rg) : (rg instanceof Option) ? new JabaOption(
145 "Implementation Error: Cannot handle Jaba parameter object "
156 public static List getJabafromJwsArgs(List<ArgumentI> jwsargs)
158 List rgs = new ArrayList();
159 for (ArgumentI rg : jwsargs)
161 Argument narg = (rg instanceof JabaOption) ? ((JabaOption) rg)
166 "Implementation Error: Cannot handle Jaba parameter object "
178 public List<ArgumentI> getServiceParameters()
180 return getJwsArgsfromJaba(serviceOptions.getArguments());
184 public boolean presetExists(String name)
186 return (editedParams.containsKey(name) || servicePresets
191 public void deletePreset(String name)
193 if (editedParams.containsKey(name))
195 editedParams.remove(name);
198 if (servicePresets.containsKey(name))
201 "Implementation error: Attempt to delete a service preset!");
207 public void storePreset(String presetName, String text,
208 List<ArgumentI> jobParams)
210 JabaWsParamSet jps = new JabaWsParamSet(presetName, text, jobParams);
211 editedParams.put(jps.getName(), jps);
215 public boolean readParamSet(WsParamSetI wsp,
216 Reader reader) throws IOException
218 if (!(wsp instanceof JabaWsParamSet))
220 throw new Error("Implementation error: JabaWsParamSets can only be handled by JabaParamStore");
222 List<String> lines=new ArrayList<String>();
224 BufferedReader br = new BufferedReader(reader);
225 while ((line=br.readLine())!=null)
229 ((JabaWsParamSet) wsp).setjabaArguments(ParameterUtils.processParameters(lines, serviceOptions, " "));
234 public boolean writeParamSet(WsParamSetI wsp,
235 Writer writer) throws IOException
237 if (!(wsp instanceof JabaWsParamSet))
239 throw new Error("Implementation error: JabaWsParamSets can only be handled by JabaParamStore");
241 writer.write(ParameterUtils.writeParameterSet(((JabaWsParamSet)wsp).getjabaArguments(), " ")