Fixed the problem of progress indicator on file upload progress bar
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-gwt-service@85240 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
2e68827683
commit
5b68d9fb5d
|
@ -76,7 +76,7 @@ public class LocalUploadServlet extends HttpServlet {
|
||||||
ServletFileUpload upload = new ServletFileUpload(factory);
|
ServletFileUpload upload = new ServletFileUpload(factory);
|
||||||
|
|
||||||
|
|
||||||
FileUploadListener uploadListener = new FileUploadListener(fileUploadSession.getFileUploadMonitor());
|
FileUploadListener uploadListener = new FileUploadListener(fileUploadMonitor);
|
||||||
upload.setProgressListener(uploadListener);
|
upload.setProgressListener(uploadListener);
|
||||||
|
|
||||||
FileItem uploadItem = null;
|
FileItem uploadItem = null;
|
||||||
|
|
|
@ -3,8 +3,14 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.portlets.user.td.gwtservice.server.file;
|
package org.gcube.portlets.user.td.gwtservice.server.file;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.apache.commons.fileupload.ProgressListener;
|
import org.apache.commons.fileupload.ProgressListener;
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.server.SessionUtil;
|
||||||
import org.gcube.portlets.user.td.gwtservice.shared.file.FileUploadMonitor;
|
import org.gcube.portlets.user.td.gwtservice.shared.file.FileUploadMonitor;
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.file.FileUploadState;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -14,18 +20,54 @@ import org.gcube.portlets.user.td.gwtservice.shared.file.FileUploadMonitor;
|
||||||
*/
|
*/
|
||||||
public class FileUploadListener implements ProgressListener {
|
public class FileUploadListener implements ProgressListener {
|
||||||
|
|
||||||
|
protected Logger logger=LoggerFactory.getLogger(FileUploadListener.class);
|
||||||
|
protected HttpSession session;
|
||||||
protected FileUploadMonitor fileUploadMonitor;
|
protected FileUploadMonitor fileUploadMonitor;
|
||||||
|
|
||||||
|
private long num100Ks = 0;
|
||||||
|
private long theBytesRead = 0;
|
||||||
|
private long theContentLength = -1;
|
||||||
|
private int whichItem = 0;
|
||||||
|
private int percentDone = 0;
|
||||||
|
private boolean contentLengthKnown = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public FileUploadListener(FileUploadMonitor fileUploadMonitor) {
|
public FileUploadListener(FileUploadMonitor fileUploadMonitor) {
|
||||||
this.fileUploadMonitor=fileUploadMonitor;
|
this.fileUploadMonitor=fileUploadMonitor;
|
||||||
|
//this.session=session;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public void update(long pBytesRead, long pContentLength, int pItems) {
|
public void update(long bytesRead, long contentLength, int items) {
|
||||||
fileUploadMonitor.setTotalLenght(pContentLength);
|
if (contentLength > -1) {
|
||||||
fileUploadMonitor.setElaboratedLenght(pBytesRead);
|
contentLengthKnown = true;
|
||||||
|
}
|
||||||
|
theBytesRead = bytesRead;
|
||||||
|
theContentLength = contentLength;
|
||||||
|
whichItem = items;
|
||||||
|
|
||||||
|
long nowNum100Ks = bytesRead / 100000;
|
||||||
|
// Only run this code once every 100K
|
||||||
|
if (nowNum100Ks > num100Ks) {
|
||||||
|
num100Ks = nowNum100Ks;
|
||||||
|
if (contentLengthKnown) {
|
||||||
|
percentDone = (int) Math.round(100.00 * bytesRead / contentLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//FileUploadSession fileUploadSession=SessionUtil.getFileUploadSession(session);
|
||||||
|
//FileUploadMonitor fileUploadMonitor=fileUploadSession.getFileUploadMonitor();
|
||||||
|
fileUploadMonitor.setTotalLenght(contentLength);
|
||||||
|
fileUploadMonitor.setElaboratedLenght(bytesRead);
|
||||||
|
fileUploadMonitor.setPercentDone(Float.valueOf(percentDone)/100);
|
||||||
|
|
||||||
|
fileUploadMonitor.setState(FileUploadState.INPROGRESS);
|
||||||
|
logger.debug("File Upload: "+fileUploadMonitor.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ public class FileUploadMonitor implements Serializable {
|
||||||
protected FileUploadState state;
|
protected FileUploadState state;
|
||||||
protected String failureReason;
|
protected String failureReason;
|
||||||
protected String failureDetails;
|
protected String failureDetails;
|
||||||
|
protected float percentDone;
|
||||||
|
|
||||||
public FileUploadMonitor(){
|
public FileUploadMonitor(){
|
||||||
state = FileUploadState.INPROGRESS;
|
state = FileUploadState.INPROGRESS;
|
||||||
|
@ -30,6 +31,7 @@ public class FileUploadMonitor implements Serializable {
|
||||||
this.elaboratedLenght = elaboratedLenght;
|
this.elaboratedLenght = elaboratedLenght;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.failureReason = failureReason;
|
this.failureReason = failureReason;
|
||||||
|
this.percentDone=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -58,6 +60,22 @@ public class FileUploadMonitor implements Serializable {
|
||||||
return failureDetails;
|
return failureDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getPercentDone() {
|
||||||
|
return percentDone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPercentDone(float percentDone) {
|
||||||
|
this.percentDone = percentDone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFailureReason(String failureReason) {
|
||||||
|
this.failureReason = failureReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFailureDetails(String failureDetails) {
|
||||||
|
this.failureDetails = failureDetails;
|
||||||
|
}
|
||||||
|
|
||||||
public void setState(FileUploadState state)
|
public void setState(FileUploadState state)
|
||||||
{
|
{
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
@ -93,24 +111,13 @@ public class FileUploadMonitor implements Serializable {
|
||||||
this.failureDetails = failureDetails;
|
this.failureDetails = failureDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
return "FileUploadMonitor [totalLenght=" + totalLenght
|
||||||
builder.append("OperationProgress [totalLenght=");
|
+ ", elaboratedLenght=" + elaboratedLenght + ", state=" + state
|
||||||
builder.append(totalLenght);
|
+ ", failureReason=" + failureReason + ", failureDetails="
|
||||||
builder.append(", elaboratedLenght=");
|
+ failureDetails + ", percentDone=" + percentDone + "]";
|
||||||
builder.append(elaboratedLenght);
|
|
||||||
builder.append(", state=");
|
|
||||||
builder.append(state);
|
|
||||||
builder.append(", failureReason=");
|
|
||||||
builder.append(failureReason);
|
|
||||||
builder.append(", failureDetails=");
|
|
||||||
builder.append(failureDetails);
|
|
||||||
builder.append("]");
|
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue