com.dtolabs.rundeck.core.execution.impl.common
Class BaseFileCopier

java.lang.Object
  extended by com.dtolabs.rundeck.core.execution.impl.common.BaseFileCopier
Direct Known Subclasses:
JschScpFileCopier, LocalFileCopier

public class BaseFileCopier
extends java.lang.Object

BaseFileCopier provides utility methods for a FileCopier class.


Field Summary
static java.lang.String DEFAULT_UNIX_FILE_EXT
           
static java.lang.String DEFAULT_WINDOWS_FILE_EXT
           
static java.lang.String FILE_COPY_DESTINATION_DIR
           
 
Constructor Summary
BaseFileCopier()
           
 
Method Summary
static java.lang.String appendRemoteFileExtension(java.lang.String filepath, java.lang.String fileext)
          Return a string with a file extension appended if it is not already on the file path provided.
static java.lang.String defaultRemoteFileExtensionForNode(INodeEntry node)
          Return the default file extension for a temp file based on the type of node
static java.lang.String generateRemoteFilepathForNode(INodeEntry node, java.lang.String scriptfileName)
          Return a temporary filepath for a file to be copied to the node, given the input filename (without directory path)
static java.lang.String generateRemoteFilepathForNode(INodeEntry node, java.lang.String scriptfileName, java.lang.String fileExtension)
          Return a temporary filepath for a file to be copied to the node, given the input filename (without directory path)
static java.lang.String getRemoteDirForNode(INodeEntry node)
          Return a remote destination temp dir path for the given node.
protected static java.io.File writeLocalFile(java.io.File original, java.io.InputStream input, java.lang.String script, java.io.File destinationFile)
           
static java.io.File writeScriptTempFile(ExecutionContext context, java.io.File original, java.io.InputStream input, java.lang.String script, INodeEntry node)
          Copy a script file, script source stream, or script string into a temp file, and replace \ embedded tokens with values from the dataContext for the latter two.
static java.io.File writeScriptTempFile(ExecutionContext context, java.io.File original, java.io.InputStream input, java.lang.String script, INodeEntry node, java.io.File destination)
          Copy a script file, script source stream, or script string into a temp file, and replace \ embedded tokens with values from the dataContext for the latter two.
static java.io.File writeTempFile(ExecutionContext context, java.io.File original, java.io.InputStream input, java.lang.String script)
          Write the file, stream, or text to a local temp file and return the file
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FILE_COPY_DESTINATION_DIR

public static final java.lang.String FILE_COPY_DESTINATION_DIR
See Also:
Constant Field Values

DEFAULT_WINDOWS_FILE_EXT

public static final java.lang.String DEFAULT_WINDOWS_FILE_EXT
See Also:
Constant Field Values

DEFAULT_UNIX_FILE_EXT

public static final java.lang.String DEFAULT_UNIX_FILE_EXT
See Also:
Constant Field Values
Constructor Detail

BaseFileCopier

public BaseFileCopier()
Method Detail

writeScriptTempFile

public static java.io.File writeScriptTempFile(ExecutionContext context,
                                               java.io.File original,
                                               java.io.InputStream input,
                                               java.lang.String script,
                                               INodeEntry node)
                                        throws FileCopierException
Copy a script file, script source stream, or script string into a temp file, and replace \ embedded tokens with values from the dataContext for the latter two. Marks the file as executable and delete-on-exit. This will not rewrite any content if the input is originally a file.

Parameters:
context - execution context
original - local system file, or null
input - input stream to write, or null
script - file content string, or null
node - destination node entry, to provide node data context
Returns:
file where the script was stored
Throws:
ExecutionException - if an IO problem occurs
FileCopierException

writeScriptTempFile

public static java.io.File writeScriptTempFile(ExecutionContext context,
                                               java.io.File original,
                                               java.io.InputStream input,
                                               java.lang.String script,
                                               INodeEntry node,
                                               java.io.File destination)
                                        throws FileCopierException
Copy a script file, script source stream, or script string into a temp file, and replace \ embedded tokens with values from the dataContext for the latter two. Marks the file as executable and delete-on-exit. This will not rewrite any content if the input is originally a file.

Parameters:
context - execution context
original - local system file, or null
input - input stream to write, or null
script - file content string, or null
node - destination node entry, to provide node data context
destination - destination file, or null to generate a new temp file
Returns:
file where the script was stored
Throws:
ExecutionException - if an IO problem occurs
FileCopierException

defaultRemoteFileExtensionForNode

public static java.lang.String defaultRemoteFileExtensionForNode(INodeEntry node)
Return the default file extension for a temp file based on the type of node

Parameters:
node -
Returns:

appendRemoteFileExtension

public static java.lang.String appendRemoteFileExtension(java.lang.String filepath,
                                                         java.lang.String fileext)
Return a string with a file extension appended if it is not already on the file path provided.

Parameters:
filepath - the file path string
fileext - the file extension, if it does not start with a "." one will be prepended first. If null, the unmodified filepath will be returned.

getRemoteDirForNode

public static java.lang.String getRemoteDirForNode(INodeEntry node)
Return a remote destination temp dir path for the given node. If specified, the node attribute named "file-copy-destination-dir" is used, otherwise a temp directory appropriate for the os-family of the node is returned.

Parameters:
node - the node entry
Returns:
a path to destination dir for the node

generateRemoteFilepathForNode

public static java.lang.String generateRemoteFilepathForNode(INodeEntry node,
                                                             java.lang.String scriptfileName)
Return a temporary filepath for a file to be copied to the node, given the input filename (without directory path)

Parameters:
node - the destination node
scriptfileName - the name of the file to copy
Returns:
a filepath specifying destination of the file to copy that should be unique for the node and current date.

generateRemoteFilepathForNode

public static java.lang.String generateRemoteFilepathForNode(INodeEntry node,
                                                             java.lang.String scriptfileName,
                                                             java.lang.String fileExtension)
Return a temporary filepath for a file to be copied to the node, given the input filename (without directory path)

Parameters:
node - the destination node
scriptfileName - the name of the file to copy
fileExtension - optional extension to use for the temp file, or null for default
Returns:
a filepath specifying destination of the file to copy that should be unique for the node and current date.

writeTempFile

public static java.io.File writeTempFile(ExecutionContext context,
                                         java.io.File original,
                                         java.io.InputStream input,
                                         java.lang.String script)
                                  throws FileCopierException
Write the file, stream, or text to a local temp file and return the file

Parameters:
context - context
original - source file, or null
input - source inputstream or null
script - source text, or null
Returns:
temp file
Throws:
FileCopierException - if IOException occurs

writeLocalFile

protected static java.io.File writeLocalFile(java.io.File original,
                                             java.io.InputStream input,
                                             java.lang.String script,
                                             java.io.File destinationFile)
                                      throws FileCopierException
Parameters:
original -
input -
script -
destinationFile -
Returns:
Throws:
FileCopierException