/*
* Eoulsan development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public License version 2.1 or
* later and CeCILL-C. This should be distributed with the code.
* If you do not have a copy, see:
*
* http://www.gnu.org/licenses/lgpl-2.1.txt
* http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt
*
* Copyright for this code is held jointly by the Genomic platform
* of the Institut de Biologie de l'École normale supérieure and
* the individual authors. These should be listed in @author doc
* comments.
*
* For more information on the Eoulsan project and its aims,
* or to join the Eoulsan Google group, visit the home page
* at:
*
* http://outils.genomique.biologie.ens.fr/eoulsan
*
*/
package fr.ens.biologie.genomique.eoulsan.core.workflow;
import static com.google.common.base.Preconditions.checkNotNull;
import java.io.Serializable;
import java.util.logging.Logger;
import fr.ens.biologie.genomique.eoulsan.AbstractEoulsanRuntime;
import fr.ens.biologie.genomique.eoulsan.EoulsanLogger;
import fr.ens.biologie.genomique.eoulsan.EoulsanRuntime;
import fr.ens.biologie.genomique.eoulsan.Settings;
import fr.ens.biologie.genomique.eoulsan.core.Workflow;
import fr.ens.biologie.genomique.eoulsan.data.DataFile;
import fr.ens.biologie.genomique.eoulsan.util.SystemUtils;
/**
* This class define the context implementation.
* @since 1.0
* @author Laurent Jourdren
*/
public class WorkflowContext implements Serializable {
/** Serialization version UID. */
private static final long serialVersionUID = -260344001954382358L;
private final String jobId;
private final String host;
private DataFile designFile;
private DataFile workflowFile;
private DataFile jarFile;
private final String jobUUID;
private final String jobDescription;
private final String jobEnvironment;
private String commandName = "";
private String commandDescription = "";
private String commandAuthor = "";
private final AbstractWorkflow workflow;
private final long contextCreationTime;
//
// Getters
//
/**
* Get the local working directory.
* @return Returns the local working path
*/
public DataFile getLocalWorkingDirectory() {
return this.workflow.getLocalWorkingDirectory();
}
/**
* Get the local working directory.
* @return Returns the local working directory
*/
public DataFile getHadoopWorkingDirectory() {
return this.workflow.getHadoopWorkingDirectory();
}
/**
* Get the output directory.
* @return Returns the output directory
*/
public DataFile getOutputDirectory() {
return this.workflow.getOutputDirectory();
}
/**
* Get the job path.
* @return Returns the log Path
*/
public DataFile getJobDirectory() {
return this.workflow.getJobDirectory();
}
/**
* Get the task directory.
* @return Returns the task directory
*/
public DataFile getTaskDirectory() {
return this.workflow.getTaskDirectory();
}
/**
* Get the job id.
* @return the job id
*/
public String getJobId() {
return this.jobId;
}
/**
* Get the host of the job.
* @return a string with the host of the job
*/
public String getJobHost() {
return this.host;
}
/**
* Get the creation time of the context.
* @return the creation time of the context in milliseconds since epoch
* (1.1.1970)
*/
public long getContextCreationTime() {
return this.contextCreationTime;
}
/**
* Get the design file.
* @return the design file
*/
public DataFile getDesignFile() {
return this.designFile;
}
/**
* Get the workflow file.
* @return the workflow file
*/
public DataFile getWorkflowFile() {
return this.workflowFile;
}
/**
* Get the application jar file.
* @return Returns the jar file
*/
public DataFile getJarFile() {
return this.jarFile;
}
/**
* Get the UUID of the job.
* @return the job UUID
*/
public String getJobUUID() {
return this.jobUUID;
}
/**
* Get the job description.
* @return the job description
*/
public String getJobDescription() {
return this.jobDescription;
}
/**
* Get the job environment.
* @return the job environment
*/
public String getJobEnvironment() {
return this.jobEnvironment;
}
/**
* Get the command name.
* @return the command name
*/
public String getCommandName() {
return this.commandName;
}
/**
* Get command description.
* @return the command description
*/
public String getCommandDescription() {
return this.commandDescription;
}
/**
* Get the command author.
* @return the command author
*/
public String getCommandAuthor() {
return this.commandAuthor;
}
/**
* Get the workflow description.
* @return the workflow description
*/
public Workflow getWorkflow() {
return this.workflow;
}
//
// Setters
//
/**
* Set the design file.
* @param designFile The design file to set
*/
public void setDesignFile(final DataFile designFile) {
this.designFile = designFile;
}
/**
* Set the workflow file.
* @param workflowFile The workflow file to set
*/
public void setWorkflowFile(final DataFile workflowFile) {
this.workflowFile = workflowFile;
}
/**
* Set the jar file.
* @param jarFile The jar file to set
*/
public void setJarFile(final DataFile jarFile) {
this.jarFile = jarFile;
}
/**
* Set command name
* @param commandName the command name
*/
void setCommandName(final String commandName) {
this.commandName = commandName;
}
/**
* Set command description
* @param commandDescription the command name
*/
void setCommandDescription(final String commandDescription) {
this.commandDescription = commandDescription;
}
/**
* Set command author
* @param commandAuthor the command name
*/
void setCommandAuthor(final String commandAuthor) {
this.commandAuthor = commandAuthor;
}
//
// Other methods
//
/**
* Get EoulsanRuntime.
* @return the EoulsanRuntime
*/
public AbstractEoulsanRuntime getRuntime() {
return EoulsanRuntime.getRuntime();
}
/**
* Get Eoulsan settings.
* @return the Settings
*/
public Settings getSettings() {
return getRuntime().getSettings();
}
/**
* Get the logger.
* @return the logger
*/
public Logger getLogger() {
return EoulsanLogger.getLogger();
}
//
// Constructor
//
/**
* Constructor.
* @param arguments arguments object
*/
WorkflowContext(final ExecutorArguments arguments,
final AbstractWorkflow workflow) {
checkNotNull(arguments.getLocalWorkingPathname(),
"arguments cannot be null");
checkNotNull(workflow, "workflow cannot be null");
this.workflow = workflow;
this.jobId = arguments.getJobId();
this.jobUUID = arguments.getJobUUID();
this.contextCreationTime = arguments.getCreationTime();
this.host = SystemUtils.getHostName();
checkNotNull(arguments.getLocalWorkingPathname(),
"base path cannot be null");
checkNotNull(arguments.getWorkflowPathname(),
"parameter path cannot be null");
checkNotNull(arguments.getDesignPathname(), "design cannot be null");
checkNotNull(arguments.getOutputPathname(), "output path cannot be null");
checkNotNull(arguments.getJobPathname(), "log path cannot be null");
checkNotNull(arguments.getJobDescription(),
"job description cannot be null");
checkNotNull(arguments.getJobEnvironment(),
"job environment cannot be null");
this.workflowFile = new DataFile(arguments.getWorkflowPathname());
this.designFile = new DataFile(arguments.getDesignPathname());
this.jobDescription = arguments.getJobDescription();
this.jobEnvironment = arguments.getJobEnvironment();
}
}