package net.sourceforge.seqware.pipeline.workflowV2.model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class Workflow {
private String workflowBundleDir;
private Collection<String> tests;
// may be better to use Map
private List<AbstractJob> jobs;
public Workflow() {
this.jobs = new ArrayList<>();
this.tests = new ArrayList<>();
}
/**
* get all jobs in current workflow
*
* @return
*/
public List<AbstractJob> getJobs() {
return jobs;
}
/**
* add job to the workflow
*
* @param job
*/
public void addJobs(AbstractJob job) {
this.jobs.add(job);
}
/**
*
* @return the workflowbundle diretory
*/
public String getWorkflowBundleDir() {
return workflowBundleDir;
}
/**
* set the workflowBundle directory
*
* @param workflowBundleDir
*/
public void setWorkflowBundleDir(String workflowBundleDir) {
this.workflowBundleDir = workflowBundleDir;
}
public Job createJavaSeqwareModuleJob(String algo, String cp, String module) {
AbstractJob job = new JavaSeqwareModuleJob(algo, cp, module);
this.jobs.add(job);
return job;
}
public Job createJavaJob(String algo, String cp, String mainclass) {
AbstractJob job = new JavaJob(algo, cp, mainclass);
this.jobs.add(job);
return job;
}
public Job createBashJob(String algo) {
AbstractJob job = new BashJob(algo);
this.jobs.add(job);
return job;
}
public JobBatch createJobBatch(String algo) {
JobBatch job = new JobBatch(algo);
this.jobs.add(job);
return job;
}
public Job createPerlJob(String algo, String script) {
AbstractJob job = new PerlJob(algo, "", script);
this.jobs.add(job);
return job;
}
/**
* add a test command for the workflow
*
* @param value
*/
public void addTest(String value) {
this.tests.add(value);
}
/**
* @return all test commands
*/
public Collection<String> getTests() {
return this.tests;
}
}