package fr.ens.biologie.genomique.eoulsan.util.r;
import java.io.IOException;
import fr.ens.biologie.genomique.eoulsan.data.DataFile;
/**
* This interface define how to prepare, launch and retrieve data of a R
* analysis.
* @author Laurent Jourdren
* @since 2.0
*/
public interface RExecutor {
/**
* Get the name of the RExecutor.
* @return the name of the RExecutor
*/
String getName();
/**
* Open the connection.
* @throws IOException if an error occurs while opening the connection
*/
void openConnection() throws IOException;
/**
* Close the connection.
* @throws IOException if an error occurs while closing the connection
*/
void closeConnection() throws IOException;
/**
* Put a file.
* @param inputFile the file to put
* @param outputFilename the output filename
* @throws IOException if an exception occurs while putting a file
*/
void putInputFile(DataFile inputFile, String outputFilename)
throws IOException;
/**
* Write a file.
* @param content the content of the file
* @param outputFilename the output filename
* @throws IOException if an exception occurs while writing a file
*/
void writerFile(String content, String outputFilename) throws IOException;
/**
* Execute a R script.
* @param rScript the source of the script to execute
* @param sweave true if the script is a Sweave script
* @param sweaveOutput Sweave output file
* @param saveRscript true to keep the R script
* @param description description of the R script
* @param workflowOutputDir workflow output directory
* @param scriptArguments script arguments
* @throws IOException if an error occurs while executing the script
*/
void executeRScript(String rScript, boolean sweave, String sweaveOutput,
boolean saveRscript, String description, DataFile workflowOutputDir, String... scriptArguments)
throws IOException;
/**
* Remove input files.
* @throws IOException if an error occurs while removing the files
*/
void removeInputFiles() throws IOException;
/**
* Get the output files of the analysis
* @throws IOException if an error occurs while getting the output files
*/
void getOutputFiles() throws IOException;
}