br.com.casabranca.controller.RelatoriosController.java Source code

Java tutorial

Introduction

Here is the source code for br.com.casabranca.controller.RelatoriosController.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 br.com.casabranca.controller;

import br.com.casabranca.model.Imovel;
import br.com.casabranca.model.Negocio;
import br.com.casabranca.model.RelatorioLucros;
import br.com.casabranca.repository.RepositorioImovel;
import br.com.casabranca.repository.RepositorioNegocio;
import br.com.casabranca.utils.Conversores;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Type;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Arthur
 */
@WebServlet(name = "RelatoriosController", urlPatterns = { "/Relatorios" })
public class RelatoriosController extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @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, Exception {

        String relatorio = request.getParameter("relatorio");

        String d1 = request.getParameter("dataInicial");
        String d2 = request.getParameter("dataFinal");

        Date dataInicial = Conversores.formataData(d1);
        Date dataFinal = Conversores.formataData(d2);

        String tipo = request.getParameter("tipo");

        if (relatorio.equals("financeiro")) {

            try {
                relatorioFinanceiro(dataInicial, dataFinal, tipo, response);
            } catch (SQLException | ClassNotFoundException | IOException ex) {
                /* */ Object coisa = null;
            }

        } else if (relatorio.equals("imovel")) {

            try {
                relatorioImovel(dataInicial, dataFinal, tipo, response);
            } catch (Exception ex) {
                /* */ Object coisa = null;
            }

        }

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (Exception ex) {
            Logger.getLogger(RelatoriosController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (Exception ex) {
            Logger.getLogger(RelatoriosController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private void relatorioFinanceiro(Date dataInicial, Date dataFinal, String tipo, HttpServletResponse response)
            throws SQLException, ClassNotFoundException, IOException {

        List<Negocio> negocios = new RepositorioNegocio().getAll(dataInicial, dataFinal);
        ArrayList<RelatorioLucros> relatorio = new ArrayList<>();

        for (Negocio negocio : negocios) {

            RelatorioLucros rel = new RelatorioLucros();
            rel.setAgrupador(tipo.equals("corretor") ? negocio.getUsuario().getPessoa().getNome()
                    : negocio.getUsuario().getUnidade().getDescricao());
            rel.setPeriodo(new SimpleDateFormat("MM/yyyy").format(negocio.getDataNegocio()));
            rel.setValor(negocio.getImovel().getValor());

            if (relatorio.contains(rel)) {

                RelatorioLucros incluido = relatorio.get(relatorio.indexOf(rel));
                incluido.setValor(incluido.getValor() + rel.getValor());

            } else {
                relatorio.add(rel);
            }

        }

        //        List<RelatorioLucros> relatorio = new ArrayList<>();
        //
        //        for (int i = 1; i <= 5; i++) {
        //            for (int j = 1; j <= 12; j++) {
        //                RelatorioLucros rel = new RelatorioLucros();
        //                rel.setAgrupador("Usuario " + i);
        //                rel.setPeriodo(j + "/2016");
        //                rel.setValor(Math.round(Math.random() * j));
        //                relatorio.add(rel);
        //            }
        //
        //        }
        Type listType = new TypeToken<ArrayList<RelatorioLucros>>() {
        }.getType();

        String result = new Gson().toJson(relatorio, listType);

        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(result);

    }

    private boolean imovelNegociado(List<Negocio> negocios, Imovel imovel) {

        for (Negocio negocio : negocios) {
            if (negocio.getIdImovel() == imovel.getId()) {
                return true;
            }
        }

        return false;

    }

    private void relatorioImovel(Date dataInicial, Date dataFinal, String tipo, HttpServletResponse response)
            throws SQLException, ClassNotFoundException, IOException {

        List<Negocio> negocios = new RepositorioNegocio().getAll(dataInicial, dataFinal);

        if (tipo.equals("todos")) {

            List<Imovel> imoveis = new RepositorioImovel().getAll();

            int dif = imoveis.size() - negocios.size();

            if (dif > 0) {
                for (Imovel imovel : imoveis) {

                    if (!imovelNegociado(negocios, imovel)) {
                        Negocio novo = new Negocio();
                        novo.setIdImovel(imovel.getId());
                        novo.setImovel(imovel);
                        negocios.add(novo);

                    }

                }
            }

        }

        Type listType = new TypeToken<ArrayList<Negocio>>() {
        }.getType();

        String result = new Gson().toJson(negocios, listType);

        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(result);

    }

}