package org.jactr.tools.experiment.triggers; /* * default logging */ import java.util.ArrayList; import java.util.Collection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jactr.tools.experiment.IExperiment; import org.jactr.tools.experiment.actions.IAction; import org.jactr.tools.experiment.impl.IVariableContext; public class NamedTrigger implements ITrigger { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(NamedTrigger.class); static public final String NAME_ATTR = "name"; private IExperiment _experiment; private boolean _isArmed = false; private Collection<IAction> _actions = new ArrayList<IAction>(); private Collection<ITrigger> _triggers = new ArrayList<ITrigger>(); private String _name; public NamedTrigger(String name, IExperiment experiment) { _experiment = experiment; _name = _experiment.getVariableResolver().resolve(name, experiment.getVariableContext()).toString(); } public void add(IAction action) { _actions.add(action); } public void add(ITrigger trigger) { _triggers.add(trigger); } public void fire(IVariableContext context) { for(ITrigger trigger : _triggers) trigger.setArmed(true); for(IAction action : _actions) action.fire(context); } public String getName() { return _name; } public boolean isArmed() { return _isArmed; } public void setArmed(boolean arm) { if (arm) { if (isArmed()) return; _experiment.getTriggerManager().add(this); _isArmed = true; } else { _experiment.getTriggerManager().remove(this); _isArmed = false; } } }