package org.jactr.tools.itr; /* * default logging */ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; import javolution.util.FastList; import org.antlr.runtime.tree.CommonTree; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class ParameterSetModifier implements IParameterSetModifier { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(ParameterSetModifier.class); private final List<IParameterModifier> _modifiers; private final List<String> _parameterValues; private String _parameterName; public ParameterSetModifier() { _parameterValues = new FastList<String>(); _modifiers = new FastList<IParameterModifier>(); } public void add(IParameterModifier modifier) { if (modifier.getParameterValues().size() != getParameterValues().size()) throw new IllegalArgumentException(modifier + " does not have the same number of values as container"); _modifiers.add(modifier); } public void remove(IParameterModifier modifier) { _modifiers.remove(modifier); } public String getParameterDisplayName() { return _parameterName; } public String getParameterName() { return _parameterName; } public List<String> getParameterValues() { return Collections.unmodifiableList(_parameterValues); } public void setParameter(CommonTree modelDescriptor, int parameterValueIndex) { if (parameterValueIndex >= _parameterValues.size()) { LOGGER.warn("Cannot set " + _parameterName + " value at index " + parameterValueIndex + " values:" + _parameterValues); return; } for (IParameterModifier modifier : _modifiers) modifier.setParameter(modelDescriptor, parameterValueIndex); } public Map<String, String> getNestedParameterValues(int parameterValueIndex) { Map<String, String> rtn = new TreeMap<String, String>(); for (IParameterModifier modifier : _modifiers) rtn.put(modifier.getParameterDisplayName(), modifier.getParameterValues() .get(parameterValueIndex)); return rtn; } public void setParameter(CommonTree modelDescriptor, String parameterValue) { int index = _parameterValues.indexOf(parameterValue); setParameter(modelDescriptor, index); } public String getParameter(String key) { return null; } public Collection<String> getPossibleParameters() { return null; } public Collection<String> getSetableParameters() { return null; } public void setParameter(String key, String value) { if (PARAMETER_NAME.equalsIgnoreCase(key)) _parameterName = value; else if (PARAMETER_VALUES.equalsIgnoreCase(key)) { String[] values = value.split(","); for (String v : values) { v = v.trim(); if (v.length() > 0) _parameterValues.add(v); } } } }