package org.jbpm.formbuilder.server;
import gwtupload.server.UploadAction;
import gwtupload.server.exceptions.UploadActionException;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.jbpm.formbuilder.server.file.FileException;
import org.jbpm.formbuilder.server.file.FileService;
import org.springframework.web.context.support.WebApplicationContextUtils;
public class FileUploadServlet extends UploadAction {
private static final long serialVersionUID = 560635045151739627L;
private FileService fileService = null;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
fileService = ServiceFactory.getInstance().getFileService();
}
public String executeAction(HttpServletRequest request,
List<FileItem> sessionFiles) throws UploadActionException {
String packageName = request.getParameter("packageName");
for (FileItem item : getSessionFileItems(request)) {
if (!item.isFormField()) {
String fileName = item.getName();
byte[] content = item.get();
if (packageName != null && !"".equals(packageName)) {
// uploadFile called. Store it.
try {
return fileService.storeFile(packageName, fileName, content);
} catch (FileException e) {
request.getSession().getServletContext().log("Couldn't store file", e);
}
} else {
// uploadAction called it from a formItem. Do nothing
}
}
}
super.removeSessionFileItems(request);
return "file(s) uploaded";
}
}