package org.jactr.tools.experiment;
import java.util.List;
import org.commonreality.time.IClock;
import org.jactr.tools.experiment.impl.IVariableContext;
import org.jactr.tools.experiment.impl.VariableResolver;
import org.jactr.tools.experiment.lock.LockManager;
import org.jactr.tools.experiment.trial.ITrial;
import org.jactr.tools.experiment.triggers.EndTrigger;
import org.jactr.tools.experiment.triggers.ITrigger;
import org.jactr.tools.experiment.triggers.NamedTriggerManager;
import org.jactr.tools.experiment.triggers.StartTrigger;
import org.w3c.dom.Document;
/*
* default logging
*/
/**
* experiment interface
* @author harrison
*
*/
public interface IExperiment
{
public double getStartTime();
public double getStopTime();
public double getTime();
/**
* configure the experiment from the xml doc
* @param document
*/
public void configure(Document document);
public void addTrial(ITrial trial);
public IVariableContext getVariableContext();
/**
* current trial
* @return
*/
public ITrial getTrial();
public List<ITrial> getTrials();
public void setNextTrial(ITrial trial);
public LockManager getLockManager();
public NamedTriggerManager getTriggerManager();
public VariableResolver getVariableResolver();
public IDataLogger getDataCollector();
public void setDataCollector(IDataLogger collector);
public void start();
/**
* request to stop
*/
public void stop();
public void setStartTrigger(StartTrigger trigger);
public void setEndTrigger(EndTrigger trigger);
public void addTrigger(ITrigger trigger);
public IClock getClock();
public void setClock(IClock clock);
}