/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.app.webui.json; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.dspace.app.webui.util.FileUploadListener; import org.dspace.app.webui.util.FileUploadRequest; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Context; import com.google.gson.Gson; public class UploadProgressJSON extends JSONRequest { @Override public void doJSONRequest(Context context, HttpServletRequest req, HttpServletResponse resp) throws AuthorizeException, IOException { HttpSession session = req.getSession(false); if (session == null) { return; } FileUploadListener listner = (FileUploadListener) session .getAttribute(FileUploadRequest.FILE_UPLOAD_LISTNER); if (listner == null || listner.getContentLength() == 0) { return; } else { long contentLength = listner.getContentLength(); UploadProgressDTO dto = new UploadProgressDTO(); long bytesRead = listner.getBytesRead(); dto.readBytes = bytesRead; dto.totalBytes = contentLength; Gson gson = new Gson(); resp.getWriter().write(gson.toJson(dto)); if (listner.isCompleted()) { session.removeAttribute(FileUploadRequest.FILE_UPLOAD_LISTNER); } } } } class UploadProgressDTO { long totalBytes; long readBytes; }