edu.isi.pegasus.planner.classes

## Class Job

- java.lang.Object
- - edu.isi.pegasus.planner.classes.Data
  - - edu.isi.pegasus.planner.classes.Job

All Implemented Interfaces:
  GraphNodeContent, java.lang.Cloneable

Direct Known Subclasses:
  AggregatedJob, DAGJob, DAXJob, TransferJob

    public class Job
    extends Data
    implements GraphNodeContent

The object of this class holds the information to generate a submit file about one particular job making the Dag.

Version:
  $Revision$
Author:
  Karan Vahi, Gaurang Mehta

### Field Summary

Fields
`static int` `CHMOD_JOB` Denotes a chmod job that sets the xbit on the remote end.
`static int` `CLEANUP_JOB` Denotes a cleanup job, that removes the files that from the remote working directories of the remote sites.
`static int` `COMPUTE_JOB` Denotes a compute job.
`java.lang.String` `condorUniverse` The universe in which the job has to be executed.
`Condor` `condorVariables` For Condor Namespace.
`static int` `CREATE_DIR_JOB` Denotes a job that creates directories at the remote pools.
`static int` `DAG_JOB` Denotes a chmod job that sets the xbit on the remote end.
`Dagman` `dagmanVariables` The DAGMAN namespace profile variable holding the dagman profiles.
`static int` `DAX_JOB` Denotes a chmod job that sets the xbit on the remote end.
`private static java.lang.String` `DELIMITER` The delimiter that has to be used to combine the name for the staged executable.
`java.lang.String` `dvName` The name of the derivation in Chimera that generated the job.
`java.lang.String` `dvNamespace` The namespace to which the derivation is bound.
`java.lang.String` `dvVersion` The version of the derivation.
`ENV` `envVariables` To accomodate the environment variables which might needed to be set.
`java.lang.String` `executable` The path of the executable on the machine at which the job is executed.
`java.lang.String` `executionPool` The pool on which this job has been decided to be executed by the Interpool Engine.
`Globus` `globusRSL` The namespace object containing the globus rsl attributes which the user specifies in the dax, or the pool file or the properties file.
`java.lang.String` `globusScheduler` The globus Scheduler for the job.
`Hints` `hints` To accomodate all the hints that maybe passed through the DAX.
`java.util.Set` `inputFiles` Contains the input files for the submit file.
`static int` `INTER_POOL_JOB` Denotes a job that transfers the output of a compute node to the site where the child compute node is to be generated.
`int` `jobClass` The type of the job.
`java.lang.String` `jobID` Identifies of which Pegasus Super Node is a job associated with.
`java.lang.String` `jobName` The name of the job.
`int` `level` Identifies the level of the job in the dax.
`java.lang.String` `logicalId` The logical id of the job as referred to in the dax.
`java.lang.String` `logicalName` The logical name of the transformation which is executed as a part of this job.
`private java.util.Map<java.lang.String,java.util.Set<CredentialHandler.TYPE>>` `mCredentialsType` Set of credential types required by a job to execute remotely.
`private java.lang.String` `mDirectory` The directory in which the job should run.
`private boolean` `mJobExecutablesStaged` Boolean indicating whether the job executables were staged for it or not.
`private Notifications` `mNotifications` All the notifications associated with the job
`private double` `mRuntime` The expected runtime for a job.
`private java.lang.String` `mStagingSite` The staging site associated with the job
`private CredentialHandler.TYPE` `mSubmissionCredential` The credential to use for job submission if required.
`java.lang.String` `namespace` The namespace to which the transformation is bound.
`java.util.Set` `outputFiles` Contains the output files for the submit file.
`static int` `REPLICA_REG_JOB` Denotes a job that registers in the replica mechanism the materialized files.
`static int` `STAGE_IN_JOB` Denotea a job that is used to stage in the input files for a compute job.
`static int` `STAGE_IN_WORKER_PACKAGE_JOB` Denotes a job that stages the worker package.
`static int` `STAGE_OUT_JOB` Denotes a job that transfers the date generated by a compute job to the output pool specified by the user.
`java.lang.String` `stdErr` File which contains standard error.
`java.lang.String` `stdIn` File which contains stdin (keyboard input).
`java.lang.String` `stdOut` File which contains stdout.
`java.lang.String` `strargs` The arguements for the job.
`static int` `UNASSIGNED_JOB` Denotes a job that does not fall into the other categories.
`Pegasus` `vdsNS` The Pegasus namespace variable.
`java.lang.String` `version` The version of the transformation.

### Fields inherited from class edu.isi.pegasus.planner.classes.Data

`mLogger, mLogMsg`

### Constructor Summary

Constructors
Constructor and Description
`Job()` Intialises the member variables.
`Job(Job job)` Overloaded constructor.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `addCredentialType(java.lang.String site, CredentialHandler.TYPE type)` Adds a type of credential that will be required by a job.
`void` `addCredentialType(java.lang.String site, java.lang.String url)` Looks at a URL to determine whether a credential should be associated with a job or not.
`void` `addInputFile(PegasusFile file)` Adds an input file to the underlying collection of input files associated with the job.
`void` `addNotification(Invoke invoke)` Adds a Invoke object correpsonding to a notification.
`void` `addNotifications(Notifications invokes)` Adds all the notifications passed to the underlying container.
`void` `addNotifications(TransformationCatalogEntry entry)` Adds all the notifications specfied in the TransformationCatalogEntry to the underlying job notifications.
`void` `addOutputFile(PegasusFile file)` Adds an output file to the underlying collection of output files associated with the job.
`void` `addProfile(Profile p)` Adds a profile to the job object
`private void` `append(java.lang.StringBuffer sb, java.lang.String key, java.lang.Object value, java.lang.String newLine)` Appends a key value mapping to the StringBuffer.
`java.lang.Object` `clone()` Returns a new copy of the Object.
`private static java.lang.String` `combine(java.lang.String namespace, java.lang.String name, java.lang.String version)` Combines the three components together into a single string as namespace-name-version.
`double` `computeRuntime()` Returns the runtime associated with the job.
`boolean` `equals(java.lang.Object obj)` Checks if an object is similar to the one referred to by this class.
`java.lang.String` `getArguments()` Returns the argument string with which the job has to be invoked.
`java.lang.String` `getCompleteDVName()` Constructs the fully qualified name of the corresponding derivation used to generate this job in Chimera including the namespace and version.
`java.lang.String` `getCompleteTCName()` Constructs the fully qualified name of a transformation with which to query the TC, including the namespace and version.
`java.util.Map<java.lang.String,java.util.Set<CredentialHandler.TYPE>>` `getCredentialTypes()` Returns the various credential types required by a job indexed by a site from which to pick up the credential
`java.lang.String` `getDAXID()` Returns the DAX ID for the job if it appeared in the DAX, else null
`java.lang.String` `getDirectory()` Returns the directory where the job runs.
`protected java.lang.String` `getDOTColor()` Returns the color with which DOT should color the node representing the job.
`java.lang.String` `getDVName()` Returns the name of the underlying derivation.
`java.lang.String` `getDVNamespace()` Returns the namespace of the underlying derivation.
`java.lang.String` `getDVVersion()` Returns the version of the underlying derivation.
`GridGateway.JOB_TYPE` `getGridGatewayJobType()` Returns the corresponding grid gateway job type
`java.lang.String` `getID()` Returns the ID associated with the job.
`java.util.Set<PegasusFile>` `getInputFiles()` Returns the set of input files associated with the job.
`java.lang.String` `getJobManager()` Returnss the remote jobmanager on which the job has to run.
`int` `getJobType()` Returns the type of the job.
`java.lang.String` `getJobTypeDescription()` Gets the textual description of the type associated with the job.
`java.lang.String` `getJobTypeDescription(int type)` Gets the textual description of the type that can be associated with a job.
`int` `getLevel()` Returns the level associated with the job.
`java.lang.String` `getLogicalID()` Returns the logical id of the job.
`java.lang.String` `getName()` Returns the name of the job.
`Notifications` `getNotifications()` Returns all the notifications associated with the job.
`java.util.Collection<Invoke>` `getNotifications(Invoke.WHEN when)` Returns a collection of all the notifications that need to be done for a particular condition
`java.util.Set<PegasusFile>` `getOutputFiles()` Returns the set of output files associated with the job.
`java.lang.String` `getPreScriptArguments()` Returns the arguments to the prescript for the job if set.
`java.lang.String` `getPreScriptPath()` Returns the path to the prescript for the job if set.
`java.lang.String` `getRemoteExecutable()` Returns the path of the underlying executable on the remote grid site.
`double` `getRuntime()` Returns the expected runtime for the job that is set using the setRuntime method.
`java.lang.String` `getSiteHandle()` Returns the handle of the site where the job is scheduled.
`java.lang.String` `getStagedExecutableBaseName()` Returns the basename for the staged executable corresponding to the job.
`static java.lang.String` `getStagedExecutableBaseName(java.lang.String txNamespace, java.lang.String txName, java.lang.String txVersion)` Returns the basename for the staged executable corresponding to the job.
`java.lang.String` `getStagingSiteHandle()` Returns the staging site.
`java.lang.String` `getStdErr()` Returns the file to which the stderr of the job is written to.
`java.lang.String` `getStdIn()` Returns the file from which the stdin is picked up.
`java.lang.String` `getStdOut()` Returns the file to which the stdout of the job is written to.
`CredentialHandler.TYPE` `getSubmissionCredential()` Sets the credential to use for job submission.
`java.lang.String` `getTXName()` Returns the name of the underlying transformation.
`java.lang.String` `getTXNamespace()` Returns the namespace of the underlying transformation.
`java.lang.String` `getTXVersion()` Returns the version of the underlying transformation.
`java.lang.String` `getUniverse()` Returns the universe associated with the job.
`java.lang.String` `getVDSSuperNode()` Returns the name of the compute job of Pegasus supernode containing this job.
`boolean` `isMPIJob()` Returns a boolean value denoting whether the job is MPI or not.
`private static GridGateway.JOB_TYPE` `jobType2GridGatewayJobType(int type)` Returns an appropriate grid gateway job type corresponding to a job type
`void` `mergeProfiles(Job job)` Merges profiles from another job to this job in a controlled fashion.
`boolean` `requiresCredentials()` A boolean method indicating whether credentials are associated with the job
`void` `resetCredentialTypes()` Resets the credential types required by a job.
`void` `resetNotifications()` Resets the notifications associated with the job
`void` `resetProfiles()` Resets all the profiles associated with the job.
`boolean` `runInWorkDirectory()` Returns whether a job should be run in the work directory or not.
`void` `setArguments(java.lang.String arguments)` Sets the argument string with which the job has to be invoked.
`void` `setDerivation(java.lang.String ns, java.lang.String name, java.lang.String vs)` Sets the various attributes of underlying derivation.
`void` `setDirectory(java.lang.String directory)` Setter method to set the name of the job.
`void` `setDVName(java.lang.String name)` Sets the derivation name of the underlying derivation.
`void` `setDVNamespace(java.lang.String ns)` Sets the derivation namespace to be associated with the job.
`void` `setDVVersion(java.lang.String vs)` Sets the version of the underlying derivation.
`void` `setExecutableStagingForJob(boolean value)` Sets the executable staging flag in the job to the value passed.
`void` `setInputFiles(java.util.Set<PegasusFile> ipFiles)` Sets the input files associated with the job.
`void` `setJobManager(java.lang.String jobmanager)` Sets the remote jobmanager on which the job has to run.
`void` `setJobType(int type)` Sets the type of the job.
`void` `setLevel(int value)` Sets the level for the job.
`void` `setLogicalID(java.lang.String id)` Setter method to set the logical id of the job.
`void` `setName(java.lang.String name)` Setter method to set the name of the job.
`void` `setOutputFiles(java.util.Set<PegasusFile> opFiles)` Sets the output files associated with the job.
`void` `setPreScript(java.lang.String path)` It sets the prescript for the job.
`void` `setPreScript(java.lang.String path, java.lang.String arguments)` It sets the prescript for the job.
`void` `setRemoteExecutable(java.lang.String path)` Sets the path to the executable on the remote grid site.
`void` `setRuntime(double runtime)` Sets the expected runtime for the job.
`void` `setRuntime(java.lang.String runtime)` Sets the expected runtime for the job.
`void` `setSiteHandle(java.lang.String site)` Sets the site handle of the site, where teh job is to be executed
`void` `setStagingSiteHandle(java.lang.String site)` Sets the staging site.
`void` `setStdErr(java.lang.String fileName)` Sets the file to which the stderr of the job needs to be written to at the remote grid site.
`void` `setStdIn(java.lang.String fileName)` Sets the file to from which to pick up the stdin for the job.
`void` `setStdOut(java.lang.String fileName)` Sets the file to which the stdout of the job needs to be written to at the remote grid site.
`void` `setSubmissionCredential(CredentialHandler.TYPE cred)` Sets the credential to use for job submission.
`void` `setTransformation(java.lang.String ns, java.lang.String name, java.lang.String vs)` Sets the various attributes of underlying transformation.
`void` `setTXName(java.lang.String name)` Sets the transformation name of the underlying transformation.
`void` `setTXNamespace(java.lang.String ns)` Sets the transformation namespace to be associated with the job.
`void` `setTXVersion(java.lang.String vs)` Sets the version of the underlying transformation.
`void` `setTypeRecursive()` Sets the job to be recursive.
`void` `setUniverse(java.lang.String universe)` Set the universe associated with the job.
`void` `setVDSSuperNode(java.lang.String name)` Setter method to the name of the compute job of Pegasus supernode containing this job.
`java.lang.String` `toDOT()` Returns the DOT description of the object.
`void` `toDOT(java.io.Writer stream, java.lang.String indent)` Returns the DOT description of the object.
`java.lang.String` `toString()` Returns a textual description of the object.
`static boolean` `typeInRange(int type)` Returns whether the job type value for the job is in range or not.
`boolean` `typeRecursive()` Returns whether the job is recursive or not.
`void` `updateProfiles(java.util.List profiles)` Updates all the profile namespaces with the information specified in list of profile objects passed.
`void` `updateProfiles(PegasusProperties properties)` Updates all the profile namespaces with the information specified by the user in the properties file, that apply to this job.
`void` `updateProfiles(Profiles profiles)` Updates all the profile namespaces with the information specified in list of profile objects passed.
`void` `updateProfiles(TransformationCatalogEntry entry)` Updates all the profile namespaces with the information associated in the transformation catalog for this job.
`boolean` `userExecutablesStagedForJob()` Returns whether user executables need to be staged for job or not.

### Methods inherited from class edu.isi.pegasus.planner.classes.Data

`setToString, vectorToString`

### Methods inherited from class java.lang.Object

`finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### UNASSIGNED_JOB

    public static final int UNASSIGNED_JOB

Denotes a job that does not fall into the other categories. It might denote an error condition or a faulty logic in the planner.

See Also:
  Constant Field Values

#### COMPUTE_JOB

    public static final int COMPUTE_JOB

Denotes a compute job. Generally these are the jobs that are specified in the DAX.

See Also:
  Constant Field Values

#### STAGE_IN_JOB

    public static final int STAGE_IN_JOB

Denotea a job that is used to stage in the input files for a compute job.

See Also:
  Constant Field Values

#### STAGE_OUT_JOB

    public static final int STAGE_OUT_JOB

Denotes a job that transfers the date generated by a compute job to the output pool specified by the user.

See Also:
  Constant Field Values

#### REPLICA_REG_JOB

    public static final int REPLICA_REG_JOB

Denotes a job that registers in the replica mechanism the materialized files.

See Also:
  Constant Field Values

#### INTER_POOL_JOB

    public static final int INTER_POOL_JOB

Denotes a job that transfers the output of a compute node to the site where the child compute node is to be generated.

See Also:
  Constant Field Values

#### CREATE_DIR_JOB

    public static final int CREATE_DIR_JOB

Denotes a job that creates directories at the remote pools.

See Also:
  Constant Field Values

#### STAGE_IN_WORKER_PACKAGE_JOB

    public static final int STAGE_IN_WORKER_PACKAGE_JOB

Denotes a job that stages the worker package.

See Also:
  Constant Field Values

#### CLEANUP_JOB

    public static final int CLEANUP_JOB

Denotes a cleanup job, that removes the files that from the remote working directories of the remote sites.

See Also:
  Constant Field Values

#### CHMOD_JOB

    public static final int CHMOD_JOB

Denotes a chmod job that sets the xbit on the remote end.

See Also:
  Constant Field Values

#### DAX_JOB

    public static final int DAX_JOB

Denotes a chmod job that sets the xbit on the remote end.

See Also:
  Constant Field Values

#### DAG_JOB

    public static final int DAG_JOB

Denotes a chmod job that sets the xbit on the remote end.

See Also:
  Constant Field Values

#### DELIMITER

    private static java.lang.String DELIMITER

The delimiter that has to be used to combine the name for the staged executable.

#### jobClass

    public int jobClass

The type of the job. Pegasus tags the jobs according to the function of the job. The jobs are tagged according to the functionality they serve in the Pegasus super node. The job class can be unassigned compute job stage-in stage-out replica registration inter-pool transfer create-dir job staged-compute job

#### jobID

    public java.lang.String jobID

Identifies of which Pegasus Super Node is a job associated with. Pegasus Supernode is identified by the jobName of the compute node in the super node.

#### jobName

    public java.lang.String jobName

The name of the job.

#### logicalName

    public java.lang.String logicalName

The logical name of the transformation which is executed as a part of this job. Note: The tc is looked up by namespace__logicalName_version.

#### logicalId

    public java.lang.String logicalId

The logical id of the job as referred to in the dax.

#### namespace

    public java.lang.String namespace

The namespace to which the transformation is bound.

#### version

    public java.lang.String version

The version of the transformation.

#### dvName

    public java.lang.String dvName

The name of the derivation in Chimera that generated the job.

#### dvNamespace

    public java.lang.String dvNamespace

The namespace to which the derivation is bound.

#### dvVersion

    public java.lang.String dvVersion

The version of the derivation.

#### globusScheduler

    public java.lang.String globusScheduler

The globus Scheduler for the job.

#### executable

    public java.lang.String executable

The path of the executable on the machine at which the job is executed.

#### condorUniverse

    public java.lang.String condorUniverse

The universe in which the job has to be executed. Can be standard, vanilla or globus.

#### stdIn

    public java.lang.String stdIn

File which contains stdin (keyboard input).

#### stdOut

    public java.lang.String stdOut

File which contains stdout.

#### stdErr

    public java.lang.String stdErr

File which contains standard error.

#### strargs

    public java.lang.String strargs

The arguements for the job. It is the contains the arguments for the job. This string is put in the arguments in Condor Submit File.

#### inputFiles

    public java.util.Set inputFiles

Contains the input files for the submit file. They are vector of PegasusFile Objects which store the transiency information of each logical file.

See Also:
  `org.griphyn.cPlanner.classes.PegasusFile`

#### outputFiles

    public java.util.Set outputFiles

Contains the output files for the submit file. They are vector of PegasusFile Objects which store the transiency information of each logical file.

See Also:
  `org.griphyn.cPlanner.classes.PegasusFile`

#### executionPool

    public java.lang.String executionPool

The pool on which this job has been decided to be executed by the Interpool Engine.

#### globusRSL

    public Globus globusRSL

The namespace object containing the globus rsl attributes which the user specifies in the dax, or the pool file or the properties file.

#### condorVariables

    public Condor condorVariables

For Condor Namespace. This contains the extra Condor options which one may want to specify. These are copied straightaway to the Submit file.

#### envVariables

    public ENV envVariables

To accomodate the environment variables which might needed to be set.

#### dagmanVariables

    public Dagman dagmanVariables

The DAGMAN namespace profile variable holding the dagman profiles. It holds the prescript and the postscripts for the jobs.

#### hints

    public Hints hints

To accomodate all the hints that maybe passed through the DAX.

#### vdsNS

    public Pegasus vdsNS

The Pegasus namespace variable.

#### level

    public int level

Identifies the level of the job in the dax. The level is bottom up from the final child node.

#### mRuntime

    private double mRuntime

The expected runtime for a job.

#### mJobExecutablesStaged

    private boolean mJobExecutablesStaged

Boolean indicating whether the job executables were staged for it or not.

#### mNotifications

    private Notifications mNotifications

All the notifications associated with the job

#### mStagingSite

    private java.lang.String mStagingSite

The staging site associated with the job

#### mDirectory

    private java.lang.String mDirectory

The directory in which the job should run.

#### mSubmissionCredential

    private CredentialHandler.TYPE mSubmissionCredential

The credential to use for job submission if required.

#### mCredentialsType

    private java.util.Map<java.lang.String,java.util.Set<CredentialHandler.TYPE>> mCredentialsType

Set of credential types required by a job to execute remotely.

### Constructor Detail

#### Job

    public Job()

Intialises the member variables.

#### Job

    public Job(Job job)

Overloaded constructor. Does a shallow copy of the job object passed.

Parameters:
  `job` - the `Job` object containing the job description.

### Method Detail

#### jobType2GridGatewayJobType

    private static GridGateway.JOB_TYPE jobType2GridGatewayJobType(int type)

Returns an appropriate grid gateway job type corresponding to a job type

Parameters:
  `type` - the job type
Returns:
  corresponding GridGateway job type

#### clone

    public java.lang.Object clone()

Returns a new copy of the Object.

Overrides:
  `clone` in class `java.lang.Object`
Returns:
  clone of the object.

#### setRuntime

    public void setRuntime(java.lang.String runtime)

Sets the expected runtime for the job.

Parameters:
  `runtime` - the runtime for the job.

#### setRuntime

    public void setRuntime(double runtime)

Sets the expected runtime for the job.

Parameters:
  `runtime` - the runtime for the job.

#### getRuntime

    public double getRuntime()

Returns the expected runtime for the job that is set using the setRuntime method.

Returns:
  the runtime for the job.

#### computeRuntime

    public double computeRuntime()

Returns the runtime associated with the job. If the runtime variable with the job is set to -ve then, it also attempts to check on the value specified in Pegasus Profile key runtime for the job. If there is a value associated with profile key, that the runtime value is set to that using setRuntime( String ) function.

Returns:
  the expected runtime.
See Also:
  `org.griphyn.cPlanner.namespace.Pegasus#RUNTIME_KEY`

#### setUniverse

    public void setUniverse(java.lang.String universe)

Set the universe associated with the job.

Parameters:
  `universe` - the universe to be associated.

#### getUniverse

    public java.lang.String getUniverse()

Returns the universe associated with the job.

Returns:
  the universe associate with job .

#### setExecutableStagingForJob

    public void setExecutableStagingForJob(boolean value)

Sets the executable staging flag in the job to the value passed.

Parameters:
  `value` - the boolean value.

#### userExecutablesStagedForJob

    public boolean userExecutablesStagedForJob()

Returns whether user executables need to be staged for job or not.

Returns:
  user executable staging.

#### addInputFile

    public void addInputFile(PegasusFile file)

Adds an input file to the underlying collection of input files associated with the job.

Parameters:
  `file` - the `PegasusFile` containing the input file.

#### setInputFiles

    public void setInputFiles(java.util.Set<PegasusFile> ipFiles)

Sets the input files associated with the job.

Parameters:
  `ipFiles` - Set of `PegasusFile` objects containing the input files.

#### getInputFiles

    public java.util.Set<PegasusFile> getInputFiles()

Returns the set of input files associated with the job.

Returns:
  Set of `PegasusFile` objects containing the input files.

#### resetNotifications

    public void resetNotifications()

Resets the notifications associated with the job

#### addNotification

    public void addNotification(Invoke invoke)

Adds a Invoke object correpsonding to a notification.

Parameters:
  `invoke` - the invoke object containing the notification

#### addNotifications

    public void addNotifications(TransformationCatalogEntry entry)

Adds all the notifications specfied in the TransformationCatalogEntry to the underlying job notifications.

Parameters:
  `entry` - the TransformationCatalogEntry object

#### addNotifications

    public void addNotifications(Notifications invokes)

Adds all the notifications passed to the underlying container.

Parameters:
  `invokes` - the notifications to be added

#### getNotifications

    public java.util.Collection<Invoke> getNotifications(Invoke.WHEN when)

Returns a collection of all the notifications that need to be done for a particular condition

Parameters:
  `when` - the condition
Returns:

#### getNotifications

    public Notifications getNotifications()

Returns all the notifications associated with the job.

Returns:
  the notifications

#### setSubmissionCredential

    public void setSubmissionCredential(CredentialHandler.TYPE cred)

Sets the credential to use for job submission.

Parameters:
  `cred` - the job submission credential

#### addCredentialType

    public void addCredentialType(java.lang.String site,
                                  java.lang.String url)

Looks at a URL to determine whether a credential should be associated with a job or not.

Parameters:
  `site` - the site with which the credential is associated
  `url` - the url for which a credential needs to be added

#### addCredentialType

    public void addCredentialType(java.lang.String site,
                                  CredentialHandler.TYPE type)

Adds a type of credential that will be required by a job.

Parameters:
  `type` - the credential type.

#### requiresCredentials

    public boolean requiresCredentials()

A boolean method indicating whether credentials are associated with the job

Returns:
  boolean

#### getSubmissionCredential

    public CredentialHandler.TYPE getSubmissionCredential()

Sets the credential to use for job submission.

Returns:
  the credential to use for job submission

#### getCredentialTypes

    public java.util.Map<java.lang.String,java.util.Set<CredentialHandler.TYPE>> getCredentialTypes()

Returns the various credential types required by a job indexed by a site from which to pick up the credential

Returns:
  the set of credentials required.

#### resetCredentialTypes

    public void resetCredentialTypes()

Resets the credential types required by a job.

#### addOutputFile

    public void addOutputFile(PegasusFile file)

Adds an output file to the underlying collection of output files associated with the job.

Parameters:
  `file` - the `PegasusFile` containing the output file.

#### setOutputFiles

    public void setOutputFiles(java.util.Set<PegasusFile> opFiles)

Sets the output files associated with the job.

Parameters:
  `opFiles` - Set of `PegasusFile` objects containing the output files.

#### getOutputFiles

    public java.util.Set<PegasusFile> getOutputFiles()

Returns the set of output files associated with the job.

Returns:
  Set of `PegasusFile` objects containing the output files.

#### setJobType

    public void setJobType(int type)

Sets the type of the job.

Parameters:
  `type` - the type of the job.
Throws:
  `java.lang.IllegalArgumentException` - if the job type is outside its legal range.
See Also:
  `UNASSIGNED_JOB`, `COMPUTE_JOB`, `STAGE_IN_JOB`, `STAGE_OUT_JOB`, `REPLICA_REG_JOB`, `INTER_POOL_JOB`, `CREATE_DIR_JOB`, `#STAGED_COMPUTE_JOB`, `CLEANUP_JOB`

#### setSiteHandle

    public void setSiteHandle(java.lang.String site)

Sets the site handle of the site, where teh job is to be executed

Parameters:
  `site` - the site handle.

#### getSiteHandle

    public java.lang.String getSiteHandle()

Returns the handle of the site where the job is scheduled.

Returns:
  site handle.

#### setRemoteExecutable

    public void setRemoteExecutable(java.lang.String path)

Sets the path to the executable on the remote grid site. This executable is invoked whenever a job is run on the remote grid site.

Parameters:
  `path` - the path to the underlying transformation on the remote grid site.
See Also:
  `getSiteHandle()`

#### getRemoteExecutable

    public java.lang.String getRemoteExecutable()

Returns the path of the underlying executable on the remote grid site.

Returns:
  the path to the executable if set.

#### setJobManager

    public void setJobManager(java.lang.String jobmanager)

Sets the remote jobmanager on which the job has to run.

Parameters:
  `jobmanager` - the jobmanager url.
See Also:
  `getJobManager()`

#### getJobManager

    public java.lang.String getJobManager()

Returnss the remote jobmanager on which the job has to run.

Returns:
  the jobmanager url.
See Also:
  `setJobManager(java.lang.String)`

#### setStdOut

    public void setStdOut(java.lang.String fileName)

Sets the file to which the stdout of the job needs to be written to at the remote grid site. Should be just the basename. The file appears in the remote working directory for that job.

Parameters:
  `fileName` - the basename of the file.

#### getStdOut

    public java.lang.String getStdOut()

Returns the file to which the stdout of the job is written to.

Returns:
  the basename of the file.

#### setStdErr

    public void setStdErr(java.lang.String fileName)

Sets the file to which the stderr of the job needs to be written to at the remote grid site. Should be just the basename. The file appears in the remote working directory for that job.

Parameters:
  `fileName` - the basename of the file.

#### getStdErr

    public java.lang.String getStdErr()

Returns the file to which the stderr of the job is written to.

Returns:
  the basename of the file.

#### setStdIn

    public void setStdIn(java.lang.String fileName)

Sets the file to from which to pick up the stdin for the job. The file is tracked via Replica Catalog, and is staged to the remote grid site.

Parameters:
  `fileName` - the basename of the file.

#### getStdIn

    public java.lang.String getStdIn()

Returns the file from which the stdin is picked up.

Returns:
  the basename of the file.

#### getID

    public java.lang.String getID()

Returns the ID associated with the job. Unfortunately currently it is the job name.

Returns:
  the ID of the job.

#### setStagingSiteHandle

    public void setStagingSiteHandle(java.lang.String site)

Sets the staging site.

Parameters:
  `site` - the staging

#### getStagingSiteHandle

    public java.lang.String getStagingSiteHandle()

Returns the staging site.

Returns:
  the staging

#### getName

    public java.lang.String getName()

Returns the name of the job.

Returns:
  String

#### setName

    public void setName(java.lang.String name)

Setter method to set the name of the job.

Parameters:
  `name` - the name of the job.

#### getDirectory

    public java.lang.String getDirectory()

Returns the directory where the job runs.

Returns:
  String

#### setDirectory

    public void setDirectory(java.lang.String directory)

Setter method to set the name of the job.

Parameters:
  `name` - the name of the job.

#### getLogicalID

    public java.lang.String getLogicalID()

Returns the logical id of the job.

Returns:
  String

#### getDAXID

    public java.lang.String getDAXID()

Returns the DAX ID for the job if it appeared in the DAX, else null

Returns:
  the id of the job in the DAX if present , else null

#### setLogicalID

    public void setLogicalID(java.lang.String id)

Setter method to set the logical id of the job.

Parameters:
  `id` - the logical id of the job.

#### getVDSSuperNode

    public java.lang.String getVDSSuperNode()

Returns the name of the compute job of Pegasus supernode containing this job.

Returns:
  String

#### setVDSSuperNode

    public void setVDSSuperNode(java.lang.String name)

Setter method to the name of the compute job of Pegasus supernode containing this job.

Parameters:
  `name` - the name of the job.

#### getJobType

    public int getJobType()

Returns the type of the job. Returns the value matching the jobClass.

Returns:
  int value of job class.

#### getGridGatewayJobType

    public GridGateway.JOB_TYPE getGridGatewayJobType()

Returns the corresponding grid gateway job type

Returns:
  grid gateway job type

#### getJobTypeDescription

    public java.lang.String getJobTypeDescription()

Gets the textual description of the type associated with the job.

Returns:
  the textual description of the type associated with the job.

#### getJobTypeDescription

    public java.lang.String getJobTypeDescription(int type)

Gets the textual description of the type that can be associated with a job.

Parameters:
  `type` - the type of the job.
Returns:
  the textual description of the type associated with the job.

#### getTXNamespace

    public java.lang.String getTXNamespace()

Returns the namespace of the underlying transformation.

Returns:
  namespace

#### setTXNamespace

    public void setTXNamespace(java.lang.String ns)

Sets the transformation namespace to be associated with the job.

Parameters:
  `ns` - the namespace.

#### getTXName

    public java.lang.String getTXName()

Returns the name of the underlying transformation.

Returns:
  name

#### setTXName

    public void setTXName(java.lang.String name)

Sets the transformation name of the underlying transformation.

Parameters:
  `name` - the logical name of the transformation.

#### getTXVersion

    public java.lang.String getTXVersion()

Returns the version of the underlying transformation.

Returns:
  version

#### setTXVersion

    public void setTXVersion(java.lang.String vs)

Sets the version of the underlying transformation.

Parameters:
  `vs` - the version.

#### setTransformation

    public void setTransformation(java.lang.String ns,
                                  java.lang.String name,
                                  java.lang.String vs)

Sets the various attributes of underlying transformation.

Parameters:
  `ns` - the namespace of the transformation.
  `name` - the logical name of the transformation.
  `vs` - the version of the transformation.

#### getCompleteTCName

    public java.lang.String getCompleteTCName()

Constructs the fully qualified name of a transformation with which to query the TC, including the namespace and version.

Returns:
  the complete tranformation name.

#### getDVNamespace

    public java.lang.String getDVNamespace()

Returns the namespace of the underlying derivation.

Returns:
  namespace

#### setDVNamespace

    public void setDVNamespace(java.lang.String ns)

Sets the derivation namespace to be associated with the job.

Parameters:
  `ns` - the namespace.

#### getDVName

    public java.lang.String getDVName()

Returns the name of the underlying derivation.

Returns:
  name

#### setDVName

    public void setDVName(java.lang.String name)

Sets the derivation name of the underlying derivation.

Parameters:
  `name` - the logical name of the derivation.

#### getDVVersion

    public java.lang.String getDVVersion()

Returns the version of the underlying derivation.

Returns:
  version

#### setDVVersion

    public void setDVVersion(java.lang.String vs)

Sets the version of the underlying derivation.

Parameters:
  `vs` - the version.

#### setDerivation

    public void setDerivation(java.lang.String ns,
                              java.lang.String name,
                              java.lang.String vs)

Sets the various attributes of underlying derivation.

Parameters:
  `ns` - the namespace of the derivation.
  `name` - the logical name of the derivation.
  `vs` - the version of the derivation.

#### getLevel

    public int getLevel()

Returns the level associated with the job.

Returns:
  int designating the level

#### setLevel

    public void setLevel(int value)

Sets the level for the job.

Parameters:
  `value` - the level

#### getCompleteDVName

    public java.lang.String getCompleteDVName()

Constructs the fully qualified name of the corresponding derivation used to generate this job in Chimera including the namespace and version.

Returns:
  the complete derivation name.

#### getStagedExecutableBaseName

    public java.lang.String getStagedExecutableBaseName()

Returns the basename for the staged executable corresponding to the job.

Returns:
  the staged executable basename

#### getStagedExecutableBaseName

    public static java.lang.String getStagedExecutableBaseName(java.lang.String txNamespace,
                                                               java.lang.String txName,
                                                               java.lang.String txVersion)

Returns the basename for the staged executable corresponding to the job.

Parameters:
  `txNamespace` - is the namespace in which the TR resides, may be null.
  `txName` - is the base name of the transformation, must not be null.
  `txVersion` - is the version of the TR, may be null
Returns:
  the staged executable basename

#### getArguments

    public java.lang.String getArguments()

Returns the argument string with which the job has to be invoked.

Returns:
  the argument string.

#### setArguments

    public void setArguments(java.lang.String arguments)

Sets the argument string with which the job has to be invoked.

Parameters:
  `arguments` - the argument string.

#### combine

    private static java.lang.String combine(java.lang.String namespace,
                                            java.lang.String name,
                                            java.lang.String version)

Combines the three components together into a single string as namespace-name-version.

Parameters:
  `namespace` - is the namespace in which the TR resides, may be null.
  `name` - is the base name of the transformation, must not be null.
  `version` - is the version of the TR, may be null.
Returns:
  the concatenated form .

#### setPreScript

    public void setPreScript(java.lang.String path)

It sets the prescript for the job. The argument string is assumed to be empty.

Parameters:
  `path` - the path to the script that has to be run as a prescript.

#### setPreScript

    public void setPreScript(java.lang.String path,
                             java.lang.String arguments)

It sets the prescript for the job.

Parameters:
  `path` - the path to the script that has to be run as a prescript.
  `arguments` - the arguments to the prescript,

#### getPreScriptPath

    public java.lang.String getPreScriptPath()

Returns the path to the prescript for the job if set.

Returns:
  the path to the script that has to be run as a prescript, else null if no prescript has been set.

#### getPreScriptArguments

    public java.lang.String getPreScriptArguments()

Returns the arguments to the prescript for the job if set.

Returns:
  the argumetns to the prescript script that has to be run as a prescript, else null if no prescript has been set.

#### typeRecursive

    public boolean typeRecursive()

Returns whether the job is recursive or not.

Returns:
  boolean

#### setTypeRecursive

    public void setTypeRecursive()

Sets the job to be recursive.

#### typeInRange

    public static boolean typeInRange(int type)

Returns whether the job type value for the job is in range or not.

Parameters:
  `type` - the job type.
Returns:
  true if the value is in range. false if the value is not in range.

#### updateProfiles

    public void updateProfiles(TransformationCatalogEntry entry)

Updates all the profile namespaces with the information associated in the transformation catalog for this job. It ends up updating already existing information, and adds supplemental new information if present in the transformation catalog. The method does not explicitly check whehter the data object passed refers to this job or not. The calling method should ensure this.

Parameters:
  `entry` - the `TCEntry` object corresponding to the entry in the Transformation Catalog for the job.

#### updateProfiles

    public void updateProfiles(PegasusProperties properties)

Updates all the profile namespaces with the information specified by the user in the properties file, that apply to this job. It ends up updating already existing information, and adds supplemental new information if present in the properties file. The method does not explicitly check whehter the data object passed refers to this job or not. The calling method should ensure this.

Parameters:
  `properties` - the `PegasusProperties` object containing the user properties.

#### updateProfiles

    public void updateProfiles(Profiles profiles)

Updates all the profile namespaces with the information specified in list of profile objects passed. Pool catalog returns profile information as a list of `Profile` objects that need to be propogated to the job. It ends up updating already existing information, and adds supplemental new information if present in the properties file.

Parameters:
  `profiles` - The `Profiles` that need to be incorporated in the jobs profile namespaces.

#### updateProfiles

    public void updateProfiles(java.util.List profiles)

Updates all the profile namespaces with the information specified in list of profile objects passed. Pool catalog returns profile information as a list of `Profile` objects that need to be propogated to the job. It ends up updating already existing information, and adds supplemental new information if present in the properties file.

Parameters:
  `profiles` - the list of `Profile` objects that need to be incorporated in the jobs profile namespaces.

#### mergeProfiles

    public void mergeProfiles(Job job)

Merges profiles from another job to this job in a controlled fashion. The merging of the profile is dependant upon the namespace to which it belongs. Some profiles maybe overriden, others maybe summed up etc.

Parameters:
  `job` - the `Job` object containing the job description for the job whose profiles have to be merged into this job.

#### equals

    public boolean equals(java.lang.Object obj)

Checks if an object is similar to the one referred to by this class. We compare the primary key to determine if it is the same or not.

Overrides:
  `equals` in class `java.lang.Object`
Parameters:
  `obj` - the object for which equalsto is applied.
Returns:
  true if the primary key (jobName) match. else false.

#### isMPIJob

    public boolean isMPIJob()

Returns a boolean value denoting whether the job is MPI or not. If no job type is specified in the globus rsl for the job, the job is assumed to be non mpi.

Returns:
  boolean true if jobtype=mpi set in the globus rsl. false in all other cases.

#### runInWorkDirectory

    public boolean runInWorkDirectory()

Returns whether a job should be run in the work directory or not. If a job is not run in the work directory, then it should be run in the submit directory. That would be the case if the job has been scheduled to site "local" and the class of the job coressponds to the auxillary jobs that have been created by Pegasus.

Returns:
  boolean true to indicate job can run in work directory, false job cant be run.

#### resetProfiles

    public void resetProfiles()

Resets all the profiles associated with the job.

#### toString

    public java.lang.String toString()

Returns a textual description of the object.

Specified by:
  `toString` in class `Data`
Returns:
  textual description of the job.

#### toDOT

    public java.lang.String toDOT()
                           throws java.io.IOException

Returns the DOT description of the object. This is used for visualizing the workflow.

Returns:
  String containing the Partition object in XML.
Throws:
  `java.io.IOException` - if something fishy happens to the stream.

#### toDOT

    public void toDOT(java.io.Writer stream,
                      java.lang.String indent)
               throws java.io.IOException

Returns the DOT description of the object. This is used for visualizing the workflow.

Parameters:
  `stream` - is a stream opened and ready for writing. This can also be a StringWriter for efficient output.
  `indent` - is a `String` of spaces used for pretty printing. The initial amount of spaces should be an empty string. The parameter is used internally for the recursive traversal.
Throws:
  `java.io.IOException` - if something fishy happens to the stream.

#### getDOTColor

    protected java.lang.String getDOTColor()

Returns the color with which DOT should color the node representing the job.

Returns:
  the color.

#### append

    private void append(java.lang.StringBuffer sb,
                        java.lang.String key,
                        java.lang.Object value,
                        java.lang.String newLine)

Appends a key value mapping to the StringBuffer.

Parameters:
  `sb` - StringBuffer to which the mapping has to be appended.
  `key` - the field.
  `value` - the value of the field.
  `newLine` - the newLineSeparator to be used.

#### addProfile

    public void addProfile(Profile p)

Adds a profile to the job object

Parameters:
  `p` - the profile to be added