Class UrlCopy

  • All Implemented Interfaces:
    java.lang.Runnable

    public class UrlCopy
    extends java.lang.Object
    implements java.lang.Runnable
    • Field Detail

      • logger

        private static org.apache.commons.logging.Log logger
      • BUFF_SIZE

        public static final int BUFF_SIZE
        maximum buffer size to read or write when putting and getting files
        See Also:
        Constant Field Values
      • bufferSize

        protected int bufferSize
      • srcCreds

        protected org.ietf.jgss.GSSCredential srcCreds
      • dstCreds

        protected org.ietf.jgss.GSSCredential dstCreds
      • dcau

        protected boolean dcau
      • appendMode

        protected boolean appendMode
      • canceled

        protected boolean canceled
      • thirdParty

        protected boolean thirdParty
      • listeners

        protected java.util.List listeners
      • sourceOffset

        protected long sourceOffset
      • destinationOffset

        protected long destinationOffset
      • sourceLength

        protected long sourceLength
      • tcpBufferSize

        protected int tcpBufferSize
      • disableAllo

        protected boolean disableAllo
    • Constructor Detail

      • UrlCopy

        public UrlCopy()
    • Method Detail

      • setDCAU

        public void setDCAU​(boolean dcau)
      • getDCAU

        public boolean getDCAU()
      • setCredentials

        public void setCredentials​(org.ietf.jgss.GSSCredential credentials)
        Sets credentials to use for both sides.
        Parameters:
        credentials - user credentials
      • setSourceCredentials

        public void setSourceCredentials​(org.ietf.jgss.GSSCredential srcCredentials)
        Sets source url credentials.
        Parameters:
        srcCredentials - source url credentials.
      • setDestinationCredentials

        public void setDestinationCredentials​(org.ietf.jgss.GSSCredential dstCredentials)
        Sets destination url credentials.
        Parameters:
        dstCredentials - destination url credentials.
      • setSourceAuthorization

        public void setSourceAuthorization​(Authorization auth)
        Sets source authorization type
        Parameters:
        auth - authorization type to perform for source
      • setDestinationAuthorization

        public void setDestinationAuthorization​(Authorization auth)
        Sets destination authorization type
        Parameters:
        auth - authorization type to perform for destination
      • getSourceCredentials

        public org.ietf.jgss.GSSCredential getSourceCredentials()
        Returns credentials used for authenticating the source side for the url copy. If no source credentials are set, the default user credentials will used.
        Returns:
        source credentials.
      • getDestinationCredentials

        public org.ietf.jgss.GSSCredential getDestinationCredentials()
        Returns credentials used for authenticating the destination side for the url copy. If no destination credentials are set, the default user credentials will used.
        Returns:
        destination credentials.
      • getSourceAuthorization

        public Authorization getSourceAuthorization()
        Returns authorization type for the source side for the url copy. If no authorization type is set, the default authorization will be performed for a given protocol.
        Returns:
        source authorization type
      • getDestinationAuthorization

        public Authorization getDestinationAuthorization()
        Returns authorization type for the destination side for the url copy. If no authorization type is set, the default authorization will be performed for a given protocol.
        Returns:
        destination authorization type
      • addUrlCopyListener

        public void addUrlCopyListener​(UrlCopyListener listener)
        Adds url copy listener.
        Parameters:
        listener - url copy listener
      • removeUrlCopyListener

        public void removeUrlCopyListener​(UrlCopyListener listener)
        Remove url copy listener
        Parameters:
        listener - url copy listener
      • setBufferSize

        public void setBufferSize​(int size)
        Sets buffer size for transfering data. It does not set the TCP buffers.
        Parameters:
        size - size of the data buffer
      • getBufferSize

        public int getBufferSize()
        Returns buffer size used for transfering data.
        Returns:
        data buffer size
      • setTCPBufferSize

        public void setTCPBufferSize​(int size)
        Sets the TCP buffer size for GridFTP transfers.
        Parameters:
        size - size of TCP buffer
      • getTCPBufferSize

        public int getTCPBufferSize()
        Returns TCP buffer size used for transfers data.
        Returns:
        TCP buffer size
      • setAppendMode

        public void setAppendMode​(boolean appendMode)
        Enables/disables append mode.
        Parameters:
        appendMode - if true, destination file will be appended.
      • isAppendMode

        public boolean isAppendMode()
        Checks if append mode is enabled.
        Returns:
        true if appending will be performed, false otherwise.
      • getDestinationOffset

        public long getDestinationOffset()
        Gets the offset in the destination file from which data starts to be written
        Returns:
        a value indicating the offset in bytes
      • setDestinationOffset

        public void setDestinationOffset​(long destinationOffset)
        Sets the offset in the destination file from which data starts to be written. The default offset is 0 (the beginning of the file)
        Parameters:
        destinationOffset - the offset in bytes
      • getSourceLength

        public long getSourceLength()
        Gets the maximum data size that will be transfered.
        Returns:
        the size in bytes
      • setSourceFileLength

        public void setSourceFileLength​(long sourceLength)
        Allows a partial transfer by setting the maximum number of bytes that will be transfered. By default the entire source file is transfered.
        Parameters:
        sourceLength - the size of the transfer in bytes
      • getSourceOffset

        public long getSourceOffset()
        Gets the offset in the source file from which data starts to be read
        Returns:
        a value indicating the offset in bytes
      • setSourceFileOffset

        public void setSourceFileOffset​(long sourceOffset)
        Sets the offset in the source file from which data starts to be read. The default offset is 0 (the beginning of the file)
        Parameters:
        sourceOffset - the offset in bytes
      • getSourceUrl

        public GlobusURL getSourceUrl()
        Returns source url.
        Returns:
        url
      • getDestinationUrl

        public GlobusURL getDestinationUrl()
        Returns destination url.
        Returns:
        url
      • setUseThirdPartyCopy

        public void setUseThirdPartyCopy​(boolean thirdParty)
        Enables/disables usage of third party transfers.
        Parameters:
        thirdParty - if true enable, false disable
      • getDisableAllo

        public boolean getDisableAllo()
        Can be used to query whether the use of the ALLO command with GridFTP uploads is disabled.
      • setDisableAllo

        public void setDisableAllo​(boolean disableAllo)
        Allows disabling of the use of ALLO with GridFTP uploads
      • cancel

        public void cancel()
        Cancels the transfer in progress. If no transfer is in progress it is ignored.
      • isCanceled

        public boolean isCanceled()
        Checks if the transfer was canceled.
        Returns:
        true if transfer was canceled
      • copy

        public void copy()
                  throws UrlCopyException
        Performs the copy function. Source and destination urls must be specified otherwise a exception is thrown. Also, if source and destination url are ftp urls and thirdPartyCopy is enabled, third party transfer will be performed. Urls, of course, must be of supported protocol. Currently, gsiftp, ftp, https, http, and file are supported.

        This method does not cause the UrlCopyListener.transferCompleted() and UrlCopyListener.transferError(Exception) to be called. If you want completion/failures to be signaled asynchronously, either call the run() method or wrap this object in a Thread.

        Throws:
        UrlCopyException - in case of an error.
      • getInputStream

        protected GlobusInputStream getInputStream()
                                            throws java.lang.Exception
        Returns input stream based on the source url
        Throws:
        java.lang.Exception
      • getOutputStream

        protected GlobusOutputStream getOutputStream​(long size)
                                              throws java.lang.Exception
        Returns output stream based on the destination url.
        Throws:
        java.lang.Exception
      • transfer

        private boolean transfer​(long total,
                                 GlobusInputStream in,
                                 GlobusOutputStream out)
                          throws java.io.IOException
        This function performs the actual transfer.
        Throws:
        java.io.IOException
      • fireUrlTransferProgressEvent

        private void fireUrlTransferProgressEvent​(long totalBytes,
                                                  long transferedBytes)
      • thirdPartyTransfer

        private void thirdPartyTransfer()
                                 throws UrlCopyException
        This performs thrid party transfer only if source and destination urls are ftp urls.
        Throws:
        UrlCopyException
      • createFTPConnection

        private FTPClient createFTPConnection​(GlobusURL ftpURL,
                                              boolean srcSide)
                                       throws java.lang.Exception
        Creates ftp connection based on the ftp url (secure vs. unsecure)
        Throws:
        java.lang.Exception