Package org.globus.io.urlcopy
Class UrlCopy
- java.lang.Object
-
- org.globus.io.urlcopy.UrlCopy
-
- All Implemented Interfaces:
java.lang.Runnable
public class UrlCopy extends java.lang.Object implements java.lang.Runnable
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanappendModestatic intBUFF_SIZEmaximum buffer size to read or write when putting and getting filesprotected intbufferSizeprotected booleancanceledprotected booleandcauprotected longdestinationOffsetprotected booleandisableAlloprotected AuthorizationdstAuthprotected org.ietf.jgss.GSSCredentialdstCredsprotected GlobusURLdstUrlprotected java.util.Listlistenersprotected longsourceLengthprotected longsourceOffsetprotected AuthorizationsrcAuthprotected org.ietf.jgss.GSSCredentialsrcCredsprotected GlobusURLsrcUrlprotected inttcpBufferSizeprotected booleanthirdParty
-
Constructor Summary
Constructors Constructor Description UrlCopy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddUrlCopyListener(UrlCopyListener listener)Adds url copy listener.voidcancel()Cancels the transfer in progress.voidcopy()Performs the copy function.intgetBufferSize()Returns buffer size used for transfering data.booleangetDCAU()AuthorizationgetDestinationAuthorization()Returns authorization type for the destination side for the url copy.org.ietf.jgss.GSSCredentialgetDestinationCredentials()Returns credentials used for authenticating the destination side for the url copy.longgetDestinationOffset()Gets the offset in the destination file from which data starts to be writtenGlobusURLgetDestinationUrl()Returns destination url.booleangetDisableAllo()Can be used to query whether the use of the ALLO command with GridFTP uploads is disabled.protected GlobusInputStreamgetInputStream()Returns input stream based on the source urlprotected GlobusOutputStreamgetOutputStream(long size)Returns output stream based on the destination url.AuthorizationgetSourceAuthorization()Returns authorization type for the source side for the url copy.org.ietf.jgss.GSSCredentialgetSourceCredentials()Returns credentials used for authenticating the source side for the url copy.longgetSourceLength()Gets the maximum data size that will be transfered.longgetSourceOffset()Gets the offset in the source file from which data starts to be readGlobusURLgetSourceUrl()Returns source url.intgetTCPBufferSize()Returns TCP buffer size used for transfers data.booleanisAppendMode()Checks if append mode is enabled.booleanisCanceled()Checks if the transfer was canceled.protected voidnegotiateDCAU(FTPClient src, FTPClient dst)voidremoveUrlCopyListener(UrlCopyListener listener)Remove url copy listenervoidrun()This method is an implementation of theRunnableinterface and can be used to perform the copy in a separate thread.voidsetAppendMode(boolean appendMode)Enables/disables append mode.voidsetBufferSize(int size)Sets buffer size for transfering data.voidsetCredentials(org.ietf.jgss.GSSCredential credentials)Sets credentials to use for both sides.voidsetDCAU(boolean dcau)voidsetDestinationAuthorization(Authorization auth)Sets destination authorization typevoidsetDestinationCredentials(org.ietf.jgss.GSSCredential dstCredentials)Sets destination url credentials.voidsetDestinationOffset(long destinationOffset)Sets the offset in the destination file from which data starts to be written.voidsetDestinationUrl(GlobusURL dest)Sets destination url.voidsetDisableAllo(boolean disableAllo)Allows disabling of the use of ALLO with GridFTP uploadsvoidsetSourceAuthorization(Authorization auth)Sets source authorization typevoidsetSourceCredentials(org.ietf.jgss.GSSCredential srcCredentials)Sets source url credentials.voidsetSourceFileLength(long sourceLength)Allows a partial transfer by setting the maximum number of bytes that will be transfered.voidsetSourceFileOffset(long sourceOffset)Sets the offset in the source file from which data starts to be read.voidsetSourceUrl(GlobusURL source)Sets source url.voidsetTCPBufferSize(int size)Sets the TCP buffer size for GridFTP transfers.voidsetUseThirdPartyCopy(boolean thirdParty)Enables/disables usage of third party transfers.
-
-
-
Field Detail
-
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
-
srcAuth
protected Authorization srcAuth
-
dstCreds
protected org.ietf.jgss.GSSCredential dstCreds
-
dstAuth
protected Authorization dstAuth
-
dcau
protected boolean dcau
-
appendMode
protected boolean appendMode
-
srcUrl
protected GlobusURL srcUrl
-
dstUrl
protected GlobusURL dstUrl
-
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
-
-
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
-
setSourceUrl
public void setSourceUrl(GlobusURL source) throws UrlCopyException
Sets source url.- Parameters:
source- source url.- Throws:
UrlCopyException
-
getSourceUrl
public GlobusURL getSourceUrl()
Returns source url.- Returns:
- url
-
setDestinationUrl
public void setDestinationUrl(GlobusURL dest) throws UrlCopyException
Sets destination url.- Parameters:
dest- destination url- Throws:
UrlCopyException
-
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
-
run
public void run()
This method is an implementation of theRunnableinterface and can be used to perform the copy in a separate thread.This method will perform the transfer and signal completion and errors through the
UrlCopyListener.transferCompleted()andUrlCopyListener.transferError(Exception)of any registered listeners (seeaddUrlCopyListener(UrlCopyListener)).- Specified by:
runin interfacejava.lang.Runnable
-
copy
public void copy() throws UrlCopyExceptionPerforms 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()andUrlCopyListener.transferError(Exception)to be called. If you want completion/failures to be signaled asynchronously, either call therun()method or wrap this object in aThread.- 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
-
negotiateDCAU
protected void negotiateDCAU(FTPClient src, FTPClient dst) throws java.io.IOException, FTPException
- Throws:
java.io.IOExceptionFTPException
-
-