Class BaseFileCopier

  • Direct Known Subclasses:
    LocalFileCopier

    public class BaseFileCopier
    extends java.lang.Object
    BaseFileCopier provides utility methods for a FileCopier class.
    • 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

      • BaseFileCopier

        public BaseFileCopier()
    • Method Detail

      • defaultRemoteFileExtensionForNode

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

        public static java.lang.String appendRemoteFileExtension​(java.lang.String filepath,
                                                                 java.lang.String fileext)
        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 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
      • getRemoteDirForNode

        public static 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.
        Parameters:
        node - the node entry
        project - project
        framework - framework
        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
      • generateRemoteFilepathForNode

        public static 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)
        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
      • 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, this file should later be cleaned up by calling ScriptfileUtils.releaseTempFile(java.io.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 - source file
        input - source stream
        script - source string
        destinationFile - destination
        Returns:
        local file
        Throws:
        FileCopierException - on error