package net.sourceforge.seqware.pipeline.workflowV2.model;
import java.util.Collection;
import java.util.Map;
public interface Job {
/**
* add a job specific file
*
* @param file
*/
public void addFile(SqwFile file);
/**
* set the job command
*
* @param cmd
* @return
*/
public Command setCommand(String cmd);
/**
*
* @return the job command object
*/
public Command getCommand();
/**
* add job's parent
*
* @param parent
* @return
*/
public Job addParent(Job parent);
/**
*
* @return job's parents
*/
public Collection<Job> getParents();
/**
* set max memory
*
* @param mem
* @return
*/
public Job setMaxMemory(String mem);
/**
*
* @return the max memory
*/
public String getMaxMemory();
/**
* set the max thread number
*
* @param count
* @return
*/
public Job setThreads(int count);
/**
*
* @return the max thread number
*/
public int getThreads();
/**
* set the queue
*
* @param queue
* @return
*/
public Job setQueue(String queue);
/**
*
* @return queue
*/
public String getQueue();
/**
* job specific metadata is not supported yet
*
* @param metadata
*/
public void setHasMetadataWriteback(boolean metadata);
/**
* job specific metadata is not supported yet
*
* @return
*/
public boolean hasMetadataWriteback();
/**
* set parent accessiosns for the job
*
* @param parentAccessions
*/
public void setParentAccessions(Collection<String> parentAccessions);
/**
* Whether this job should run locally instead of out on a cluster.
*
* @return true if it will run locally
*/
public boolean isLocal();
/**
* Sets this job to run locally.
*/
public void setLocal();
/**
* Sets whether this job should run locally.
*
* @param runLocal
* true to run locally, false otherwise
*/
public void setLocal(boolean runLocal);
/**
* Set arbitrary key-value annotations on jobs.
*
* @return
*/
public Map<String, String> getAnnotations();
}