Example usage for org.apache.commons.fileupload.servlet ServletFileUpload setSizeMax

List of usage examples for org.apache.commons.fileupload.servlet ServletFileUpload setSizeMax

Introduction

In this page you can find the example usage for org.apache.commons.fileupload.servlet ServletFileUpload setSizeMax.

Prototype

public void setSizeMax(long sizeMax) 

Source Link

Document

Sets the maximum allowed upload size.

Usage

From source file:psiprobe.controllers.deploy.UploadWarController.java

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
        throws Exception {

    if (FileUploadBase.isMultipartContent(new ServletRequestContext(request))) {

        File tmpWar = null;/*from www .  j  a va2s.c  om*/
        String contextName = null;
        boolean update = false;
        boolean compile = false;
        boolean discard = false;

        // parse multipart request and extract the file
        FileItemFactory factory = new DiskFileItemFactory(1048000,
                new File(System.getProperty("java.io.tmpdir")));
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setSizeMax(-1);
        upload.setHeaderEncoding(StandardCharsets.UTF_8.name());
        try {
            List<FileItem> fileItems = upload.parseRequest(request);
            for (FileItem fi : fileItems) {
                if (!fi.isFormField()) {
                    if (fi.getName() != null && fi.getName().length() > 0) {
                        tmpWar = new File(System.getProperty("java.io.tmpdir"),
                                FilenameUtils.getName(fi.getName()));
                        fi.write(tmpWar);
                    }
                } else if ("context".equals(fi.getFieldName())) {
                    contextName = fi.getString();
                } else if ("update".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
                    update = true;
                } else if ("compile".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
                    compile = true;
                } else if ("discard".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
                    discard = true;
                }
            }
        } catch (Exception e) {
            logger.error("Could not process file upload", e);
            request.setAttribute("errorMessage", getMessageSourceAccessor()
                    .getMessage("probe.src.deploy.war.uploadfailure", new Object[] { e.getMessage() }));
            if (tmpWar != null && tmpWar.exists() && !tmpWar.delete()) {
                logger.error("Unable to delete temp war file");
            }
            tmpWar = null;
        }

        String errMsg = null;

        if (tmpWar != null) {
            try {
                if (tmpWar.getName().endsWith(".war")) {

                    if (contextName == null || contextName.length() == 0) {
                        String warFileName = tmpWar.getName().replaceAll("\\.war$", "");
                        contextName = "/" + warFileName;
                    }

                    contextName = getContainerWrapper().getTomcatContainer().formatContextName(contextName);

                    /*
                     * pass the name of the newly deployed context to the presentation layer using this name
                     * the presentation layer can render a url to view compilation details
                     */
                    String visibleContextName = "".equals(contextName) ? "/" : contextName;
                    request.setAttribute("contextName", visibleContextName);

                    if (update && getContainerWrapper().getTomcatContainer().findContext(contextName) != null) {

                        logger.debug("updating {}: removing the old copy", contextName);
                        getContainerWrapper().getTomcatContainer().remove(contextName);
                    }

                    if (getContainerWrapper().getTomcatContainer().findContext(contextName) == null) {
                        // move the .war to tomcat application base dir
                        String destWarFilename = getContainerWrapper().getTomcatContainer()
                                .formatContextFilename(contextName);
                        File destWar = new File(getContainerWrapper().getTomcatContainer().getAppBase(),
                                destWarFilename + ".war");

                        FileUtils.moveFile(tmpWar, destWar);

                        // let Tomcat know that the file is there
                        getContainerWrapper().getTomcatContainer().installWar(contextName,
                                new URL("jar:" + destWar.toURI().toURL().toString() + "!/"));

                        Context ctx = getContainerWrapper().getTomcatContainer().findContext(contextName);
                        if (ctx == null) {
                            errMsg = getMessageSourceAccessor().getMessage("probe.src.deploy.war.notinstalled",
                                    new Object[] { visibleContextName });
                        } else {
                            request.setAttribute("success", Boolean.TRUE);
                            // Logging action
                            Authentication auth = SecurityContextHolder.getContext().getAuthentication();
                            String name = auth.getName(); // get username logger
                            logger.info(getMessageSourceAccessor().getMessage("probe.src.log.deploywar"), name,
                                    contextName);
                            if (discard) {
                                getContainerWrapper().getTomcatContainer().discardWorkDir(ctx);
                                logger.info(getMessageSourceAccessor().getMessage("probe.src.log.discardwork"),
                                        name, contextName);
                            }
                            if (compile) {
                                Summary summary = new Summary();
                                summary.setName(ctx.getName());
                                getContainerWrapper().getTomcatContainer().listContextJsps(ctx, summary, true);
                                request.getSession(false).setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE,
                                        summary);
                                request.setAttribute("compileSuccess", Boolean.TRUE);
                            }
                        }

                    } else {
                        errMsg = getMessageSourceAccessor().getMessage("probe.src.deploy.war.alreadyExists",
                                new Object[] { visibleContextName });
                    }
                } else {
                    errMsg = getMessageSourceAccessor().getMessage("probe.src.deploy.war.notWar.failure");
                }
            } catch (Exception e) {
                errMsg = getMessageSourceAccessor().getMessage("probe.src.deploy.war.failure",
                        new Object[] { e.getMessage() });
                logger.error("Tomcat throw an exception when trying to deploy", e);
            } finally {
                if (errMsg != null) {
                    request.setAttribute("errorMessage", errMsg);
                }
                if (tmpWar.exists() && !tmpWar.delete()) {
                    logger.error("Unable to delete temp war file");
                }
            }
        }
    }
    return new ModelAndView(new InternalResourceView(getViewName()));
}

From source file:rva.administrator.ASRepFileUpload.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, java.io.IOException {
    // Check that we have a file upload request
    isMultipart = ServletFileUpload.isMultipartContent(request);
    response.setContentType("text/html");
    java.io.PrintWriter out = response.getWriter();
    if (!isMultipart) {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<p>No file uploaded</p>");
        out.println("</body>");
        out.println("</html>");
        return;/*w ww  .  j av  a 2  s  .  c  om*/
    }
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // maximum size that will be stored in memory
    factory.setSizeThreshold(maxMemSize);
    // Location to save data that is larger than maxMemSize.
    factory.setRepository(new File("c:\\temp"));
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // maximum file size to be uploaded.
    upload.setSizeMax(maxFileSize);
    try {
        // Parse the request to get file items.
        List fileItems = upload.parseRequest(request);
        // Process the uploaded file items
        Iterator i = fileItems.iterator();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");
        out.println("</head>");
        out.println("<body>");
        while (i.hasNext()) {
            FileItem fi = (FileItem) i.next();
            if (!fi.isFormField()) {
                // Get the uploaded file parameters
                String fieldName = fi.getFieldName();
                String fileName = fi.getName();
                String contentType = fi.getContentType();
                boolean isInMemory = fi.isInMemory();
                long sizeInBytes = fi.getSize();
                // Write the file
                if (fileName.lastIndexOf("\\") >= 0) {
                    file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")));
                } else {
                    file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1));
                }
                fi.write(file);
                String upfile = filePath + fileName;
                ReadExcels.readExcels(upfile);
                out.println("<html>");
                out.println("<body>");
                HttpSession session = request.getSession();
                response.sendRedirect("fileuploading.jsp");
                session.setAttribute("filepathas", upfile);
                // RequestDispatcher rd=request.getRequestDispatcher("fileuploading.jsp");
                // rd.include(request, response);
                //out.println("Uploaded Filename:" +upfile+ "<br>");
                out.println("</body>");
                out.println("</html>");
            }
        }
        out.println("</body>");
        out.println("</html>");
    } catch (Exception ex) {
        System.out.println(ex);
    }
}

From source file:rva.administrator.DTTRepFileUpload.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, java.io.IOException {
    // Check that we have a file upload request
    isMultipart = ServletFileUpload.isMultipartContent(request);
    response.setContentType("text/html");
    java.io.PrintWriter out = response.getWriter();
    if (!isMultipart) {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<p>No file uploaded</p>");
        out.println("</body>");
        out.println("</html>");
        return;//  ww w  .ja  v a2s .c  o m
    }
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // maximum size that will be stored in memory
    factory.setSizeThreshold(maxMemSize);
    // Location to save data that is larger than maxMemSize.
    factory.setRepository(new File("c:\\temp"));
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // maximum file size to be uploaded.
    upload.setSizeMax(maxFileSize);
    try {
        // Parse the request to get file items.
        List fileItems = upload.parseRequest(request);
        // Process the uploaded file items
        Iterator i = fileItems.iterator();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");
        out.println("</head>");
        out.println("<body>");
        while (i.hasNext()) {
            FileItem fi = (FileItem) i.next();
            if (!fi.isFormField()) {
                // Get the uploaded file parameters
                String fieldName = fi.getFieldName();
                String fileName = fi.getName();
                String contentType = fi.getContentType();
                boolean isInMemory = fi.isInMemory();
                long sizeInBytes = fi.getSize();
                // Write the file
                if (fileName.lastIndexOf("\\") >= 0) {
                    file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")));
                } else {
                    file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1));
                }
                fi.write(file);
                String upfile = filePath + fileName;

                new ReadDttReport().readDTTReport(upfile);
                out.println("<html>");
                out.println("<body>");
                HttpSession session = request.getSession();
                response.sendRedirect("dttreportfileupload.jsp");
                session.setAttribute("filepathdtt", upfile);
                // RequestDispatcher rd=request.getRequestDispatcher("fileuploading.jsp");
                // rd.include(request, response);
                //out.println("Uploaded Filename:" +upfile+ "<br>");
                out.println("</body>");
                out.println("</html>");
            }
        }
        out.println("</body>");
        out.println("</html>");
    } catch (Exception ex) {
        System.out.println(ex);
    }
}

From source file:rva.taskinsert.RetelLog.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, java.io.IOException {
    // Check that we have a file upload request
    HttpSession session = request.getSession();
    LogBean lb = (LogBean) session.getAttribute("currloginsession");
    String performdate = (String) session.getAttribute("logindate");
    String empname = lb.getAuditorname();
    isMultipart = ServletFileUpload.isMultipartContent(request);
    response.setContentType("text/html");

    java.io.PrintWriter out = response.getWriter();
    // out.println(isMultipart);
    if (!isMultipart) {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<p>No file uploaded</p>");
        out.println("</body>");
        out.println("</html>");
        return;/*from w ww.  ja  va  2 s .  c  o  m*/
    }

    DiskFileItemFactory factory = new DiskFileItemFactory();
    // maximum size that will be stored in memory
    factory.setSizeThreshold(maxMemSize);
    // Location to save data that is larger than maxMemSize.
    factory.setRepository(new File("c:\\temp"));
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // maximum file size to be uploaded.
    upload.setSizeMax(maxFileSize);

    try {
        // Parse the request to get file items.

        List fileItems = upload.parseRequest(request);
        // Process the uploaded file items
        Iterator i = fileItems.iterator();

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");
        out.println("</head>");
        out.println("<body>");
        while (i.hasNext()) {

            FileItem fi = (FileItem) i.next();

            if (!fi.isFormField())

            {

                // Get the uploaded file parameters
                String fieldName = fi.getFieldName();
                String fileName = fi.getName();
                String contentType = fi.getContentType();
                boolean isInMemory = fi.isInMemory();
                long sizeInBytes = fi.getSize();
                // Write the file

                if (fileName.lastIndexOf("\\") >= 0) {
                    file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")));
                } else {
                    file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1));
                }
                fi.write(file);
                String upfile = filePath + fileName;
                RetFileRead.readExcels(upfile, empname, performdate);
                out.println("<html>");
                out.println("<body>");
                //HttpSession session=request.getSession();
                response.sendRedirect("reteltaskinsert.jsp");
                session.setAttribute("filepathret", upfile);
                // RequestDispatcher rd=request.getRequestDispatcher("fileuploading.jsp");
                // rd.include(request, response);
                //out.println("Uploaded Filename:" +upfile+ "<br>");
                out.println("</body>");
                out.println("</html>");
            }
        }
        out.println("File3");
        out.println("</body>");
        out.println("</html>");
    } catch (Exception ex) {
        System.out.println(ex);
    }
}

From source file:sai_cas.servlet.CrossMatchServlet.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, java.io.IOException {

    PrintWriter out = response.getWriter();

    String cat = null, tab = null, radString = null, raColumn = null, decColumn = null, formatString = null;
    formats format;//  w  w  w.  java  2 s .  com

    List<FileItem> fileItemList = null;

    FileItemFactory factory = new DiskFileItemFactory();
    try {
        ServletFileUpload sfu = new ServletFileUpload(factory);
        sfu.setSizeMax(50000000);
        /* Request size <= 50Mb */
        fileItemList = sfu.parseRequest(request);

    } catch (FileUploadException e) {
        throw new ServletException(e.getMessage());
        /* Nothing ...*/
    }

    FileItem fi = null;

    for (FileItem fi0 : fileItemList) {
        if (fi0.getFieldName().equals("file"))//(!fi0.isFormField())
        {
            fi = fi0;
        }
        if (fi0.getFieldName().equals("tab"))//(!fi0.isFormField())
        {
            tab = fi0.getString();
        }
        if (fi0.getFieldName().equals("cat"))//(!fi0.isFormField())
        {
            cat = fi0.getString();
        }
        if (fi0.getFieldName().equals("rad"))//(!fi0.isFormField())
        {
            radString = fi0.getString();
        }
        if (fi0.getFieldName().equals("racol"))//(!fi0.isFormField())
        {
            raColumn = fi0.getString();
        }
        if (fi0.getFieldName().equals("deccol"))//(!fi0.isFormField())
        {
            decColumn = fi0.getString();
        }
        if (fi0.getFieldName().equals("format"))//(!fi0.isFormField())
        {
            formatString = fi0.getString();
        }
    }
    if ((formatString == null) || (formatString.equalsIgnoreCase("votable"))) {
        format = formats.VOTABLE;
    } else if (formatString.equalsIgnoreCase("CSV")) {
        format = formats.CSV;
    } else {
        format = formats.VOTABLE;
    }

    QueryResultsOutputter qro = null;
    CSVQueryResultsOutputter csvqro = null;
    VOTableQueryResultsOutputter voqro = null;
    switch (format) {
    case CSV:
        response.setContentType("text/csv");
        csvqro = new CSVQueryResultsOutputter(null);
        qro = csvqro;
        break;
    case VOTABLE:
        response.setContentType("text/xml");
        voqro = new VOTableQueryResultsOutputter();
        qro = voqro;
        break;
    }

    File uploadedFile = null;
    Connection conn = null;
    DBInterface dbi = null;

    try {
        double rad = 0;
        String inputFilename = fi.getName();
        rad = Double.parseDouble(radString);

        if (fi == null) {
            throw new CrossMatchServletException("File should be specified" + fileItemList.size());
        }
        long size = fi.getSize();

        if (size > 10000000) {
            throw new CrossMatchServletException("File is too big");
        }
        if (size == 0) {
            throw new CrossMatchServletException("File must not be empty");
        }

        if (format.equals(formats.CSV)) {
            if ((raColumn == null) || (decColumn == null)) {
                throw new CrossMatchServletException(
                        "When you use the CSV format, you must specify which columns contain RA and DEC");
            }
        }

        uploadedFile = File.createTempFile("crossmatch", ".dat", new File("/tmp/"));
        try {
            fi.write(uploadedFile);
        } catch (Exception e) {
            throw new CrossMatchServletException("Error in writing your data in the temporary file");
        }

        logger.debug("File written");
        String[] userPasswd = sai_cas.Parameters.getDefaultTempDBUserPasswd();
        String tempUser = userPasswd[0];
        String tempPasswd = userPasswd[1];
        conn = DBConnection.getPooledPerUserConnection(tempUser, tempPasswd);
        dbi = new DBInterface(conn, tempUser);
        Votable vot = null;
        switch (format) {
        case CSV:
            vot = Votable.getVOTableFromCSV(uploadedFile);
            if ((!vot.checkColumnExistance(raColumn)) || (!vot.checkColumnExistance(decColumn))) {
                throw new CrossMatchServletException(
                        "The column names specified as RA and DEC should be present in the CSV file");
            }
            break;
        case VOTABLE:
            vot = new Votable(uploadedFile);
            break;
        }
        vot.randomizeResourceName();
        vot.randomizeTableName();
        String userDataSchema = dbi.getUserDataSchemaName();
        String tableName = vot.insertDataToDB(dbi, userDataSchema);
        dbi.analyze(userDataSchema, tableName);
        String[] raDecArray = dbi.getRaDecColumns(cat, tab);
        String[] raDecArray1 = null;
        switch (format) {
        case VOTABLE:
            raDecArray1 = dbi.getRaDecColumnsFromUCD(userDataSchema, tableName);
            if (raDecArray1 == null) {
                throw new CrossMatchServletException("Error occured: "
                        + "You must have the columns in the table having the UCD of alpha or delta ('POS_EQ_RA_MAIN', 'POS_EQ_DEC_MAIN') to do the crossmatch");
            }
            break;
        case CSV:
            raDecArray1 = new String[2];
            raDecArray1[0] = raColumn;
            raDecArray1[1] = decColumn;
        }

        String outputFilename = cat + "." + (tab == null ? "" : tab) + "_"
                + String.format(Locale.US, "%.4f", rad) + "_" + inputFilename;

        response.setHeader("Content-Disposition", "attachment; filename=" + outputFilename);

        dbi.executeQuery("select * from " + userDataSchema + "." + tableName + " AS a LEFT JOIN " + cat + "."
                + tab + " AS b " + "ON q3c_join(a." + raDecArray1[0] + ",a." + raDecArray1[1] + ",b."
                + raDecArray[0] + ",b." + raDecArray[1] + "," + rad + ")");
        if (format.equals(formats.VOTABLE)) {
            voqro.setResource(cat + "_" + fi.getName());
            voqro.setResourceDescription("This is the table obtained by " + "crossmatching the table " + cat
                    + "." + tab + " with the " + "user supplied table from the file " + fi.getName() + "\n"
                    + "Radius of the crossmatch: " + rad + "deg");
            voqro.setTable("main");
        }
        qro.print(out, dbi);
    } catch (VotableException e) {
        qro.printError(out, "Error occured: " + e.getMessage()
                + "Cannot read the VOTable, probably it is not well formed (remember that you must have 'xmlns=\"http://www.ivoa.net/xml/VOTable/v1.1\"' in the VOTABLE tag)");
    } catch (NumberFormatException e) {
        qro.printError(out, "Error occured: " + e.getMessage());
    } catch (CrossMatchServletException e) {
        qro.printError(out, "Error occured: " + e.getMessage());
    } catch (DBException e) {
        logger.error("DBException " + e);
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        qro.printError(out, "Error occured: " + e + "\nCause: " + e.getCause() + "\nTrace: " + sw);
    } catch (SQLException e) {
        logger.error("SQLException " + e);
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        qro.printError(out, "Error occured: " + e + "\nCause: " + e.getCause() + "\nTrace: " + sw);
    } finally {
        DBInterface.close(dbi, conn, false);
        /* Always rollback */
        try {
            if (uploadedFile != null) {
                uploadedFile.delete();
            }
        } catch (Exception e) {
            logger.error("Failed to delete the temporary file: " + uploadedFile.getCanonicalPath());
        }
    }

}

From source file:sai_cas.servlet.UploadServlet.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, java.io.IOException {

    PrintWriter out = response.getWriter();
    String user = null, password = null;
    String catalogString = null, formatString = null;
    File uploadedFile = null;//  w w  w.  j a  va  2s  .  com
    Connection conn = null;
    DBInterface dbi = null;

    List<FileItem> fileItemList = null;

    FileItemFactory factory = new DiskFileItemFactory();
    try {
        ServletFileUpload sfu = new ServletFileUpload(factory);
        sfu.setSizeMax(50000000);
        /* Request size <= 50Mb */
        fileItemList = sfu.parseRequest(request);

    } catch (FileUploadException e) {
        throw new ServletException(e.getMessage());
        /* Nothing ...*/
    }

    FileItem fi = null;

    for (FileItem fi0 : fileItemList) {
        if (fi0.getFieldName().equals("file"))//(!fi0.isFormField())
        {
            fi = fi0;
        }
        if (fi0.getFieldName().equals("user"))//(!fi0.isFormField())
        {
            user = fi0.getString();
        }
        if (fi0.getFieldName().equals("password"))//(!fi0.isFormField())
        {
            password = fi0.getString();
        }
        /*         if (fi0.getFieldName().equals("rad"))//(!fi0.isFormField())
                 {
                    radString = fi0.getString();
                 }
                 if (fi0.getFieldName().equals("racol"))//(!fi0.isFormField())
                 {
                    raColumn = fi0.getString();
                 }
                 if (fi0.getFieldName().equals("deccol"))//(!fi0.isFormField())
                 {
                    decColumn = fi0.getString();
                 }
        */
        if (fi0.getFieldName().equals("format"))//(!fi0.isFormField())
        {
            formatString = fi0.getString();
        }
    }
    try {
        Votable vot;

        if (fi == null) {
            throw new ServletException("File must be specified" + fileItemList.size());
        }
        if (user == null) {
            throw new ServletException("User name must be specified" + fileItemList.size());
        }
        if (password == null) {
            throw new ServletException("Password must be specified" + fileItemList.size());
        }

        long size = fi.getSize();

        if (size > 10000000) {
            throw new UploadServletException("File is too big");
        }
        if (size == 0) {
            throw new UploadServletException("File must not be empty");
        }
        uploadedFile = File.createTempFile("crossmatch", ".dat", new File("/tmp/"));
        try {
            fi.write(uploadedFile);
        } catch (Exception e) {
            throw new UploadServletException("Error in writing your data in the temporary file");
        }

        logger.debug("File written");

        try {
            conn = DBConnection.getPooledPerUserConnection(user, password);
            dbi = new DBInterface(conn, user);
            String userDataSchema = dbi.getUserDataSchemaName();
            vot = new Votable(uploadedFile);
            vot.insertDataToDB(dbi, userDataSchema);
        } catch (SQLException e) {
            logger.error("Got an exception... ", e);
            throw new UploadServletException(e.getMessage());
        } catch (VotableException e) {
            logger.error("Got an Votable exception... ", e);
            throw new UploadServletException(e.getMessage());
        } catch (DBException e) {
            logger.error("Got an DB exception... ", e);
            throw new UploadServletException(e.getMessage());
        }
        DBInterface.close(dbi, conn);
        out.println("Success");
    } catch (UploadServletException e) {
        out.println("Upload failed: " + e.getMessage());
        DBInterface.close(dbi, conn, false);
    } finally {
        try {
            uploadedFile.delete();
        } catch (Exception e) {
        }
    }
}

From source file:sbml.test.UploadUnzipTest.java

/**
 * Interface function invoked by uploadresults.jsp.
 *///from www.  j  av a2s. c om
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // Store these because they're unique per session & we need them often.

    httpRequest = request;
    httpResponse = response;

    OnlineSTS.logInvocation(request);

    // An upload from uploadresults.jsp is supposed to be a multipart
    // request.  If that's not what we got here, toss an error.

    if (!ServletFileUpload.isMultipartContent(request)) {
        propagateError(SERVER_ERROR, "Didn't get multipart content.");
        return;
    }

    // Create the user's upload directory.

    uploadDir = createUploadDir();

    // Set up objects that will extract the user's upload.

    refCasesDir = getReferenceCasesDir();
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setRepository(uploadDir);
    factory.setSizeThreshold(1 * 1024 * 1024); // In bytes.

    ServletFileUpload reqHandler = new ServletFileUpload(factory);

    // Result files for the current 927 test suite cases adds up to ~1
    // MB.  Adding some room for growth, if we get something > 10 MB,
    // something's wrong.

    reqHandler.setSizeMax(10 * 1024 * 1024);

    // Unzip the user's uploaded archive.  This returns an ordered list
    // of the CSV file names extracted as a result.

    TreeSet<UserTestCase> userCases = unzipUserArchive(reqHandler);

    // If we managed to extract data files from the user's upload, test
    // them, get the results, & dispatch them to the results JSP page.

    if (userCases != null)
        try {
            TreeMap<Integer, UserTestResult> results = performAnalysis(userCases);
            OnlineSTS.logInfo(request, "Returning results to user.");
            httpRequest.setAttribute("testResults", results);
            RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(RESULTS_PAGE);
            dispatcher.forward(httpRequest, httpResponse);

            /* In the future, if rewrite things to use a redirect:
                    
            String where = OnlineSTS.getServiceRootURL(request) + RESULTS_PAGE;
            response.setStatus(307);
            response.setHeader("Location", where);
            response.sendRedirect(where);
            */
        } catch (Exception e) {
            e.printStackTrace();
            httpResponse.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        }
}

From source file:servlet.BPMNAnimationServlet.java

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    PrintWriter out = null;/*from   www .  j  a va  2  s.  c  om*/
    List<Log> logs = new ArrayList<>();
    Set<XLog> xlogs = new HashSet<>();
    //Set<XLog> optimizedLogs = new HashSet<>();
    String jsonData = "";
    Definitions bpmnDefinition = null;

    if (!ServletFileUpload.isMultipartContent(req)) {
        res.getWriter().println("Does not support!");
        // if not, we stop here
        return;
    }

    /*
     * ------------------------------------------
     * Import event log files
     * logs variable contains list of imported logs
     * ------------------------------------------
     */
    // configures some settings

    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(THRESHOLD_SIZE);
    factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setFileSizeMax(MAX_FILE_SIZE);
    upload.setSizeMax(REQUEST_SIZE);

    // constructs the directory path to store upload file
    String uploadPath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIRECTORY;
    // creates the directory if it does not exist
    File uploadDir = new File(uploadPath);
    if (!uploadDir.exists()) {
        uploadDir.mkdir();
    }

    try {

        // parses the request's content to extract file data
        List<FileItem> formItems = upload.parseRequest(req);
        Iterator iter = formItems.iterator();

        // iterates over form's fields
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();

            // processes only fields that are not form fields
            if (!item.isFormField()) {
                String fileName = new File(item.getName()).getName();
                String filePath = uploadPath + File.separator + fileName;
                File storeFile = new File(filePath);

                // saves the file on disk
                item.write(storeFile);
                LOGGER.info("Finish writing uploaded file to temp dir: " + filePath);

                LOGGER.info("Start importing file: " + filePath);
                item.getInputStream();
                OpenLogFilePlugin logImporter = new OpenLogFilePlugin();
                XLog xlog = (XLog) logImporter.importFile(storeFile);

                // color field must follow the log file
                item = (FileItem) iter.next();
                assert item.isFormField();
                assert "color".equals(item.getFieldName());
                LOGGER.info("Log color: " + item.getString());
                String color = item.getString();

                // Record the log
                Log log = new Log();
                log.fileName = fileName;
                log.xlog = xlog;
                log.color = item.getString();
                logs.add(log);
                xlogs.add(xlog);
            } else {
                if (item.getFieldName().equals("json")) {
                    jsonData = item.getString();
                }
            }
        }

        /*
        * ------------------------------------------
        * Convert JSON map to BPMN objects
        * ------------------------------------------
        */
        LOGGER.info("Then, convert JSON to BPMN map objects");
        if (!jsonData.equals("")) {
            bpmnDefinition = this.getBPMNfromJson(jsonData);
            LOGGER.info("BPMN Diagram Definition" + bpmnDefinition.toString());
        } else {
            LOGGER.info("JSON data sent to server is empty");
        }

        /*
        * ------------------------------------------
        * Optimize logs and process model
        * ------------------------------------------
        */
        Optimizer optimizer = new Optimizer();
        for (Log log : logs) {
            //optimizedLogs.add(optimizer.optimizeLog(log.xlog));
            log.xlog = optimizer.optimizeLog(log.xlog);
        }
        bpmnDefinition = optimizer.optimizeProcessModel(bpmnDefinition);

        /*
        * ------------------------------------------
        * Check BPMN diagram validity and replay log
        * ------------------------------------------
        */

        //Reading backtracking properties for testing
        String propertyFile = "/editor/animation/properties.xml";
        InputStream is = getServletContext().getResourceAsStream(propertyFile);
        Properties props = new Properties();
        props.loadFromXML(is);
        ReplayParams params = new ReplayParams();
        params.setMaxCost(Double.valueOf(props.getProperty("MaxCost")).doubleValue());
        params.setMaxDepth(Integer.valueOf(props.getProperty("MaxDepth")).intValue());
        params.setMinMatchPercent(Double.valueOf(props.getProperty("MinMatchPercent")).doubleValue());
        params.setMaxMatchPercent(Double.valueOf(props.getProperty("MaxMatchPercent")).doubleValue());
        params.setMaxConsecutiveUnmatch(Integer.valueOf(props.getProperty("MaxConsecutiveUnmatch")).intValue());
        params.setActivityMatchCost(Double.valueOf(props.getProperty("ActivityMatchCost")).doubleValue());
        params.setActivitySkipCost(Double.valueOf(props.getProperty("ActivitySkipCost")).doubleValue());
        params.setEventSkipCost(Double.valueOf(props.getProperty("EventSkipCost")).doubleValue());
        params.setNonActivityMoveCost(Double.valueOf(props.getProperty("NonActivityMoveCost")).doubleValue());
        params.setTraceChunkSize(Integer.valueOf(props.getProperty("TraceChunkSize")).intValue());
        params.setMaxNumberOfNodesVisited(
                Integer.valueOf(props.getProperty("MaxNumberOfNodesVisited")).intValue());
        params.setMaxActivitySkipPercent(
                Double.valueOf(props.getProperty("MaxActivitySkipPercent")).doubleValue());
        params.setMaxNodeDistance(Integer.valueOf(props.getProperty("MaxNodeDistance")).intValue());
        params.setTimelineSlots(Integer.valueOf(props.getProperty("TimelineSlots")).intValue());
        params.setTotalEngineSeconds(Integer.valueOf(props.getProperty("TotalEngineSeconds")).intValue());
        params.setProgressCircleBarRadius(
                Integer.valueOf(props.getProperty("ProgressCircleBarRadius")).intValue());
        params.setSequenceTokenDiffThreshold(
                Integer.valueOf(props.getProperty("SequenceTokenDiffThreshold")).intValue());
        params.setMaxTimePerTrace(Long.valueOf(props.getProperty("MaxTimePerTrace")).longValue());
        params.setMaxTimeShortestPathExploration(
                Long.valueOf(props.getProperty("MaxTimeShortestPathExploration")).longValue());
        params.setExactTraceFitnessCalculation(props.getProperty("ExactTraceFitnessCalculation"));
        params.setBacktrackingDebug(props.getProperty("BacktrackingDebug"));
        params.setExploreShortestPathDebug(props.getProperty("ExploreShortestPathDebug"));
        params.setCheckViciousCycle(props.getProperty("CheckViciousCycle"));
        params.setStartEventToFirstEventDuration(
                Integer.valueOf(props.getProperty("StartEventToFirstEventDuration")).intValue());
        params.setLastEventToEndEventDuration(
                Integer.valueOf(props.getProperty("LastEventToEndEventDuration")).intValue());

        Replayer replayer = new Replayer(bpmnDefinition, params);
        ArrayList<AnimationLog> replayedLogs = new ArrayList();
        if (replayer.isValidProcess()) {
            LOGGER.info("Process " + bpmnDefinition.getId() + " is valid");
            EncodeTraces.getEncodeTraces().read(xlogs); //build a mapping from traceId to charstream
            for (Log log : logs) {

                AnimationLog animationLog = replayer.replay(log.xlog, log.color);
                //AnimationLog animationLog = replayer.replayWithMultiThreading(log.xlog, log.color);
                if (animationLog != null && !animationLog.isEmpty()) {
                    replayedLogs.add(animationLog);
                }
            }

        } else {
            LOGGER.info(replayer.getProcessCheckingMsg());
        }

        /*
        * ------------------------------------------
        * Return Json animation
        * ------------------------------------------
        */
        LOGGER.info("Start sending back JSON animation script to browser");
        if (replayedLogs.size() > 0) {
            out = res.getWriter();
            res.setContentType("text/html"); // Ext2JS's file upload requires this rather than "application/json"
            res.setStatus(200);

            //To be replaced
            AnimationJSONBuilder jsonBuilder = new AnimationJSONBuilder(replayedLogs, replayer, params);
            JSONObject json = jsonBuilder.parseLogCollection();
            json.put("success", true); // Ext2JS's file upload requires this flag
            String string = json.toString();
            //LOGGER.info(string);
            jsonBuilder.clear();

            out.write(string);
        } else {
            /*
            out = res.getWriter();
            res.setContentType("text/html");
            res.setStatus(204);
            out.write("");
            */
            String json = "{success:false, errors: {errormsg: '" + "No logs can be played." + "'}}";
            res.setContentType("text/html; charset=UTF-8");
            res.getWriter().print(json);
        }

    } catch (Exception e) {
        try {
            LOGGER.severe(e.toString());
            /*
            res.setStatus(500);
            res.setContentType("text/plain");
            PrintWriter writer = new PrintWriter(out);
            writer.println("Failed to generate animation JSON script " + e);
            e.printStackTrace(writer);
            e.printStackTrace();
            res.getWriter().write(e.toString());
            */
            String json = "{success:false, errors: {errormsg: '" + e.getMessage() + "'}}";
            res.setContentType("text/html; charset=UTF-8");
            res.getWriter().print(json);
        } catch (Exception el) {
            System.err.println("Original exception was:");
            e.printStackTrace();
            System.err.println("Exception in exception handler was:");
            el.printStackTrace();
        }
    }

}

From source file:servlet.itemdescription.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*from ww w  .  ja v  a 2s  . c  o m*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // location to store file uploaded
    final String UPLOAD_DIRECTORY = "upload";
    // upload settings
    final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MB
    final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB
    final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB
    //----------------------------------------------------------------------
    //response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    EntityManagerFactory emf = null;
    EntityManager em = null;
    try {

        emf = Persistence.createEntityManagerFactory(cons.entityName);
        em = emf.createEntityManager();
        ItemDescriptionJpaController controller = new ItemDescriptionJpaController(emf);

        boolean isMultipart = ServletFileUpload.isMultipartContent(request);

        if (isMultipart) {
            String id = "";
            String code = "";
            String description = "";
            String itemType = "";
            String fileName = "";
            String unitId = "";
            String generId = "";
            String operation = "";

            //-------------------------------------------------------------------------------------------------------------------------------------
            // File upload
            try {
                // Create a factory for disk-based file items
                DiskFileItemFactory factory = new DiskFileItemFactory();
                // Create a new file upload handler
                ServletFileUpload upload = new ServletFileUpload(factory);
                upload.setFileSizeMax(MAX_FILE_SIZE);

                // sets maximum size of request (include file + form data)
                upload.setSizeMax(MAX_REQUEST_SIZE);

                // constructs the directory path to store upload file
                // this path is relative to application's directory
                //                    String uploadPath = getServletContext().getRealPath("")
                //                            + File.separator + UPLOAD_DIRECTORY;
                String uploadPath = "E:\\insiderUploads";
                // creates the directory if it does not exist
                File uploadDir = new File(uploadPath);
                if (!uploadDir.exists()) {
                    uploadDir.mkdir();
                }
                // Parse the request
                List<FileItem> items = upload.parseRequest(request);
                Iterator<FileItem> iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = iter.next();
                    if (item.isFormField()) { //These are form fields
                        String fieldName = item.getFieldName();
                        String fieldValue = item.getString();
                        if (fieldName.equalsIgnoreCase("honga")) {
                            operation = request.getParameter("honga");
                            System.out.println("operation: " + operation);
                        } else if (fieldName.equalsIgnoreCase("operation")) {
                            operation = request.getParameter("operation");
                            System.out.println("operation: " + operation);
                        } //----------------- Check Add Fields -------------------------
                        else if (fieldName.equalsIgnoreCase("id")) {
                            id = request.getParameter("id");
                            System.out.println("id " + id);
                        } else if (fieldName.equalsIgnoreCase("code")) {
                            code = fieldValue;
                            System.out.println("code " + code);
                        } else if (fieldName.equalsIgnoreCase("description")) {
                            description = fieldValue;
                            System.out.println("description: " + description);
                        } else if (fieldName.equalsIgnoreCase("item_type")) {
                            itemType = fieldValue;
                            System.out.println("item_type: " + itemType);
                        } else if (fieldName.equalsIgnoreCase("unit_id")) {
                            unitId = fieldValue;
                            System.out.println("unit_id: " + itemType);
                        }
                        if (fieldName.equalsIgnoreCase("gener_id")) {
                            generId = fieldValue;
                            System.out.println("Genre: " + generId);
                        } //----------------- Check Edit Fields ------------------------
                        else if (fieldName.equalsIgnoreCase("editItemDescriptionId")) {
                            id = request.getParameter("editItemDescriptionId");
                            System.out.println("editItemDescriptionId: " + id);
                        } else if (fieldName.equalsIgnoreCase("editItemCode")) {
                            code = fieldValue;
                            System.out.println("editItemCode " + code);
                        } else if (fieldName.equalsIgnoreCase("editDescription")) {
                            description = fieldValue;
                            System.out.println("editDescription: " + description);
                        } else if (fieldName.equalsIgnoreCase("editItemType")) {
                            itemType = fieldValue;
                            System.out.println("editItemType: " + itemType);
                        } else if (fieldName.equalsIgnoreCase("editUnitId")) {
                            unitId = fieldValue;
                            System.out.println("editUnitId: " + itemType);
                        }
                        if (fieldName.equalsIgnoreCase("generId")) {
                            generId = fieldValue;
                            System.out.println("generId: " + generId);
                        }
                    } else // This is a file
                    {
                        fileName = item.getName();
                        System.out.println("FILE NAME: " + fileName);
                        if (fileName != null && !fileName.isEmpty()) {
                            String filePath = uploadPath + File.separator + fileName;
                            File storeFile = new File(filePath);

                            // saves the file on disk
                            item.write(storeFile);
                            request.setAttribute("message", "Upload has been done successfully!");
                            out.println("File Name: " + fileName);
                        } else {
                            continue;
                        }
                    }

                }
                // add the item to the database
                //                    if (operation.equalsIgnoreCase("add")) {
                em.getTransaction().begin();
                ItemDescription itemDescription = new ItemDescription();
                if (code != null) {
                    itemDescription.setItemCode(new Integer(code));
                }

                itemDescription.setItemDesc(description);
                itemDescription.setItemTypeId(new Integer(itemType));
                itemDescription.setUnitId(new Integer(unitId));
                itemDescription.setGenerId(new Integer(generId));
                //                    itemDescription.setUpload(request.getParameter("file").getBytes());
                itemDescription.setUploadFileName(fileName);
                controller.create(itemDescription);
                em.getTransaction().commit();
                //                    } else if (operation.equalsIgnoreCase("edit")) {
                //                        em.getTransaction().begin();
                //                        ItemDescription itemDescription = new ItemDescription();
                //                        if (code != null) {
                //                            itemDescription.setItemCode(new Integer(code));
                //                        }
                //
                //                        itemDescription.setItemDesc(description);
                //                        itemDescription.setItemTypeId(new Integer(itemType));
                //                        itemDescription.setUnitId(new Integer(unitId));
                //                        itemDescription.setGenerId(new Integer(generId));
                ////                    itemDescription.setUpload(request.getParameter("file").getBytes());
                //                        controller.edit(itemDescription);
                //                        em.getTransaction().commit();
                //                    }

                response.sendRedirect("itemdesc.jsp");

            } catch (FileUploadException ex) {
                Logger.getLogger(itemdescription.class.getName()).log(Level.SEVERE, null, ex);
            }
            //-------------------------------------------------------------------------------------------------------------------------------------

        } else if (request.getParameter("operation") != null && !request.getParameter("operation").isEmpty()) {
            String id = "";
            String code = "";
            String description = "";
            String itemType = "";
            String fileName = "";
            String unitId = "";
            String generId = "";
            String operation = request.getParameter("operation");
            String operationId = request.getParameter("operationId");
            response.setContentType("application/json");
            if (operation.equalsIgnoreCase("edit")) { //This is update operation
                System.out.println("UPDATE OPERATION");
                operationId = request.getParameter("editItemDescriptionId");
                code = request.getParameter("editItemCode");
                description = request.getParameter("editDescription");
                itemType = request.getParameter("editItemType");
                unitId = request.getParameter("editUnitId");
                generId = request.getParameter("generId");

                System.out.println("Item ID: " + operationId + "Item Code: " + code + " | Desc: " + description
                        + " | Item type: " + itemType + " | UnitId: " + unitId + " | Genre Id: " + generId);
                ItemDescription itemDescription = controller.findItemDescription(new Integer(operationId));
                if (code != null) {
                    itemDescription.setItemCode(new Integer(code));
                }

                em.getTransaction().begin();
                itemDescription.setItemDesc(description);
                itemDescription.setItemTypeId(new Integer(itemType));
                itemDescription.setUnitId(new Integer(unitId));
                itemDescription.setGenerId(new Integer(generId));
                //                    itemDescription.setUpload(request.getParameter("file").getBytes());
                controller.edit(itemDescription);
                em.getTransaction().commit();
                response.sendRedirect("itemdesc.jsp");

            } else if (operation.equalsIgnoreCase("delete")) {//This is delete operation
                System.out.println("DELETE OPERATION");

                controller.destroy(new Integer(operationId));

                ItemDescription item = controller.findItemDescription(new Integer(operationId));
                if (item == null) {//Item is deleted from the database
                    System.out.println("RECORD has been deleted");
                    out.print(convertMessageIntoJSON(
                            new CustomMessage(100, "Record has been deleted successfully")));
                } else {//couldn't delete item
                    System.out.println("COULDN'T DELETE RECORD");
                    out.print(convertMessageIntoJSON(new CustomMessage(0, "Error, couldn't delete record")));

                }
            } else if (operation.equalsIgnoreCase("showItemDescriptionDetails")) {
                int itemDescriptionId = Integer.parseInt(request.getParameter("operationId"));
                ItemDescription itemDescription = controller.findItemDescription(itemDescriptionId);
                if (itemDescription == null) {//Record not found
                    out.print(JSONUtils
                            .convertMessageIntoJSON(new dto.CustomMessage(404, "Error, No Such record!")));
                } else {//Record found 
                    out.print(JSONUtils.convertItemDescriptionIntoJSON(ItemDescriptionWrapper
                            .getItemDescriptionWrapper(100, "Record found successfully", itemDescription)));
                }
            }
        } else if (request.getParameter("save") != null) {
            em.getTransaction().begin();
            ItemDescription id = new ItemDescription();

            id.setItemCode(new Integer(request.getParameter("item_code")));
            id.setItemDesc(request.getParameter("item_desc"));
            id.setItemTypeId(new Integer(request.getParameter("item_type_id")));
            id.setUnitId(new Integer(request.getParameter("unit_id")));
            id.setGenerId(new Integer(request.getParameter("gener_id")));
            id.setUpload(request.getParameter("file").getBytes());

            controller.create(id);
            em.getTransaction().commit();
            response.sendRedirect("itemdesc.jsp");
        } else if (request.getParameter("update") != null) {
            em.getTransaction().begin();
            ItemDescription id = new ItemDescription();
            id = controller.findItemDescription(new Integer(request.getParameter("edit_material_id").trim()));

            id.setItemCode(new Integer(request.getParameter("item_code")));
            id.setItemDesc(request.getParameter("item_desc"));
            id.setItemTypeId(new Integer(request.getParameter("item_type_id")));
            id.setUnitId(new Integer(request.getParameter("unit_id")));
            id.setGenerId(new Integer(request.getParameter("gener_id")));
            id.setUpload(request.getParameter("file").getBytes());

            controller.edit(id);
            em.getTransaction().commit();
            response.sendRedirect("itemdesc.jsp");
        } else if (request.getParameter("del_item") != null) {
            if (request.getParameter("id_value_del").trim() != null) {
                em.getTransaction().begin();
                controller.destroy(new Integer(request.getParameter("id_value_del").trim()));
                em.getTransaction().commit();
                response.sendRedirect("itemdesc.jsp");
            }
        }

        //            request.setAttribute("generlist",findGenerEntities);
        //            request.getRequestDispatcher("/gener.jsp").forward(request, response);
    } catch (Exception ex) {
        Logger.getLogger(itemdescription.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        out.close();
        em.close();
        emf.close();

    }
}

From source file:servlet.PreProcessServlet.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*from   w  ww .j  a  va  2s .co m*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    uploadRootPath = getServletContext().getInitParameter("file-upload");
    File upload = new File(uploadRootPath);
    if (upload.exists()) {
        deleteFolderContent(upload);
    }
    createDirectoryIfNotExisting(uploadRootPath);
    String programRootPath = getServletContext().getInitParameter("program-root-path");
    boolean isGeneral = false;
    String copyrightStoplist = "";
    String customizedPackageList = "";
    String projectName = "";
    int topicCount = -1;

    String inputRootFilePath = uploadRootPath;
    String outputFilePath = programRootPath + "preprocessOutput/PreProcessTool";
    File outputFile = new File(outputFilePath);
    if (outputFile.exists()) {
        deleteFolderContent(outputFile);
    }

    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
        /* TODO output your page here. You may use following sample code. */
        out.println("<!DOCTYPE html>");

        out.println("<html lang=\"en\">");
        out.println("<head>" + "<meta charset=\"utf-8\">"
                + "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"
                + "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
                + "<meta name=\"description\" content=\"\">" + "<meta name=\"author\" content=\"\">"
                + "<link rel=\"icon\" href=\"./image/analysis.jpg\">" + "<title>Programmer Assistor</title>"
                + "<link href=\"./css/bootstrap.min.css\" rel=\"stylesheet\">"
                + "<script src=\"./js/ie-emulation-modes-warning.js\">"
                + "</script><!-- Custom styles for this template -->"
                + "<link href=\"./css/list.css\" rel=\"stylesheet\">" + "</head>");
        out.println("<body>" + "<div class=\"navbar-wrapper\">" + "<div class=\"container\">"
                + "<nav class=\"navbar navbar-inverse navbar-static-top\" role=\"navigation\">"
                + "<div class=\"container\">" + "<div class=\"navbar-header\">"
                + "<a class=\"navbar-brand\" href=\"home.html\">Programmer Assistor</a>" + "</div>"
                + "<div id=\"navbar\" class=\"navbar-collapse collapse\">" + "<ul class=\"nav navbar-nav\">"
                + "<li>" + "<a href=\"home.html\">Home </a>" + "</li>" + "<li>"
                + "<a href=\"help.html\">Help </a>" + "</li>" + "<li>" + "<a href=\"show.html\">Show </a>"
                + "</li>" + "<li>" + "<a href=\"search.html\">Search </a>" + "</li>" + "</ul>" + "</div>"
                + "</div>" + "</nav>" + "</div>" + "</div>");
        out.println("<div class=\"container marketing\">");
        out.println("<div class=\"row featurette files\" id=\"fileList\">");
        out.println("<h2>1. Preprocessing </h2>");
        out.println("<h3>Preprocessed Data Directory: </h3>");
        out.println("<p>");
        out.println(programRootPath + "preprocessOutput/PreProcessTool");
        out.println("</p>");
        out.println("<h3>Uploaded Files: </h3>");

        isMultipart = ServletFileUpload.isMultipartContent(request);

        if (!isMultipart) {
            out.println("<p>the request isn't multipart</p>");
            return;
        }
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(maxMemSize);
        // Location to save data that is larger than maxMemSize.
        factory.setRepository(new File(programRootPath, "temp"));

        ServletFileUpload uploadProcess = new ServletFileUpload(factory);
        uploadProcess.setSizeMax(maxFileSize);

        try {
            List fileItems = uploadProcess.parseRequest(request);

            Iterator i = fileItems.iterator();

            while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()) {
                    String fileName = fi.getName();
                    file = new File(inputRootFilePath + fileName.replace('/', '-'));//replace all / to -
                    fi.write(file);

                    out.println("<p>");
                    out.println(fileName);
                    out.println("</p>");
                } else {
                    String fieldName = fi.getFieldName();
                    String fieldValue = fi.getString();
                    if (fieldName.equals("general") && fieldValue.equals("on")) {
                        isGeneral = true;
                    } else if (fieldName.equals("project_type")) {
                        if (fieldValue.equals("Drawing")) {
                            libraryTypeCondition.remove("Drawing");
                            libraryTypeCondition.put("Drawing", true);
                        } else if (fieldValue.equals("Modeling")) {
                            libraryTypeCondition.remove("Modeling");
                            libraryTypeCondition.put("Modeling", true);
                        }
                    } else if (fieldName.equals("customizePackageInfoContent")) {
                        String customizePackageInfoContent = fieldValue;
                        customizedPackageList = customizePackageInfoContent.toLowerCase()
                                .replaceAll("\\*|\n|[0-9]|,|;|`|'|\"", "");
                        customizedPackageList = customizedPackageList.replaceAll("\\(|\\)|-|//|:|~|/|\\.", " ");

                    } else if (fieldName.equals("copyrightInfoContent")) {
                        String copyrightInfoContent = fieldValue;
                        copyrightInfoContent = copyrightInfoContent.replaceAll(".java", "java");
                        copyrightStoplist = copyrightInfoContent.toLowerCase()
                                .replaceAll("\\*|\n|[0-9]|,|;|`|'|\"", "");
                        copyrightStoplist = copyrightStoplist.replaceAll("\\(|\\)|-|//|:|~|/|\\.", " ");

                    } else if (fieldName.equals("projectNameContent")) {
                        projectName = fieldValue;
                    } else if (fieldName.equals("topicCountContent")) {
                        topicCount = Integer.parseInt(fieldValue);
                    }
                }
            }

            //                out.println("<p>"+ copyrightStoplist.toString() +"</p>");

        } catch (FileUploadException e) {
            // TODO Auto-generated catch block  
            out.println("The size of files is too much, please upload files less than 50MB");
            e.printStackTrace();
        } catch (Exception ex) {
            out.println(ex);

        }

        PreProcessTool preProcessTool = new PreProcessTool(inputRootFilePath, outputFilePath, isGeneral,
                libraryTypeCondition, copyrightStoplist, customizedPackageList);
        preProcessTool.preProcess();
        out.println("<h3 id = \"success\" class=\"fileHead\"> Successful Uploading and preprocessing!</h3>");

        //topic modeling
        out.println("<p></p>");
        out.println("<h2>2. Topic Modeling: </h2>");
        out.println("<p>The project name: ");
        out.println(projectName);
        out.println("</p>");
        out.println("<p> The number of topics: ");
        out.println(topicCount);
        out.println("</p>");
        out.println("<h3 id=\"topModelingLogHeader\">Start Topic Modeling: </h3>");
        out.println("<script>" + "window.wtx = window.setInterval(function () {"
                + "var div = document.getElementById('topModelingLog'); " + "div.scrollTop = div.scrollHeight; "
                + "div.scrollIntoView(true); " + "}, 100);" + "</script>");
        out.println("<div id=\"topModelingLog\" style=\"height: 300px; overflow:scroll;\">");
        Executor executor = new Executor(projectName, topicCount, new ProcessPrinter(out::println));
        executor.run();
        out.println("</div>");
        out.println("<script>window.clearInterval(window.wtx);</script>");

        //prepare for search
        File compositeFile = new File(programRootPath + "showFile/composition.txt");
        String top3DocumentsFilePath = programRootPath + "showFile/top3Documents.txt";
        Map<String, String> top3Documents = new HashMap<>();
        Map<Integer, String[]> top3DocAndPer = new HashMap<>();

        int totalFileNo = 0;

        try (InputStream inComposite = new FileInputStream(compositeFile.getPath());
                BufferedReader readerComposite = new BufferedReader(new InputStreamReader(inComposite))) {

            String compositeLine = "";
            while ((compositeLine = readerComposite.readLine()) != null) {
                totalFileNo++;
            }
        }

        try (InputStream inComposite = new FileInputStream(compositeFile.getPath());
                BufferedReader readerComposite = new BufferedReader(new InputStreamReader(inComposite))) {

            String compositeLine = "";
            Double[][] topicDocMatrix = new Double[topicCount][totalFileNo];
            String[] fileNameList = new String[totalFileNo];
            int fileNo = 0;
            while ((compositeLine = readerComposite.readLine()) != null) {
                String[] linePart = compositeLine.split("\t| ");
                String[] nameParts = linePart[1].split("/");
                String textName = nameParts[nameParts.length - 1];
                int lastIndexOfStrigula = textName.lastIndexOf('-');
                if (lastIndexOfStrigula >= 0) {
                    String fileName = textName.substring(0, lastIndexOfStrigula);
                    fileNameList[fileNo] = fileName;
                }

                for (int i = 2; i < linePart.length; i++) {
                    topicDocMatrix[i - 2][fileNo] = Double.parseDouble(linePart[i]);
                }

                fileNo++;
            }

            //find top3 document for each topic
            for (int i = 0; i < topicDocMatrix.length; i++) {
                double max1 = 0;
                String file1 = "";
                double max2 = 0;
                String file2 = "";
                double max3 = 0;
                String file3 = "";
                for (int j = 0; j < topicDocMatrix[i].length; j++) {
                    if (topicDocMatrix[i][j] > max1) {
                        max3 = max2;
                        max2 = max1;
                        max1 = topicDocMatrix[i][j];
                        file1 = fileNameList[j];
                    } else if (topicDocMatrix[i][j] > max2) {
                        max3 = max2;
                        max2 = topicDocMatrix[i][j];
                        file2 = fileNameList[j];
                    } else if (topicDocMatrix[i][j] > max3) {
                        max3 = topicDocMatrix[i][j];
                        file3 = fileNameList[j];
                    }
                }
                String[] docAndPerList = new String[3];
                docAndPerList[0] = file1 + "\t" + max1;
                docAndPerList[1] = file2 + "\t" + max2;
                docAndPerList[2] = file3 + "\t" + max3;
                top3DocAndPer.put(i, docAndPerList);
            }

        }

        File top3DocumentsFile = new File(top3DocumentsFilePath);
        if (top3DocumentsFile.createNewFile()) {
            System.out.println("Create successful: " + top3DocumentsFile.getName());
        }
        writeMapIntStrAToFile(top3DocumentsFile, top3DocAndPer);

        out.println("<h3 id = \"success\" class=\"fileHead\">Successful Topic Modeling!</h3>");
        out.println(
                "<h2 id = \"success\" class=\"fileHead\">Now, you can start using the \"Show\" function and the \"Search\" function.</h2>");

        out.println("</div>");
        out.println("<hr class=\"featurette-divider\">");
        out.println("<footer>" + "<p class=\"pull-right\">" + "<a href=\"#\">Back to top</a>" + "</p>"
                + "<p>2017 @Tianxia, Wang</p>" + "</footer>");
        out.println("</div>");
        out.println("<script src=\"./js/jquery.min.js\"></script>");
        out.println("<script src=\"./js/bootstrap.min.js\"></script>");
        out.println("<script src=\"./js/docs.min.js\"></script>");
        out.println("<script src=\"./js/ie10-viewport-bug-workaround.js\"></script>");
        out.println("<script src=\"./js/home.js\"></script>");
        out.println("</body>");
        out.println("</html>");

    }
}