Class DefaultFileCopierUtil

  • All Implemented Interfaces:
    FileCopierUtil

    public class DefaultFileCopierUtil
    extends java.lang.Object
    implements FileCopierUtil
    Created by greg on 7/15/16.
    • Field Detail

      • FILE_COPY_DESTINATION_DIR

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

        public static final java.lang.String FRAMEWORK_FILE_COPY_DESTINATION_DIR
        See Also:
        Constant Field Values
      • PROJECT_FILE_COPY_DESTINATION_DIR

        public static final java.lang.String PROJECT_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

      • DefaultFileCopierUtil

        public DefaultFileCopierUtil()
    • Method Detail

      • writeScriptTempFile

        public java.io.File writeScriptTempFile​(ExecutionContext context,
                                                java.io.File original,
                                                java.io.InputStream input,
                                                java.lang.String script,
                                                INodeEntry node,
                                                boolean expandTokens)
                                         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.
        Specified by:
        writeScriptTempFile in interface FileCopierUtil
        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
        expandTokens - if true, expand tokens in the stream or string
        Returns:
        file where the script was stored, this file should later be cleaned up by calling ScriptfileUtils.releaseTempFile(java.io.File)
        Throws:
        FileCopierException - if an IO problem occurs
      • writeScriptTempFile

        public java.io.File writeScriptTempFile​(ExecutionContext context,
                                                java.io.File original,
                                                java.io.InputStream input,
                                                java.lang.String script,
                                                INodeEntry node,
                                                java.io.File destination,
                                                boolean expandTokens)
                                         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.
        Specified by:
        writeScriptTempFile in interface FileCopierUtil
        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
        expandTokens - if true, expand tokens in the stream or string
        Returns:
        file where the script was stored
        Throws:
        FileCopierException - if an IO problem occurs
      • defaultRemoteFileExtensionForNode

        public java.lang.String defaultRemoteFileExtensionForNode​(INodeEntry node)
        Specified by:
        defaultRemoteFileExtensionForNode in interface FileCopierUtil
        Parameters:
        node - node
        Returns:
        the default file extension for a temp file based on the type of node
      • appendRemoteFileExtension

        public java.lang.String appendRemoteFileExtension​(java.lang.String filepath,
                                                          java.lang.String fileext)
        Specified by:
        appendRemoteFileExtension in interface FileCopierUtil
        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.
        Returns:
        a string with a file extension appended if it is not already on the file path provided.
      • getRemoteDirForNode

        public 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.
        Specified by:
        getRemoteDirForNode in interface FileCopierUtil
        Parameters:
        node - the node entry
        Returns:
        a path to destination dir for the node
      • getRemoteDirForNode

        public java.lang.String getRemoteDirForNode​(INodeEntry node,
                                                    IRundeckProject project,
                                                    IFramework framework)
        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.
        Specified by:
        getRemoteDirForNode in interface FileCopierUtil
        Parameters:
        node - the node entry
        project - project
        framework - framework
        Returns:
        a path to destination dir for the node
      • generateRemoteFilepathForNode

        public 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)
        Specified by:
        generateRemoteFilepathForNode in interface FileCopierUtil
        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 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)
        Specified by:
        generateRemoteFilepathForNode in interface FileCopierUtil
        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
      • generateRemoteFilepathForNode

        public java.lang.String generateRemoteFilepathForNode​(INodeEntry node,
                                                              IRundeckProject project,
                                                              IFramework framework,
                                                              java.lang.String scriptfileName,
                                                              java.lang.String fileExtension,
                                                              java.lang.String identity)
        Return a temporary filepath for a file to be copied to the node, given the input filename (without directory path)
        Specified by:
        generateRemoteFilepathForNode in interface FileCopierUtil
        Parameters:
        node - the destination node
        project - project
        framework - framework
        scriptfileName - the name of the file to copy
        fileExtension - optional extension to use for the temp file, or null for default
        identity - unique identifier, or null to include a random string
        Returns:
        a filepath specifying destination of the file to copy that should be unique
      • writeLocalFile

        public java.io.File writeLocalFile​(java.io.File original,
                                           java.io.InputStream input,
                                           java.lang.String script,
                                           java.io.File destinationFile)
                                    throws FileCopierException
        Specified by:
        writeLocalFile in interface FileCopierUtil
        Parameters:
        original - source file
        input - source stream
        script - source string
        destinationFile - destination
        Returns:
        local file
        Throws:
        FileCopierException - on error