Emporium.Servlet.ServImportaImpressaoPLP.java Source code

Java tutorial

Introduction

Here is the source code for Emporium.Servlet.ServImportaImpressaoPLP.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 Emporium.Servlet;

import Controle.ContrServicoECT;
import Emporium.Controle.ContrImpressaoPLP;
import Entidade.Endereco;
import Util.XTrustProvider;
import br.com.correios.bsb.sigep.master.bean.cliente.AutenticacaoException;
import br.com.correios.bsb.sigep.master.bean.cliente.SigepClienteException;
import java.awt.HeadlessException;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

/**
 *
 * @author Fernando
 */
public class ServImportaImpressaoPLP 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 {

        HttpSession sessao = request.getSession();
        String loginSigep = request.getParameter("login_sigep");
        String senhaSigep = request.getParameter("senha_sigep");
        int idClientePLP = Integer.parseInt(request.getParameter("idCliente"));
        int idDeptoPLP = Integer.parseInt(request.getParameter("departamento"));
        String nomeBD = request.getParameter("nomeBD");
        String idPLP = request.getParameter("idPLP");
        String numObj = request.getParameter("numObjeto");

        try {
            //IMPORTA OBJETOS DA PLP
            XTrustProvider.install();
            String xmlPLP = solicitaPLP(new Long(idPLP), numObj, loginSigep, senhaSigep);
            String ret = leXmlPLP(xmlPLP, idPLP, idClientePLP, idDeptoPLP, nomeBD);

            if (ret.equals("")) {
                sessao.setAttribute("msg", "PLP n " + idPLP + " IMPORTADA COM SUCESSO !");
            } else {
                sessao.setAttribute("msg", ret);
            }
        } catch (NumberFormatException ex) {
            //MOSTRA MENSAGEM DE ERRO
            sessao.setAttribute("msg", "O nmero da PLP deve conter apenas nmeros!<br/>" + "Nmero Digitado: "
                    + idPLP + "<br/><br/>" + "Msg. do Sistema: " + ex.getMessage());
        } catch (AutenticacaoException ex) {
            //MOSTRA MENSAGEM DE ERRO
            sessao.setAttribute("msg",
                    "No foi possvel efetuar o Login no SigepWEB!<br/>"
                            + "Confira o Login e Senha do SigepWEB do Cliente!<br/><br/>" + "Msg. do SigepWEB: "
                            + ex.getMessage());
        } catch (SigepClienteException ex) {
            //MOSTRA MENSAGEM DE ERRO
            sessao.setAttribute("msg",
                    "No foi possvel requisitar a PLP do SigepWEB!<br/>"
                            + "Confira se a PLP j foi vendida ou excluida do SARA!<br/><br/>"
                            + "Msg. do SigepWEB: " + ex.getMessage());
        } catch (HeadlessException e) {
            //MOSTRA MENSAGEM DE ERRO
            sessao.setAttribute("msg", "FALHA AO IMPORTAR PLP n " + idPLP + "!<br/><br/>Erro: " + e.getMessage());
        } catch (DocumentException e) {
            //MOSTRA MENSAGEM DE ERRO
            sessao.setAttribute("msg", "FALHA AO IMPORTAR PLP n " + idPLP + "!<br/><br/>Erro: " + e.getMessage());
        } catch (Exception ex) {
            //MOSTRA MENSAGEM DE ERRO
            sessao.setAttribute("msg", "No foi possvel requisitar a PLP do SigepWEB!<br/><br/>"
                    + "Msg. do SigepWEB: " + ex.getMessage());
        }

        response.sendRedirect("Cliente/Servicos/importa_plp.jsp");

    }

    // <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 {
        processRequest(request, response);
    }

    /**
     * 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 {
        processRequest(request, response);
    }

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

    public static String leXmlPLP(String xml, String idPLP, int idCliente, int idDepto, String nomeBD)
            throws DocumentException, HeadlessException {
        String ret = "";
        xml = xml.replaceAll("&", "E");
        //System.out.println(xml);
        if (xml != null && !xml.isEmpty()) {

            SAXReader reader = new SAXReader();
            StringReader sr = new StringReader(xml);
            Document doc = reader.read(sr);
            List<Node> eventos = (List<Node>) doc.selectNodes("//correioslog");

            // processa eventos
            for (Node node : eventos) {
                String contrato = node.valueOf("remetente/numero_contrato");
                String cartaoPostagem = "";//node.valueOf("");
                String codigoAdministrativo = node.valueOf("remetente/codigo_administrativo");

                String nomeRemetente = node.valueOf("remetente/nome_remetente");
                String cepRemetente = node.valueOf("remetente/cep_remetente");
                String enderecoRemetente = node.valueOf("remetente/logradouro_remetente");
                String numeroRemetente = node.valueOf("remetente/numero_remetente");
                String complementoRemetente = node.valueOf("remetente/complemento_remetente");
                String bairroRemetente = node.valueOf("remetente/bairro_remetente");
                String cidadeRemetente = node.valueOf("remetente/cidade_remetente");
                String ufRemetente = node.valueOf("remetente/uf_remetente");
                Endereco endRemetente = new Endereco(nomeRemetente, enderecoRemetente, numeroRemetente,
                        complementoRemetente, bairroRemetente, cidadeRemetente, ufRemetente, cepRemetente);

                List<Node> evnt = (List<Node>) node.selectNodes("objeto_postal");
                for (Node nd : evnt) {

                    String notaFiscal = nd.valueOf("nacional/numero_nota_fiscal");
                    int codECT = Integer.parseInt(nd.valueOf("codigo_servico_postagem").trim());
                    String servico = ContrServicoECT.consultaGrupoServicoByCodECT(codECT);

                    String nomeDestinatario = nd.valueOf("destinatario/nome_destinatario");
                    String cepDestinatario = nd.valueOf("nacional/cep_destinatario");
                    String enderecoDestinatario = nd.valueOf("destinatario/logradouro_destinatario");
                    String numeroDestinatario = nd.valueOf("destinatario/numero_end_destinatario");
                    String complementoDestinatario = nd.valueOf("destinatario/complemento_destinatario");
                    String bairroDestinatario = nd.valueOf("nacional/bairro_destinatario");
                    String cidadeDestinatario = nd.valueOf("nacional/cidade_destinatario");
                    String ufDestinatario = nd.valueOf("nacional/uf_destinatario");
                    Endereco endDestinatario = new Endereco(nomeDestinatario, enderecoDestinatario,
                            numeroDestinatario, complementoDestinatario, bairroDestinatario, cidadeDestinatario,
                            ufDestinatario, cepDestinatario);

                    int ar = 0;
                    int mp = 0;
                    int rg = 0;
                    int rm = 0;
                    int pr = 0;
                    float vd = 0;
                    List<Node> evtAdicionais = (List<Node>) node.selectNodes("servico_adicional");
                    for (Node nda : evtAdicionais) {
                        int codAd = Integer.parseInt(nda.valueOf("codigo_servico_adicional").trim());
                        switch (codAd) {
                        case 1:
                            ar = 1;
                            break;
                        case 2:
                            mp = 1;
                            break;
                        case 4:
                            rm = 1;
                            break;
                        case 15:
                            pr = 1;
                            break;
                        case 19:
                        case 35:
                            vd = Float.parseFloat(nda.valueOf("valor_declarado").trim().replace(",", "."));
                            break;
                        default:
                            break;
                        }
                    }

                    String sro = nd.valueOf("numero_etiqueta");
                    ContrImpressaoPLP.inserePLP(sro, idPLP, 0, contrato, cartaoPostagem, codigoAdministrativo,
                            codECT, servico, idCliente, idDepto, ar, mp, vd, pr, rg, rm, notaFiscal, endRemetente,
                            endDestinatario, nomeBD);

                }
            }

        } else {
            ret = "XML da PLP est vazio!";
        }

        return ret;
    }

    private static String solicitaPLP(java.lang.Long idPlpMaster, java.lang.String numEtiqueta,
            java.lang.String usuario, java.lang.String senha) throws AutenticacaoException, SigepClienteException {
        br.com.correios.bsb.sigep.master.bean.cliente.AtendeClienteService service = new br.com.correios.bsb.sigep.master.bean.cliente.AtendeClienteService();
        br.com.correios.bsb.sigep.master.bean.cliente.AtendeCliente port = service.getAtendeClientePort();
        return port.solicitaPLP(idPlpMaster, numEtiqueta, usuario, senha);
    }
}