/*
 * This file is part of the DITA Open Toolkit project hosted on
 * Sourceforge.net. See the accompanying license.txt file for 
 * applicable licenses.
 */

/*
 * (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved.
 */
package org.dita.dost.module;

import org.dita.dost.exception.DITAOTException;
import org.dita.dost.log.DITAOTLogger;
import org.dita.dost.pipeline.AbstractPipelineInput;
import org.dita.dost.pipeline.AbstractPipelineOutput;

/**
 * Abstract class for Modules which contains the method that every module class
 * should implement.
 * 
 * @author Lian, Li
 * 
 */
public interface AbstractPipelineModule {

	/**
	 * Start the process of this module with the input.
	 * 
	 * <p>{@link #setLogger(DITAOTLogger)} must be called before calling this method.</p>
	 * 
	 * @param input input
	 * @return output
	 * @author Lian, Li
	 * @throws DITAOTException DITAOTException
	 */
	AbstractPipelineOutput execute(AbstractPipelineInput input)
			throws DITAOTException;

	/**
	 * Set logger for module.
	 * 
	 * @param logger logger to use for log message
	 */
	public void setLogger(DITAOTLogger logger);
	
}
