package org.gambi.tapestry5.cli.services.internal.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.gambi.tapestry5.cli.data.CLIOption; import org.gambi.tapestry5.cli.services.internal.BridgeCLIOptionProvider; public class BridgeCLIOptionProviderImpl implements BridgeCLIOptionProvider { private List<String> inputs; // TODO: if values are stored inside options why do we need a MAP ? can we // just use a collection of CLIOptions? private Map<CLIOption, String> options; public BridgeCLIOptionProviderImpl() { inputs = new ArrayList<String>(); options = new HashMap<CLIOption, String>(); } public String valueForInput(int inputPosition) { try { return inputs.get(inputPosition); } catch (Throwable e) { e.printStackTrace(); return null; } } public String valueForOption(String optionName) { try { for (CLIOption cliOption : options.keySet()) { if (cliOption.getShortOpt().equals(optionName) || cliOption.getLongOpt().equals(optionName)) { return cliOption.getValue(); } } return null; } catch (Throwable e) { e.printStackTrace(); return null; } } public String[] valuesForOption(String optionName) { try { for (CLIOption cliOption : options.keySet()) { if (cliOption.getShortOpt().equals(optionName) || cliOption.getLongOpt().equals(optionName)) { return cliOption.getValues(); } } return null; } catch (Throwable e) { e.printStackTrace(); return null; } } public void add(Map<CLIOption, String> options) { this.options.putAll(options); } public void add(List<String> inputs) { this.inputs.addAll(inputs); } }