blob: f7a56012694ceb27799bfb53a61f9d47871a8b1a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2014 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.addons.fileupload.internal;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.rap.addons.fileupload.FileDetails;
import org.eclipse.rap.addons.fileupload.FileUploadEvent;
import org.eclipse.rap.addons.fileupload.FileUploadHandler;
final class FileUploadTracker {
private final FileUploadHandler handler;
private final List<FileDetails> files;
private long contentLength;
private long bytesRead;
private Exception exception;
FileUploadTracker( FileUploadHandler handler ) {
this.handler = handler;
files = new ArrayList<FileDetails>();
}
void addFile( FileDetails details ) {
files.add( details );
}
boolean isEmpty() {
return files.isEmpty();
}
void setContentLength( long contentLength ) {
this.contentLength = contentLength;
}
void setBytesRead( long bytesRead ) {
this.bytesRead = bytesRead;
}
void setException( Exception exception ) {
this.exception = exception;
}
void handleProgress() {
new InternalFileUploadEvent( handler ).dispatchAsProgress();
}
void handleFinished() {
new InternalFileUploadEvent( handler ).dispatchAsFinished();
}
void handleFailed() {
new InternalFileUploadEvent( handler ).dispatchAsFailed();
}
private final class InternalFileUploadEvent extends FileUploadEvent {
private static final long serialVersionUID = 1L;
private InternalFileUploadEvent( FileUploadHandler source ) {
super( source );
}
@Override
public FileDetails[] getFileDetails() {
return files.toArray( new FileDetails[ 0 ] );
}
@Override
public long getContentLength() {
return contentLength;
}
@Override
public long getBytesRead() {
return bytesRead;
}
@Override
public Exception getException() {
return exception;
}
void dispatchAsProgress() {
super.dispatchProgress();
}
void dispatchAsFinished() {
super.dispatchFinished();
}
void dispatchAsFailed() {
super.dispatchFailed();
}
}
}