String[] uploadIds = req.getParameterValues("uploadId");
res.setHeader("Cache-Control", "no-cache");
ExoContainer container = ExoContainerContext.getCurrentContainer();
UploadService service = (UploadService) container.getComponentInstanceOfType(UploadService.class);
if (action == null || action.length() < 1)
return;
UploadServiceAction uploadActionService = UploadServiceAction.valueOf(action.toUpperCase());
if (uploadActionService == UploadServiceAction.PROGRESS) {
Writer writer = res.getWriter();
if (uploadIds == null)
return;
StringBuilder value = new StringBuilder();
value.append("{\n upload : {");
for (int i = 0; i < uploadIds.length; i++) {
UploadResource upResource = service.getUploadResource(uploadIds[i]);
if (upResource == null)
continue;
if (upResource.getStatus() == UploadResource.FAILED_STATUS) {
UploadLimit limit = service.getUploadLimits().get(uploadIds[i]);
value.append("\n \"").append(uploadIds[i]).append("\": {");
value.append("\n \"status\":").append('\"').append("failed").append("\",");
value.append("\n \"size\":").append('\"').append(limit.getLimit()).append("\",");
value.append("\n \"unit\":").append('\"').append(limit.getUnit()).append("\"");
value.append("\n }");
continue;
}
double percent = 100;
if (upResource.getStatus() == UploadResource.UPLOADING_STATUS) {
percent = (upResource.getUploadedSize() * 100) / upResource.getEstimatedSize();
}
value.append("\n \"").append(uploadIds[i]).append("\": {");
value.append("\n \"percent\":").append('\"').append((int) percent).append("\",");
String fileName = EntityEncoder.FULL.encode(upResource.getFileName());
value.append("\n \"fileName\":").append('\"').append(encodeName(fileName)).append("\"");
value.append("\n }");
if (i < uploadIds.length - 1)
value.append(',');
}
value.append("\n }\n}");
writer.append(value);
} else if (uploadActionService == UploadServiceAction.UPLOAD) {
service.createUploadResource(req);
} else if (uploadActionService == UploadServiceAction.DELETE) {
service.removeUploadResource(uploadIds[0]);
} else if (uploadActionService == UploadServiceAction.ABORT) {
service.removeUploadResource(uploadIds[0]);
}
}