Coverage Report - wjhk.jupload2.upload.FileUploadManagerThread
 
Classes in this File Line Coverage Branch Coverage Complexity
FileUploadManagerThread
N/A
N/A
1
 
 1  
 //
 2  
 // $Id$
 3  
 //
 4  
 // jupload - A file upload applet.
 5  
 //
 6  
 // Copyright 2010 The JUpload Team
 7  
 //
 8  
 // Created: 3 fevr. 2010
 9  
 // Creator: etienne_sf
 10  
 // Last modified: $Date$
 11  
 //
 12  
 // This program is free software; you can redistribute it and/or modify
 13  
 // it under the terms of the GNU General Public License as published by
 14  
 // the Free Software Foundation; either version 2 of the License, or
 15  
 // (at your option) any later version.
 16  
 //
 17  
 // This program is distributed in the hope that it will be useful,
 18  
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 19  
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 20  
 // GNU General Public License for more details.
 21  
 //
 22  
 // You should have received a copy of the GNU General Public License
 23  
 // along with this program; if not, write to the Free Software
 24  
 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 25  
 
 26  
 package wjhk.jupload2.upload;
 27  
 
 28  
 import wjhk.jupload2.exception.JUploadException;
 29  
 
 30  
 /**
 31  
  * @author etienne_sf
 32  
  * 
 33  
  */
 34  
 public interface FileUploadManagerThread {
 35  
 
 36  
         /** Indicates that nothings has begun */
 37  
         public static final int UPLOAD_STATUS_NOT_STARTED = 1;
 38  
 
 39  
         /**
 40  
          * We're sending data to the server, for the file identified by
 41  
          * numOfFileInCurrentUpload.
 42  
          */
 43  
         public static final int UPLOAD_STATUS_UPLOADING = 2;
 44  
 
 45  
         /**
 46  
          * A chunk (a part) of the file identified by numOfFileInCurrentUpload has
 47  
          * been sent. But the server response has not been received yet.
 48  
          */
 49  
         public static final int UPLOAD_STATUS_CHUNK_UPLOADED_WAITING_FOR_RESPONSE = 3;
 50  
 
 51  
         /**
 52  
          * All data for the file identified by numOfFileInCurrentUpload has been
 53  
          * sent. But the server response has not been received yet.
 54  
          */
 55  
         public static final int UPLOAD_STATUS_FILE_UPLOADED_WAITING_FOR_RESPONSE = 4;
 56  
 
 57  
         /**
 58  
          * The upload for the file identified by numOfFileInCurrentUpload is
 59  
          * finished
 60  
          */
 61  
         public static final int UPLOAD_STATUS_UPLOADED = 5;
 62  
 
 63  
         /**
 64  
          * The heart of the program. This method prepare the upload, then calls
 65  
          * doUpload for each HTTP request.
 66  
          * 
 67  
          * @throws InterruptedException
 68  
          * @see java.lang.Thread#join()
 69  
          */
 70  
         public void join() throws InterruptedException;
 71  
 
 72  
         /**
 73  
          * The heart of the program. This method prepare the upload, then calls
 74  
          * doUpload for each HTTP request.
 75  
          * 
 76  
          * @see java.lang.Thread#run()
 77  
          */
 78  
         public void run();
 79  
 
 80  
         /**
 81  
          * The heart of the program. This method prepare the upload, then calls
 82  
          * doUpload for each HTTP request.
 83  
          * 
 84  
          * @see java.lang.Thread#start()
 85  
          */
 86  
         public void start();
 87  
 
 88  
         /**
 89  
          * Check if the thread is running...
 90  
          * 
 91  
          * @see java.lang.Thread#interrupt()
 92  
          */
 93  
         public void interrupt();
 94  
 
 95  
         /**
 96  
          * Check if the thread is running...
 97  
          * 
 98  
          * @return True if it's running
 99  
          * @see java.lang.Thread#isAlive()
 100  
          */
 101  
         public boolean isAlive();
 102  
 
 103  
         /**
 104  
          * Stores the last upload exception that occurs. This method won't write to
 105  
          * the log file.
 106  
          * 
 107  
          * @param uploadException
 108  
          */
 109  
         public void setUploadException(JUploadException uploadException);
 110  
 
 111  
         /**
 112  
          * Get the last upload exception that occurs.
 113  
          * 
 114  
          * @return The last upload exception, or null if no exception occurs.
 115  
          */
 116  
         public JUploadException getUploadException();
 117  
 
 118  
         /**
 119  
          * Indicates whether the upload is finished or not. As several conditions
 120  
          * can make the upload being finished (all files uploaded, an error occured,
 121  
          * the user stops the upload), a specific boolean is built. It's managed by
 122  
          * the {@link #run()} method.
 123  
          * 
 124  
          * @return true if the upload is finished. False otherwise.
 125  
          */
 126  
         public boolean isUploadFinished();
 127  
 
 128  
         /**
 129  
          * Indicates if the upload has been stopped by the user, or by any upload
 130  
          * error. This method should not be used to know if it's the end of the
 131  
          * upload. To do this, see {@link #isUploadFinished()}
 132  
          * 
 133  
          * @return true if the current upload has been asked to stop by the user,
 134  
          *         false otherwise.
 135  
          */
 136  
         public boolean isUploadStopped();
 137  
 
 138  
         /**
 139  
          * Used by the UploadFileData#uploadFile(java.io.OutputStream, long) for
 140  
          * each uploaded buffer
 141  
          * 
 142  
          * @param nbBytes
 143  
          *            Number of additional bytes that where uploaded.
 144  
          * @param uploadFileData
 145  
          *            The file that is currently being uploade (or null if no file
 146  
          *            is being uploaded)
 147  
          * @throws JUploadException
 148  
          */
 149  
         public void nbBytesUploaded(long nbBytes, UploadFileData uploadFileData)
 150  
                         throws JUploadException;
 151  
 
 152  
         /**
 153  
          * Indicate the current state of the upload, to allow a correct display of
 154  
          * UPLOAD_STATUS_UPLOADED status. the upload progress bar.
 155  
          * 
 156  
          * @param uploadFilePacket
 157  
          *            The current packet. This parameter is mandatory only for the
 158  
          * @param uploadFileData
 159  
          *            The file whose upload begins, is going on or is finished.
 160  
          * @param uploadStatus
 161  
          * @throws JUploadException
 162  
          */
 163  
         public void setUploadStatus(UploadFilePacket uploadFilePacket,
 164  
                         UploadFileData uploadFileData, int uploadStatus)
 165  
                         throws JUploadException;
 166  
 
 167  
         /**
 168  
          * Reaction to the user click on the 'Stop' button, or any action from the
 169  
          * user asking to stop the upload. The upload should go on for the current
 170  
          * file, and stop before starting the next upload request to the server, to
 171  
          * avoid strange problems on the server.
 172  
          */
 173  
         public void stopUpload();
 174  
 
 175  
         /**
 176  
          * This method is called each time a new file is sent to the server. It's
 177  
          * main aim is to allow a proper display of the progress bar. It is public,
 178  
          * as upload is done in another thread, whose class maybe in another
 179  
          * package.
 180  
          * 
 181  
          * @param uploadFilePacket
 182  
          * @param newlyUploadedFileData
 183  
          * @throws JUploadException
 184  
          */
 185  
         public void anotherFileHasBeenSent(UploadFilePacket uploadFilePacket,
 186  
                         UploadFileData newlyUploadedFileData) throws JUploadException;
 187  
 
 188  
         /**
 189  
          * This method is called when the server response for the upload indicates a
 190  
          * success. It is public, as upload is done in another thread, whose class
 191  
          * maybe in another package.
 192  
          * 
 193  
          * @param packet
 194  
          *            The packet of files that was successfully uploaded.
 195  
          * @throws JUploadException
 196  
          */
 197  
         public void currentRequestIsFinished(UploadFilePacket packet)
 198  
                         throws JUploadException;
 199  
 
 200  
 }