package dk.daoas.adressevedligehold.coveragefileupload; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import dk.daoas.adressevedligehold.tasks.TaskManager; /* * */ /** * Servlet implementation class FileUploadServlet */ @WebServlet("/FileUploadServlet") public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; public FileUploadServlet() { super(); } /* * https://commons.apache.org/proper/commons-fileupload/using.html */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Configure a repository (to ensure a secure temp location is used) ServletContext servletContext = this.getServletConfig().getServletContext(); File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); System.out.println( "Path: " + repository.getPath() ); factory.setRepository(repository); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); try { // Parse the request List items = upload.parseRequest(request); if ( items.size() == 0) { System.out.println("No file uploaded"); return; } if ( items.size() >1) { System.out.println("Uploaded " + items.size() + " items"); } String distributor = null; FileItem item = null; boolean writeback = false; for (FileItem i : items) { if (i.isFormField()) { System.out.println("FormField: " + i.getFieldName() + "=" + i.getString() ); switch (i.getFieldName().toLowerCase()) { case "distributor": distributor = i.getString(); break; case "writeback": writeback = Boolean.parseBoolean( i.getString() ); break; default: System.out.println("Unknown form field: " + i.getFieldName() ); } } else { System.out.println("received " + i.getSize() + " bytes in " + i.getName() + " " + i.getContentType()); item = i; } } if (item == null) { System.out.println("No file uploaded"); return; } if (distributor == null || distributor.equals("")) { item.delete(); return; } distributor = distributor.toUpperCase(); AddressSource source = null; switch (distributor) { case "BK": source = new AddressSourceBK( item ); break; case "DAO": source = new AddressSourceDAO( item ); break; case "FD": source = new AddressSourceFD( item ); break; case "NS": source = new AddressSourceNS( item ); break; default: System.out.println("Unknown distributor: " + distributor); item.delete(); return; } TaskManager taskManager = (TaskManager) this.getServletContext().getAttribute(TaskManager.TASKMANAGER); AddressTask task = new AddressTask(source, writeback); taskManager.submitTask(task); } catch (FileUploadException fue) { System.out.println("UploadException: " + fue.getMessage() ); } catch (Exception e) { throw new ServletException(e); } response.getWriter().write("OK"); } }