package org.jactr.tools.experiment.actions;
/*
* default logging
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.model.IModel;
import org.jactr.tools.experiment.IExperiment;
import org.jactr.tools.experiment.impl.IVariableContext;
import org.jactr.tools.experiment.misc.ExperimentUtilities;
/**
* abstract action implementation meant primarily for actions that require access to
* the model that is invoking it.
*
*
* @author harrison
*
*/
public abstract class AbstractAction implements IAction
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(AbstractAction.class);
protected final IExperiment _experiment;
protected AbstractAction(IExperiment experiment)
{
_experiment = experiment;
}
/**
* called when the action fires
* @param model, may be null if the action wasn't called from a model
* @param experiment
* @param context
*/
abstract protected void fire(IModel model, IExperiment experiment, IVariableContext context);
public void fire(IVariableContext context)
{
IModel model = getModel(context); //via context
if(model==null)
model = ExperimentUtilities.getExperimentsModel(_experiment);
fire(model, _experiment, context);
}
public IModel getModel(IVariableContext context)
{
return (IModel) context.get("=model"); //set by jACT-R
}
}