/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.script.common.registry; import java.io.Writer; import java.util.Map; import javax.script.ScriptEngine; import de.rcenvironment.components.script.common.ScriptComponentHistoryDataItem; import de.rcenvironment.core.component.api.ComponentException; import de.rcenvironment.core.component.execution.api.ComponentContext; import de.rcenvironment.core.utils.scripting.ScriptLanguage; /** * Interface to provide a scripting language to be executed. * * @author Sascha Zur * @author Tobias Rodehutskors (cancel) */ public interface ScriptExecutor { /** * Prepares the executor when the component is started. * * @param componentContext current {@link ComponentContext} * @return true, if preparing was successful. * @throws ComponentException if preparing was not successful */ boolean prepareExecutor(ComponentContext componentContext) throws ComponentException; /** * This method is called each time before the runScript method. It is for preparing the next * run, i.e. copying files from the DataManagement. * * @param scriptLanguage : the chosen scripting language * @param userScript : the script to execute * @param historyDataItem {@link ComponentHistoryDataItem} of the script component * @throws ComponentException if run fails */ void prepareNewRun(ScriptLanguage scriptLanguage, String userScript, ScriptComponentHistoryDataItem historyDataItem) throws ComponentException; /** * Runs the script. * * @throws ComponentException if a run fails */ void runScript() throws ComponentException; /** * @return True, if the execution of the script can be canceled with a call of {@link ScriptExecutor#cancelScript()}; False otherwise. */ boolean isCancelable(); /** * Cancels the execution of the script. */ void cancelScript(); /** * Method called after runScript. * * @return true, if component is able to run another time, else false. * @throws ComponentException if outcput could not be read */ boolean postRun() throws ComponentException; /** * Prepares the streams for STDOUT and STDERR for the given ScriptEngine. */ void prepareOutputForRun(); /** * Deletes all temp files after the run. */ void deleteTempFiles(); /** * Reset method for nested loops. */ void reset(); /** * @param componentContext . */ void setComponentContext(ComponentContext componentContext); /** * * @param scriptEngine . */ void setScriptEngine(ScriptEngine scriptEngine); /** * @param historyDataItem . */ void setHistoryDataItem(ScriptComponentHistoryDataItem historyDataItem); /** * * @param stateMap . */ void setStateMap(Map<String, Object> stateMap); /** * @param stdoutWriter . */ void setStdoutWriter(Writer stdoutWriter); /** * * @param stderrWriter . */ void setStderrWriter(Writer stderrWriter); /** * * @param path . */ void setWorkingPath(String path); }