servlets.Handler.java Source code

Java tutorial

Introduction

Here is the source code for servlets.Handler.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;

import Application.Core.response.Response;
import Application.Core.response.ResponseHelper;
import Application.Facade;
import Application.Models.DTO.UserDTO;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;

/**
 *
 * @author usuario
 */
public class Handler extends HttpServlet {

    private Facade facade = Facade.getInstance();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String out = "";
        Response res = null;
        response.setContentType("text/json;charset=UTF-8");
        String action = request.getParameter("action");

        this.print(response, out);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String out = "";
        Response res = null;
        response.setContentType("text/json;charset=UTF-8");
        String action = request.getParameter("action");
        if (action != null && action.length() == 0) {
            return;
        } else if (action.equalsIgnoreCase("login")) {
            out = login(request);
        } else if (action.equalsIgnoreCase("send_email")) {
            out = send_email(request).toString();
        }

        this.print(response, out);

    }

    /**
     * 
     * @param request
     * @return 
     */
    private Response send_email(HttpServletRequest request) {

        UserDTO user = (UserDTO) request.getSession().getAttribute("user");
        if (user != null) {

            int maxFileSize = 5000 * 1024;
            int maxMemSize = 5000 * 1024;
            ServletContext context = request.getServletContext();
            String contentType = request.getContentType();
            if ((contentType.indexOf("multipart/form-data") >= 0)) {

                String email = "";
                String subject = "";
                try {
                    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"));

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

                    List fileItems = upload.parseRequest(request);
                    FileItem fi = (FileItem) fileItems.get(0);
                    ;

                    subject = request.getParameter("subject");
                    email = java.net.URLDecoder.decode(request.getParameter("email"), "UTF-8");
                    //ARREGLAR ESTOOOOOOOOOOOOOOOOO
                    return this.facade.sendEmail(user, subject, email, fi);

                } catch (FileUploadException ex) {
                    ex.printStackTrace();
                    return ResponseHelper.getResponse(-3, "No se pudo subir el archivo", null);
                } catch (UnsupportedEncodingException ex) {
                    ex.printStackTrace();
                    System.out.println("email:" + email);
                    return ResponseHelper.getResponse(-3, "No se pudo parsear el email", null);
                } catch (Exception ex) {
                    ex.printStackTrace();
                    return ResponseHelper.getResponse(-3, "No se pudo escribir el archivo en el disco", null);
                }

            } else {
                return ResponseHelper.getResponse(-2, "Cabecera HTTP erronea", null);
            }
        }

        return ResponseHelper.getResponse(-2, "Login is required", null);
    }

    private String login(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if (username.length() > 0 && password.length() > 0) {
            Response res = this.facade.login(username, password);
            if (res.getStatus() == 1) {
                request.getSession().setAttribute("user", res.getData());
            }
            return res.toString();
        } else {
            return ResponseHelper.getResponse(-1, "Username or password must not empty", null).toString();
        }

    }

    private String logout(HttpServletRequest request) {

        request.getSession().invalidate();

        return ResponseHelper.getResponse(-1, "logut", null).toString();
    }

    private String getListOfEmails(HttpServletRequest request) {
        return null;
    }

    private void print(HttpServletResponse response, String output) throws IOException {
        try (PrintWriter out = response.getWriter()) {
            out.println(output);
        }
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }

}