package org.molgenis.generator;
import org.molgenis.compute.ComputeJob;
import org.molgenis.pheno.ObservationTarget;
import org.molgenis.protocol.Workflow;
import org.molgenis.util.Tuple;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;
/**
* Created by IntelliJ IDEA.
* User: georgebyelas
* Date: 05/04/2012
* Time: 09:45
* To change this template use File | Settings | File Templates.
*/
public interface JobGenerator
{
//remote back-ends
public static final String GRID = "grid";
public static final String CLUSTER = "cluster";
//configuration flags
public static final String OUTPUT_DIR = "outputdir";
public static final String BACK_END_DIR = "backenddir";
public static final String GENERATION_ID = "runid";
public static final String TEMPLATE_DIR = "templatedir";
//key words in templates for grid
public static final String LFN_NAME = "lfn_name";
public static final String INPUT = "input";
public static final String OUTPUT = "output";
public static final String EXE = "exe";
public static final String LOG = "log";
//key words in templates for cluster (other cluster key words are reused from ModelLoader)
public static final String JOB_ID = "jobname";
public static final String JOB_DEPENDENCIES = "depend";
public static final String DEPENDENCY_HEAD = " -W depend=afterok";
public static final String FLAG = "#FOREACH";
public static final String GRID_TEMP_DIR = "$TMPDIR";
public static final String GRID_LOCATION_PREFIX = "lfn://grid/";
public static final String SOURCE_SCRIPT = "source getdata.sh";
//key words in template for macros
public static final String MACRO_BACKEND = "backend";
public static final String MACRO_TYPE = "type";
public static final String MACRO_PATH = "path";
public static final String MACRO_NAME = "name";
public static final String MACRO_EXTENSIONS = "extensions";
Vector<ComputeJob> generateComputeJobsFoldedWorksheet(Workflow workflow, List<Tuple> worksheet, String backend);
Vector<ComputeJob> generateComputeJobsDB(Workflow workflow, List<ObservationTarget> worksheet, String backend);
boolean generateActualJobs(Vector<ComputeJob> computeJobs, String backend, Hashtable<String,String> config);
boolean generateActualJobsWithMacros(Vector<ComputeJob> computeJobs, String backend, Hashtable<String,String> config);
void setConfig(Hashtable<String,String> config);
void setWorksheet(List<Tuple> worksheet);
}