package org.jactr.tools.experiment.impl; /* * default logging */ import java.util.Map; import java.util.TreeMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class VariableContext implements IVariableContext { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(VariableContext.class); private final IVariableContext _parent; private final Map<String, Object> _values; public VariableContext() { this(null); } public VariableContext(IVariableContext parent) { _parent = parent; _values = new TreeMap<String, Object>(); } public Object get(String variableName) { if (_values.containsKey(variableName)) return _values.get(variableName); else if (_parent != null) return _parent.get(variableName); return null; } public void getAll(Map<String, Object> container) { container.putAll(_values); if (_parent != null) _parent.getAll(container); } public IVariableContext getParent() { return _parent; } public boolean isSet(String variableName) { if (_values.containsKey(variableName)) return true; if (_parent != null) return _parent.isSet(variableName); return false; } public void set(String variableName, Object value) { _values.put(variableName, value); } public IVariableContext duplicate() { VariableContext duplicate = new VariableContext(); getAll(duplicate._values); return duplicate; } }