edu.isi.pegasus.planner.refiner

## Class CreateDirectory

- java.lang.Object
- - edu.isi.pegasus.planner.refiner.Engine
  - - edu.isi.pegasus.planner.refiner.CreateDirectory

    public class CreateDirectory
    extends Engine

This common interface that identifies the basic functions that need to be implemented to introduce random directories in which the jobs are executed on the remote execution pools. The implementing classes are invoked when the user gives the --randomdir option. The implementing classes determine where in the graph the nodes creating the random directories are placed and their dependencies with the rest of the nodes in the graph.

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

### Field Summary

Fields
`protected ADag` `mCurrentDag` It is a reference to the Concrete Dag so far.
`static java.lang.String` `PACKAGE_NAME` The name of the package in which all the implementing classes are.

### Fields inherited from class edu.isi.pegasus.planner.refiner.Engine

`mBag, mLogger, mLogMsg, mOutputPool, mPoolFile, mPOptions, mProps, mRLIUrl, mSiteStore, mTCFile, mTCHandle, mTCMode, REGISTRATION_UNIVERSE, TRANSFER_UNIVERSE`

### Constructor Summary

Constructors
`protected` `CreateDirectory(PegasusBag bag)` A pratically nothing constructor !

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`ADag` `addCreateDirectoryNodes(ADag dag)` It modifies the concrete dag passed in the constructor and adds the create random directory nodes to it at the root level.
`static Implementation` `loadCreateDirectoryImplementationInstance(PegasusBag bag)` Loads the implementing class corresponding to the mode specified by the user at runtime.
`static Strategy` `loadCreateDirectoryStraegyInstance(PegasusBag bag)` Loads the implementing class corresponding to the mode specified by the user at runtime.

### Methods inherited from class edu.isi.pegasus.planner.refiner.Engine

`addVector, appendArrayList, complainForHeadNodeURLPrefix, complainForHeadNodeURLPrefix, loadProperties, printVector, stringInList, stringInPegVector, stringInVector, vectorToString`

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### PACKAGE_NAME

    public static final java.lang.String PACKAGE_NAME

The name of the package in which all the implementing classes are.

See Also:
  Constant Field Values

#### mCurrentDag

    protected ADag mCurrentDag

It is a reference to the Concrete Dag so far.

### Constructor Detail

#### CreateDirectory

    protected CreateDirectory(PegasusBag bag)

A pratically nothing constructor !

Parameters:
  `bag` - bag of initialization objects

### Method Detail

#### loadCreateDirectoryStraegyInstance

    public static Strategy loadCreateDirectoryStraegyInstance(PegasusBag bag)
                                                       throws FactoryException

Loads the implementing class corresponding to the mode specified by the user at runtime.

Parameters:
  `bag` - bag of initialization objects
Returns:
  instance of a CreateDirecctory implementation
Throws:
  `FactoryException` - that nests any error that might occur during the instantiation of the implementation.

#### loadCreateDirectoryImplementationInstance

    public static Implementation loadCreateDirectoryImplementationInstance(PegasusBag bag)
                                                                    throws FactoryException

Loads the implementing class corresponding to the mode specified by the user at runtime.

Parameters:
  `bag` - bag of initialization objects
Returns:
  instance of a CreateDirecctory implementation
Throws:
  `FactoryException` - that nests any error that might occur during the instantiation of the implementation.

#### addCreateDirectoryNodes

    public ADag addCreateDirectoryNodes(ADag dag)

It modifies the concrete dag passed in the constructor and adds the create random directory nodes to it at the root level. These directory nodes have a common child that acts as a concatenating job and ensures that Condor does not start staging in the data before the directories have been added. The root nodes in the unmodified dag are now chidren of this concatenating dummy job.

Parameters:
  `dag` - the workflow to which nodes have to be added
Returns:
  workflow with nodes added.