wjhk.jupload2.upload
Class FileUploadThreadFTP

java.lang.Object
  extended by java.lang.Thread
      extended by wjhk.jupload2.upload.DefaultFileUploadThread
          extended by wjhk.jupload2.upload.FileUploadThreadFTP
All Implemented Interfaces:
Runnable, FileUploadThread

public class FileUploadThreadFTP
extends DefaultFileUploadThread

The FileUploadThreadFTP class is intended to extend the functionality of the JUpload applet and allow it to handle ftp:// addresses.
Note: this class is not a V4 of the FTP upload. It is named V4, as it inherits from the FileUploadThread class.

In order to use it, simply change the postURL argument to the applet to contain the appropriate ftp:// link. The format is:

         ftp://username:password@myhost.com:21/directory
 
Where everything but the host is optional. There is another parameter that can be passed to the applet named 'binary' which will set the file transfer mode based on the value. The possible values here are 'true' or 'false'. It was intended to be somewhat intelligent by looking at the file extension and basing the transfer mode on that, however, it was never implemented. Feel free to! Also, there is a 'passive' parameter which also has a value of 'true' or 'false' which sets the connection type to either active or passive mode.

Version:
1.0, 01 Jan 2007 * Update march 2007, etienne_sf Adaptation to match all JUpload functions:
  • Inheritance from the FileUploadThread class,
  • Use of the UploadFileData class,
  • Before upload file preparation,
  • Upload stop by the user.
  • Author:
    Evin Callahan (inheritance from DefaultUploadThread built by etienne_sf), Daystar Computer Services
    See Also:
    FileUploadThread, DefaultFileUploadThread

    Nested Class Summary
     
    Nested classes/interfaces inherited from class java.lang.Thread
    Thread.State, Thread.UncaughtExceptionHandler
     
    Field Summary
     Pattern ftpPattern
              This pattern defines the groups and pattern of the ftp syntax.
     
    Fields inherited from class wjhk.jupload2.upload.DefaultFileUploadThread
    fileUploadManagerThread, packetQueue, responseBody, responseMsg, uploadPolicy
     
    Fields inherited from class java.lang.Thread
    MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
     
    Constructor Summary
    FileUploadThreadFTP(UploadPolicy uploadPolicy, BlockingQueue<UploadFilePacket> packetQueue, FileUploadManagerThread fileUploadManagerThread)
              Creates a new instance.
     
    Method Summary
    (package private)  void afterFile(UploadFileData uploadFileData)
              Idem as DefaultFileUploadThread.beforeFile(UploadFilePacket, UploadFileData), but is called after each file (and each chunks for each file).
    (package private)  void beforeFile(UploadFilePacket uploadFilePacket, UploadFileData uploadFileData)
              This method is called before sending the bytes corresponding to the file whose index is given in argument.
    (package private)  void beforeRequest(UploadFilePacket packet)
              This method is called before starting of each request.
    (package private)  void cleanAll()
              Clean any used resource, like a 'permanent' connection.
    (package private)  void cleanRequest()
              Clean any used resource of the last executed request.
    (package private)  int finishRequest()
              This method is called at the end of each request.
    (package private)  long getAdditionnalBytesForUpload(UploadFileData uploadFileData)
              This method is called before the upload.
    (package private)  OutputStream getOutputStream()
              Get the output stream where the files should be written for upload.
    (package private)  void interruptionReceived()
              Reaction of the upload thread, when an interruption has been received.
    (package private)  void startRequest(long contentLength, boolean bChunkEnabled, int chunkPart, boolean bLastChunk)
              This method is called for each upload request to the server.
     
    Methods inherited from class wjhk.jupload2.upload.DefaultFileUploadThread
    close, getPacketQueue, getResponseBody, getResponseMsg, normalizeCRLF, quoteCRLF, run, setFileUploadThreadManager, setResponseBody, setResponseMsg
     
    Methods inherited from class java.lang.Thread
    activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
     
    Methods inherited from interface wjhk.jupload2.upload.FileUploadThread
    getState, interrupt, isAlive, join, join, start
     

    Field Detail

    ftpPattern

    public final Pattern ftpPattern
    This pattern defines the groups and pattern of the ftp syntax.

    Constructor Detail

    FileUploadThreadFTP

    public FileUploadThreadFTP(UploadPolicy uploadPolicy,
                               BlockingQueue<UploadFilePacket> packetQueue,
                               FileUploadManagerThread fileUploadManagerThread)
                        throws JUploadException
    Creates a new instance. Performs the connection to the server based on the matcher created in the main.

    Parameters:
    uploadPolicy -
    packetQueue - The queue from wich packets to upload are available.
    fileUploadManagerThread -
    Throws:
    JUploadException
    IllegalArgumentException - if any error occurs. message is error
    Method Detail

    beforeRequest

    void beforeRequest(UploadFilePacket packet)
                 throws JUploadException
    Description copied from class: DefaultFileUploadThread
    This method is called before starting of each request. It can be used to prepare any work, before starting the request. For instance, in HTTP, the tail must be properly calculated, as the last one must be different from the others.
    The packets to send are available through the DefaultFileUploadThread.packetQueue queue.

    Specified by:
    beforeRequest in class DefaultFileUploadThread
    Throws:
    JUploadException
    See Also:
    DefaultFileUploadThread.beforeRequest(UploadFilePacket)

    afterFile

    void afterFile(UploadFileData uploadFileData)
    Description copied from class: DefaultFileUploadThread
    Idem as DefaultFileUploadThread.beforeFile(UploadFilePacket, UploadFileData), but is called after each file (and each chunks for each file).

    Specified by:
    afterFile in class DefaultFileUploadThread
    Parameters:
    uploadFileData - The file that was just sent.
    See Also:
    DefaultFileUploadThread.afterFile(UploadFileData)

    beforeFile

    void beforeFile(UploadFilePacket uploadFilePacket,
                    UploadFileData uploadFileData)
              throws JUploadException
    Description copied from class: DefaultFileUploadThread
    This method is called before sending the bytes corresponding to the file whose index is given in argument. If the file is splitted in chunks (see the maxChunkSize applet parameter), this method is called before each chunk for this file.

    Specified by:
    beforeFile in class DefaultFileUploadThread
    Parameters:
    uploadFilePacket - The bunch of files in the current request
    uploadFileData - The next file that will be sent
    Throws:
    JUploadException
    See Also:
    DefaultFileUploadThread.beforeFile(UploadFilePacket, UploadFileData)

    cleanAll

    void cleanAll()
    Description copied from class: DefaultFileUploadThread
    Clean any used resource, like a 'permanent' connection. This method is called after the end of the last request (see on the top of this page for details).

    Specified by:
    cleanAll in class DefaultFileUploadThread
    See Also:
    DefaultFileUploadThread.cleanAll()

    cleanRequest

    void cleanRequest()
                throws JUploadException
    Description copied from class: DefaultFileUploadThread
    Clean any used resource of the last executed request. In HTTP mode, the output stream, input stream and the socket should be cleaned here.

    Specified by:
    cleanRequest in class DefaultFileUploadThread
    Throws:
    JUploadException
    See Also:
    DefaultFileUploadThread.cleanRequest()

    finishRequest

    int finishRequest()
                throws JUploadException
    Description copied from class: DefaultFileUploadThread
    This method is called at the end of each request.

    Specified by:
    finishRequest in class DefaultFileUploadThread
    Returns:
    The response status code from the server (200 == OK)
    Throws:
    JUploadIOException
    JUploadException
    See Also:
    DefaultFileUploadThread.finishRequest()

    getAdditionnalBytesForUpload

    long getAdditionnalBytesForUpload(UploadFileData uploadFileData)
    Description copied from class: DefaultFileUploadThread
    This method is called before the upload. It calls the FileData.beforeUpload() method for all files to upload, and prepares the progressBar bar (if any), with total number of bytes to upload. final private void beforeUpload() throws JUploadException { for (int i = 0; i < this.filesToUpload.length && !this.fileUploadManager.isUploadStopped(); i++) { this.filesToUpload[i].beforeUpload(); } } /** This methods upload overhead for the file number indexFile in the filesDataParam given to the constructor. For instance, in HTTP, the upload contains a head and a tail for each files.

    Specified by:
    getAdditionnalBytesForUpload in class DefaultFileUploadThread
    Parameters:
    uploadFileData - The file whose additional length is asked.
    Returns:
    The additional number of bytes for this file.
    See Also:
    DefaultFileUploadThread.getAdditionnalBytesForUpload(UploadFileData)

    getOutputStream

    OutputStream getOutputStream()
    Description copied from class: DefaultFileUploadThread
    Get the output stream where the files should be written for upload.

    Specified by:
    getOutputStream in class DefaultFileUploadThread
    Returns:
    The target output stream for upload.
    See Also:
    DefaultFileUploadThread.getOutputStream()

    startRequest

    void startRequest(long contentLength,
                      boolean bChunkEnabled,
                      int chunkPart,
                      boolean bLastChunk)
    Description copied from class: DefaultFileUploadThread
    This method is called for each upload request to the server. The number of request to the server depends on:
  • The total number of files to upload.
  • The value of the nbFilesPerRequest applet parameter.
  • The value of the maxChunkSize applet parameter.
  • The main objective of this method is to open the connection to the server, where the files to upload will be written. It should also send any header necessary for this upload request. The DefaultFileUploadThread.getOutputStream() methods is then called to know where the uploaded files should be written.
    Note: it's up to the class containing this method to internally manage the connection.

    Specified by:
    startRequest in class DefaultFileUploadThread
    Parameters:
    contentLength - The total number of bytes for the files (or the chunk) to upload in this query.
    bChunkEnabled - True if this upload is part of a file (can occurs only if the maxChunkSize applet parameter is set). False otherwise.
    chunkPart - The chunk number. Should be ignored if bChunkEnabled is false.
    bLastChunk - True if in chunk mode, and this upload is the last one. Should be ignored if bChunkEnabled is false.
    See Also:
    DefaultFileUploadThread.startRequest(long, boolean, int, boolean)

    interruptionReceived

    void interruptionReceived()
    Reaction of the upload thread, when an interruption has been received. This method should close all resource to the server, to allow the server to free any resource (temporary file, network connection...).

    Specified by:
    interruptionReceived in class DefaultFileUploadThread