001 /*
002 * This file is part of the Echo Point Project. This project is a
003 * collection of Components that have extended the Echo Web Application
004 * Framework Version 3.
005 *
006 * Version: MPL 1.1
007 *
008 * The contents of this file are subject to the Mozilla Public License Version
009 * 1.1 (the "License"); you may not use this file except in compliance with
010 * the License. You may obtain a copy of the License at
011 * http://www.mozilla.org/MPL/
012 *
013 * Software distributed under the License is distributed on an "AS IS" basis,
014 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
015 * for the specific language governing rights and limitations under the
016 * License.
017 */
018 package echopoint.tucana.event;
019
020 import echopoint.tucana.FileUploadSelector;
021
022 import java.util.logging.Level;
023 import java.util.logging.Logger;
024
025 /**
026 * An adapter class for the {@link UploadCallback} interface.
027 *
028 * <p><b>Note:</b> Development of this component was sponsored by <a
029 * href='http://tcnbroadcasting.com/index.jsp' target='_top'>TCN
030 * Broadcasting</a>. We are grateful for their support and sponsorship.</p>
031 *
032 * @author Rakesh Vidyadharan 2008-11-4
033 * @version $Id: UploadCallbackAdapter.java 106 2009-02-03 16:00:33Z sptrakesh $
034 */
035 public class UploadCallbackAdapter implements UploadCallback
036 {
037 private static final long serialVersionUID = 1l;
038
039 /** The logger used to log events. */
040 protected static final Logger logger = Logger.getAnonymousLogger();
041
042 /** The logging level to use. */
043 protected Level level;
044
045 /** The last upload event that was received. */
046 protected UploadEvent event;
047
048 /** The current upload index being processed. */
049 protected String uploadIndex = "";
050
051 /**
052 * Default constructor. Sets logging level to {@link
053 * java.util.logging.Level#FINE}.
054 */
055 public UploadCallbackAdapter()
056 {
057 this.level = Level.FINE;
058 }
059
060 /**
061 * Create a new instance with the specified logging level.
062 *
063 * @param level The logging level to set.
064 */
065 public UploadCallbackAdapter( final Level level )
066 {
067 this.level = level;
068 }
069
070 /**
071 * Indicates a file upload has been started.
072 *
073 * @param event the event
074 */
075 public void uploadStarted( final UploadStartEvent event )
076 {
077 this.uploadIndex = event.getIndex();
078 this.event = event;
079 logger.log( level, "Upload started for event: " + event.getIndex() +
080 " fileName: " + event.getFileName() +
081 " contentType: " + event.getContentType() );
082 }
083
084 /**
085 * Indicates a file upload has been canceled.
086 *
087 * @param event the event
088 */
089 public void uploadCancelled( final UploadCancelEvent event )
090 {
091 this.event = event;
092 logger.log( level, "Upload cancelled for event: " + event.getIndex() +
093 " fileName: " + event.getFileName() +
094 " contentType: " + event.getContentType(), event.getException() );
095 ( (FileUploadSelector) event.getSource() ).removeTaskQueue();
096 }
097
098 /**
099 * Indicates that a file upload was rejected by the server since the client
100 * attempted to send restricted content.
101 *
102 * @param event The event that was generated.
103 */
104 public void uploadDisallowed( final InvalidContentTypeEvent event )
105 {
106 this.event = event;
107 logger.log( level, "Upload disallowed for event: " + event.getIndex() +
108 " fileName: " + event.getFileName() +
109 "with contentType: " + event.getContentType() +
110 " is not of allowed type." );
111 ( (FileUploadSelector) event.getSource() ).removeTaskQueue();
112 }
113
114 /**
115 * Indicates a file upload has progressed.
116 *
117 * @param event the event
118 */
119 public void uploadProgressed( final UploadProgressEvent event )
120 {
121 if ( ( uploadIndex.equals( event.getIndex() ) ) &&
122 ( this.event instanceof UploadFinishEvent ) )
123 {
124 return;
125 }
126
127 this.event = event;
128 logger.log( level, "Upload progress read bytes : "
129 + event.getProgress().getBytesRead() );
130 }
131
132 /**
133 * Call back method invoked once an upload event completes.
134 *
135 * @param event The event that has completed.
136 */
137 public void uploadSucceeded( final UploadFinishEvent event )
138 {
139 this.event = event;
140 logger.log( level, "Upload completed for event: " + event.getIndex() +
141 " fileName: " + event.getFileName() + " size: " + event.getFileSize() +
142 " contentType: " + event.getContentType() );
143 ( (FileUploadSelector) event.getSource() ).removeTaskQueue();
144 }
145
146 /**
147 * Call back method when an upload event fails.
148 *
149 * @param event The event that has failed.
150 */
151 public void uploadFailed( final UploadFailEvent event )
152 {
153 if ( ( uploadIndex.equals( event.getIndex() ) ) &&
154 ( this.event instanceof InvalidContentTypeEvent ) )
155 {
156 return;
157 }
158
159 this.event = event;
160 logger.log( level, "Upload failed for event: " + event.getIndex(),
161 event.getException() );
162 ( (FileUploadSelector) event.getSource() ).removeTaskQueue();
163 }
164
165 /**
166 * A convenience method to return the last event received by the callback
167 * handler. Can be used to gain access to the input stream (provided it has
168 * not been closed).
169 *
170 * @return The upload event that was last processed by the handler.
171 */
172 public UploadEvent getEvent()
173 {
174 return this.event;
175 }
176
177 /**
178 * Accessor for property 'level'.
179 *
180 * @return Value for property 'level'.
181 */
182 public Level getLevel()
183 {
184 return level;
185 }
186
187 /**
188 * Mutator for property 'level'.
189 *
190 * @param level Value to set for property 'level'.
191 */
192 public void setLevel( final Level level )
193 {
194 this.level = level;
195 }
196 }