net.sf.hermesftp.cmd
Class AbstractFtpCmdRetr

java.lang.Object
  extended by net.sf.hermesftp.cmd.AbstractFtpCmd
      extended by net.sf.hermesftp.cmd.AbstractFtpCmdRetr
All Implemented Interfaces:
java.lang.Cloneable, FtpCmd, FtpConstants
Direct Known Subclasses:
FtpCmdRetr

public abstract class AbstractFtpCmdRetr
extends AbstractFtpCmd
implements FtpConstants

Abstract base class for RETR command implementations.

Author:
Lars Behnke

Field Summary
 
Fields inherited from interface net.sf.hermesftp.common.FtpConstants
ATTR_CLIENT_NAME, ATTR_DATA_PROT, ATTR_FILE_OFFSET, ATTR_FORCE_UTF8, ATTR_GROUP_DATA, ATTR_LOGIN_TIME, ATTR_RENAME_FILE, ATTR_RESTART_MARKERS, ATTR_SSL, ATTR_USER_DATA, BYTE_LENGTH, BYTE_MASK, DEFAULT_BEAN_RES, DEFAULT_KEYSTORE, DEFAULT_KEYSTORE_PASS, DT_ASCII, DT_BINARY, DT_EBCDIC, HERMES_HOME, MILLI, MODE_BLOCK, MODE_COMPRESS, MODE_STREAM, MODE_ZIP, MSG_GOODBYE, MSG150, MSG200, MSG200_NOTED, MSG200_PBSZ, MSG200_SIZE, MSG200_TYPE, MSG202, MSG211_FEAT_ENTRY, MSG211_FEAT_FOOTER, MSG211_FEAT_HEADER, MSG211_STAT, MSG213_SIZE, MSG213_TIME, MSG214, MSG220, MSG220_WEL, MSG226, MSG227, MSG229, MSG230, MSG234, MSG250, MSG257, MSG331, MSG350, MSG350_REST, MSG421, MSG425, MSG426, MSG431, MSG450, MSG451, MSG500, MSG500_CMD, MSG501, MSG501_PATH, MSG501_SIZE, MSG503, MSG503_USR, MSG504, MSG522, MSG530, MSG530_AUTH, MSG534, MSG536, MSG550, MSG550_COMM, MSG550_EXISTS, MSG550_MSG, MSG550_NOTEMPTY, MSG550_PERM, MSG553, OPT_ALLOWED_PASSIVE_PORTS, OPT_BUFFER_SIZE, OPT_CHARSET_ASCII, OPT_CHARSET_EBCDIC, OPT_EMULATE_UNIX, OPT_FTP_PORT, OPT_IPV4_BLACK_LIST, OPT_IPV6_BLACK_LIST, OPT_MAX_CONNECTIONS, OPT_MAX_DOWNLOAD_RATE, OPT_MAX_IDLE_SECONDS, OPT_MAX_UPLOAD_RATE, OPT_MSG_GOODBYE, OPT_MSG_WELCOME, OPT_REMOTE_DIR, OPT_SSL_ALLOW_EXPLICIT, OPT_SSL_ALLOW_IMPLICIT, OPT_SSL_CIPHER_SUITES, OPT_SSL_FORCE, OPT_SSL_KEYSTORE_FILE, OPT_SSL_KEYSTORE_PASS, OPT_SSL_PORT_IMPLICIT, PRIV_NONE, PRIV_READ, PRIV_READ_WRITE, PRIV_WRITE, PWD, SEPARATOR, SERVER_STATUS_HALTED, SERVER_STATUS_INIT, SERVER_STATUS_READY, SERVER_STATUS_UNDEF, SPACE, STAT_BYTES_DOWNLOADED, STAT_BYTES_UPLOADED, STAT_DOWNLOAD_RATE, STAT_FILES_DOWNLOADED, STAT_FILES_UPLOADED, STAT_UPLOAD_RATE, STRUCT_FILE, STRUCT_RECORD, TYPE_NAMES, WILDCARD
 
Constructor Summary
AbstractFtpCmdRetr()
           
 
Method Summary
protected abstract  void doPerformAccessChecks(java.io.File file)
          Checks availability and access rights for the current folder and passed file.
protected abstract  void doRetrieveFileData(java.io.OutputStream out, java.io.File file, long fileOffset)
          Retrieves file based data.
protected abstract  void doRetrieveRecordData(RecordWriteSupport out, java.io.File file, long fileOffset)
          Retrieves record based data.
 void execute()
          Executes the command.
 long getCompleted()
          Getter method for the java bean completed.
 long getFileSize()
          Getter method for the java bean fileSize.
 TransferRateLimiter getTransferRateLimiter()
          Getter Methode fuer die Eigenschaft transferRateLimiter.
 boolean handleAsyncCmd(java.lang.String req)
          Handles any request on the control connection that was sent while the current command is executed. For instance, while storing or retrieving the client may issue an abort or status command.
 void incCompleted(long completed)
          Setter method for the java bean completed.
protected  boolean isAbortRequested()
           
 void setFileSize(long fileSize)
          Setter method for the java bean fileSize.
 void setTransferRateLimiter(TransferRateLimiter transferRateLimiter)
           
 
Methods inherited from class net.sf.hermesftp.cmd.AbstractFtpCmd
getAbsPath, getAndResetFileOffset, getArguments, getCtx, getPathArg, getPermission, getToken, isResponded, msg, msg, msg, msgOut, msgOut, msgOut, out, setArguments, setCtx, setToken
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.sf.hermesftp.cmd.FtpCmd
getHelp, isAuthenticationRequired
 

Constructor Detail

AbstractFtpCmdRetr

public AbstractFtpCmdRetr()
Method Detail

doPerformAccessChecks

protected abstract void doPerformAccessChecks(java.io.File file)
                                       throws java.io.IOException
Checks availability and access rights for the current folder and passed file. The methods acts as a primitive operation that is called by the template method execute(boolean);

Parameters:
file - The destination file.
Throws:
java.io.IOException - Thrown if one of the following conditions occurred: (1) IO failed or (3) access rights have been violated or (3) resource limits have been reached.

doRetrieveRecordData

protected abstract void doRetrieveRecordData(RecordWriteSupport out,
                                             java.io.File file,
                                             long fileOffset)
                                      throws java.io.IOException
Retrieves record based data. Since native files generally do not support records, the assumption is made that each line of a text file corresponds to a record. The method acts as a primitive operation that is called by the template method execute(); Futhermore, text record data must be encoded by an 1-byte character set (ACII, ANSI or EBCDIC).

Parameters:
out - The output stream.
file - The source file.
fileOffset - The file offset.
Throws:
java.io.IOException - Thrown if IO fails or if a resource limit has been reached.

doRetrieveFileData

protected abstract void doRetrieveFileData(java.io.OutputStream out,
                                           java.io.File file,
                                           long fileOffset)
                                    throws java.io.IOException
Retrieves file based data. The method acts as a primitive operation that is called by the template method execute();

Parameters:
out - The output stream.
file - The source file.
fileOffset - The file offset.
Throws:
java.io.IOException - Thrown if IO fails or if a resource limit has been reached.

handleAsyncCmd

public boolean handleAsyncCmd(java.lang.String req)
Handles any request on the control connection that was sent while the current command is executed. For instance, while storing or retrieving the client may issue an abort or status command.

Specified by:
handleAsyncCmd in interface FtpCmd
Overrides:
handleAsyncCmd in class AbstractFtpCmd
Parameters:
req - The request that has to be handled.
Returns:
True is request was handled, otherwise false.

execute

public void execute()
             throws FtpCmdException
Executes the command.

Specified by:
execute in interface FtpCmd
Throws:
FtpCmdException - Thrown on any exception occuring while the command is executed.

isAbortRequested

protected boolean isAbortRequested()
Returns:
True, if transfer has been aborted.

getCompleted

public long getCompleted()
Getter method for the java bean completed.

Returns:
Returns the value of the java bean completed.

incCompleted

public void incCompleted(long completed)
Setter method for the java bean completed.

Parameters:
completed - The value of completed to set.

getFileSize

public long getFileSize()
Getter method for the java bean fileSize.

Returns:
Returns the value of the java bean fileSize.

setFileSize

public void setFileSize(long fileSize)
Setter method for the java bean fileSize.

Parameters:
fileSize - The value of fileSize to set.

getTransferRateLimiter

public TransferRateLimiter getTransferRateLimiter()
Getter Methode fuer die Eigenschaft transferRateLimiter.

Returns:
Wert der Eigenschaft transferRateLimiter.

setTransferRateLimiter

public void setTransferRateLimiter(TransferRateLimiter transferRateLimiter)
Parameters:
transferRateLimiter - the transferRateLimiter to set


Copyright © 2005-2007 Lars Behnke. All Rights Reserved.