package eu.dnetlib.contract.runner;

import java.util.List;

import org.apache.log4j.Logger;

import eu.dnetlib.contract.ctx.GlobalContractContext;


/**
 * Complex runnable class, encapsulates multiple {@link IRunnable} classes.
 * @author mhorst
 *
 */
public class ComplexRunnable implements IRunnable {
	
	public static final Logger log = Logger.getLogger(ComplexRunnable.class);
	
	/**
	 * List of {@link IRunnable} objects.
	 */
	private List<IRunnable> runnables;

	/* (non-Javadoc)
	 * @see eu.dnetlib.contract.runner.IRunnable#run(eu.dnetlib.contract.ctx.GlobalContractContext)
	 */
	public void run(GlobalContractContext context) throws ContractTestRunnerException {
		if (runnables==null) {
			log.error("Couldn't execute run() on IRunnable classes: null runnables!");
			return;
		} else {
			for (IRunnable runnable : runnables) {
				runnable.run(context);
			}
		}
	}

	/**
	 * Returns list of {@link IRunnable} objects.
	 * @return list of {@link IRunnable} objects
	 */
	public List<IRunnable> getRunnables() {
		return runnables;
	}

	/**
	 * Sets list of {@link IRunnable} objects.
	 * @param runnables
	 */
	public void setRunnables(List<IRunnable> runnables) {
		this.runnables = runnables;
	}

}
