Search in sources :

Example 11 with PresentableException

use of com.crivano.swaggerservlet.PresentableException in project balcaovirtual by trf2-jus-br.

the class CertidaoAutenticarNumeroCpfcnpjGet method run.

@Override
public void run(Request req, Response resp, BalcaojusContext ctx) throws Exception {
    if (!CertidaoObterTokenGet.isValidToken(req.token, req.numero, null, req.cpfcnpj))
        throw new PresentableException("Token inválido");
    FetchResponse r = CertidaoEmitirRequisitanteCpfcnpjPost.fetch(Utils.getCertApiUrl(req.sistema) + "/bv_consul_cert_neg.asp", Utils.getCertApiPassword(req.sistema), "POST", "Botao=Consultar&NumProt=" + req.numero + "&NumDocPess=" + req.cpfcnpj);
    if (r.headerFields.containsKey(Utils.ERROR_MESSAGE))
        throw new PresentableUnloggedException(r.headerFields.get(Utils.ERROR_MESSAGE).get(0));
    resp.html = r.html;
    if (r.headerFields.containsKey(Utils.RESULT_KIND)) {
        resp.tipo = r.headerFields.get(Utils.RESULT_KIND).get(0);
        resp.html = Utils.obterHtml(resp.html, resp.tipo);
    }
    if (r.headerFields.containsKey(Utils.CERT_NUMBER))
        resp.numero = r.headerFields.get(Utils.CERT_NUMBER).get(0);
}
Also used : PresentableUnloggedException(com.crivano.swaggerservlet.PresentableUnloggedException) PresentableException(com.crivano.swaggerservlet.PresentableException) FetchResponse(br.jus.trf2.balcaojus.CertidaoEmitirRequisitanteCpfcnpjPost.FetchResponse)

Example 12 with PresentableException

use of com.crivano.swaggerservlet.PresentableException in project balcaovirtual by trf2-jus-br.

the class CertidaoRequererRequisitanteCpfcnpjPost method run.

@Override
public void run(Request req, Response resp, BalcaojusContext ctx) throws Exception {
    if (!CertidaoObterTokenGet.isValidToken(req.token, null, req.requisitante, req.cpfcnpj))
        throw new PresentableException("Token inválido");
    FetchResponse r = CertidaoEmitirRequisitanteCpfcnpjPost.fetch(Utils.getCertApiUrl(req.sistema) + "/bv_conf_req_cert.asp", Utils.getCertApiPassword(req.sistema), "POST", "Botao=Requerer&NumDocPessReq=" + req.requisitante + "&NumDoc=" + req.cpfcnpj + "&Nome=" + URLEncoder.encode(req.nome, "ISO-8859-1"));
    if (r.headerFields.containsKey(Utils.ERROR_MESSAGE))
        throw new PresentableUnloggedException(r.headerFields.get(Utils.ERROR_MESSAGE).get(0));
    resp.html = r.html;
    if (r.headerFields.containsKey(Utils.RESULT_KIND)) {
        resp.tipo = r.headerFields.get(Utils.RESULT_KIND).get(0);
        resp.html = Utils.obterHtml(resp.html, resp.tipo);
    }
    if (r.headerFields.containsKey(Utils.CERT_NUMBER))
        resp.numero = r.headerFields.get(Utils.CERT_NUMBER).get(0);
}
Also used : PresentableUnloggedException(com.crivano.swaggerservlet.PresentableUnloggedException) PresentableException(com.crivano.swaggerservlet.PresentableException) FetchResponse(br.jus.trf2.balcaojus.CertidaoEmitirRequisitanteCpfcnpjPost.FetchResponse)

Example 13 with PresentableException

use of com.crivano.swaggerservlet.PresentableException in project balcaovirtual by trf2-jus-br.

the class ProcessoCompleto method call.

@Override
public String call() throws Exception {
    ContentInfoUtil contentInfoUtil = new ContentInfoUtil();
    String bufName = null;
    try {
        this.status = Status.update(this.uuid, "Obtendo a lista de documentos", 0, 100, 0L);
        boolean fEproc = sistema.contains(".eproc");
        // Consulta o processo para saber quais são os documentos a serem
        // concatenados
        String json = SoapMNI.consultarProcesso(username, password, sistema, numProc, false, fEproc, true);
        JSONObject proc = new JSONObject(json).getJSONObject("value");
        JSONArray docs = proc.getJSONArray("documento");
        // Cria um mapa de movimentos para facilitar a criação das páginas de separação
        Map<String, JSONObject> movs = new HashMap<>();
        if (fEproc) {
            JSONArray movimentos = proc.getJSONArray("movimento");
            for (int i = 0; i < movimentos.length(); i++) {
                JSONObject mov = movimentos.getJSONObject(i);
                movs.put(mov.getString("identificadorMovimento"), mov);
            }
        }
        // Cria um documento em diretório temporário para agregar os
        // diversos PDFs
        String dirTemp = Utils.getDirTemp();
        bufName = dirTemp + "/" + numProc + "-completo-" + uuid + ".pdf";
        FileOutputStream buf = new FileOutputStream(bufName);
        Document document = new Document();
        PdfCopy copy = new PdfSmartCopy(document, buf);
        copy.setPageSize(PageSize.A4);
        document.open();
        long bytes = 0;
        for (int i = 0; i < docs.length(); i++) {
            String idDocumento = null;
            JSONObject doc;
            if (fEproc) {
                doc = docs.getJSONObject(docs.length() - i - 1);
                String movimento = doc.getString("movimento");
                String dataHora = Utils.formatarDataHoraMinutoSegundo(Utils.parsearApoloDataHoraMinuto(doc.getString("dataHora")));
                String usuario = null;
                String descricao = null;
                if (movs.containsKey(movimento)) {
                    JSONObject mov = movs.get(movimento);
                    if (mov != null) {
                        JSONArray complementos = mov.getJSONArray("complemento");
                        if (complementos != null) {
                            for (int j = 0; j < complementos.length(); j++) {
                                String complemento = complementos.getString(j);
                                if (complemento != null && complemento.startsWith("Movimentado por: ")) {
                                    usuario = complemento.replace("Movimentado por: ", "");
                                }
                            }
                        }
                        if (mov.getJSONObject("movimentoLocal") != null)
                            descricao = mov.getJSONObject("movimentoLocal").getString("descricao");
                    }
                }
                // String html = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><style type=\"text/css\">@media print {} @page {size: a4 portrait; margin-left: 2cm; margin-right: 2cm; margin-top: 2cm; margin-bottom: 2cm;background-color: lightyellow;}</style></head><body style=\"background-color: lightyellow;\">";
                String html = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><style type=\"text/css\">@media print {} @page {margin-left: 2cm; margin-right: 2cm; margin-top: 2cm; margin-bottom: 2cm;background-color: lightyellow;}</style></head><body style=\"background-color: lightyellow;\">";
                // String html = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><style
                // type=\"text/css\">@media print {background-color: lightyellow; @page{size: a4
                // portrait; margin-left:0cm; padding-right: 3cm; margin-top: 3cm;
                // margin-bottom: 3cm;}}</style></head><body style=\"background-color:
                // lightyellow;\">";
                html += "<p align=\"center\"><b>";
                html += i == 0 ? "CAPA DO PROCESSO" : "PÁGINA DE SEPARAÇÃO";
                html += "</b><br/><i>(Gerada automaticamente pelo Balcãojus.)</i><br/><br/><br/><br/><br/></p>";
                if (i == 0)
                    html += "<h1 style=\"text-align: center;\">Processo N&ordm; " + Utils.formatarNumeroProcesso(numProc) + "</h1>";
                html += "<br/><br/><br/><h2 style=\"text-align: center;\">Evento " + movimento;
                html += "</h2><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>";
                html += "<p>Data: " + dataHora + "</p>";
                html += "<p>Número do Processo: " + Utils.formatarNumeroProcesso(numProc) + "</p>";
                if (movimento != null)
                    html += "<p>Número do Evento: " + movimento + "</p>";
                if (usuario != null)
                    html += "<p>Usuário: " + usuario + "</p>";
                if (descricao != null)
                    html += "<p>Descrição do Evento: " + descricao + "</p>";
                html += "</body></html>";
                byte[] abSep = new Html2Pdf().converter(html, false);
                bytes += abSep.length;
                PdfReader reader = new PdfReader(abSep);
                copy.addDocument(reader);
                reader.close();
            } else
                doc = docs.getJSONObject(i);
            idDocumento = doc.getString("idDocumento");
            this.status = Status.update(this.uuid, "Agregando documento " + (i + 1) + "/" + docs.length(), i * 2 + 1, docs.length() * 2 + 1, bytes);
            byte[] ab = SoapMNI.obterPecaProcessual(username, password, sistema, numProc, idDocumento);
            if (ab == null)
                continue;
            ContentInfo info = contentInfoUtil.findMatch(ab);
            if (info.getMimeType().startsWith("application/xml")) {
                // System.out.println("xml");
                this.status = Status.update(this.uuid, "Convertendo documento " + (i + 1) + "/" + docs.length() + " de XHTML para PDF", i * 2 + 2, docs.length() * 2 + 1, bytes);
                final XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(ab));
                String fileEncoding = xmlStreamReader.getEncoding();
                boolean fHtml = false;
                while (xmlStreamReader.hasNext()) {
                    int eventType = xmlStreamReader.next();
                    if (eventType == XMLStreamConstants.START_ELEMENT) {
                        if (xmlStreamReader.getLocalName().equals("html"))
                            fHtml = true;
                        break;
                    }
                }
                xmlStreamReader.close();
                if (fHtml) {
                    String html = new String(ab, fileEncoding);
                    // System.out.println(html);
                    ab = new Html2Pdf().converter(html, false);
                    info = contentInfoUtil.findMimeTypeMatch("application/pdf");
                }
            } else if (info.getMimeType().startsWith("text/html")) {
                // System.out.println("html");
                this.status = Status.update(this.uuid, "Convertendo " + (i + 1) + "/" + docs.length() + " de HTML para PDF", i * 2 + 2, docs.length() * 2 + 1, bytes);
                String html = new String(ab, StandardCharsets.UTF_8);
                if (html.toLowerCase().contains("charset=windows-1252") || html.toLowerCase().contains("iso-8859-1"))
                    html = new String(ab, StandardCharsets.ISO_8859_1);
                // Removendo comentários no tag <style> do html que estavam desativados usando
                // <!-- -->, o que inclusive não está correto. Isso ocasionava um erro que
                // produzia uma página em branco no PDF completo.
                html = html.replaceAll("(?s)\\<!--.*?--\\>", "");
                // System.out.println(html);
                ab = new Html2Pdf().converter(html, false);
                info = contentInfoUtil.findMimeTypeMatch("application/pdf");
            } else if ("application/pdf".equals(info.getMimeType())) {
            // System.out.println("pdf");
            } else
                throw new PresentableException("Não foi possível obter um PDF. (" + info.getMimeType() + ")");
            bytes += ab.length;
            PdfReader reader = new PdfReader(ab);
            copy.addDocument(reader);
            reader.close();
        }
        document.close();
        this.status = Status.update(this.uuid, "PDF completo gerado", docs.length() * 2 + 1, docs.length() * 2 + 1, bytes);
    } catch (Exception ex) {
        this.status.ex = ex;
        Status.update(this.uuid, this.status);
    }
    return bufName;
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) HashMap(java.util.HashMap) JSONArray(org.json.JSONArray) PdfReader(com.itextpdf.text.pdf.PdfReader) Document(com.itextpdf.text.Document) ContentInfoUtil(com.j256.simplemagic.ContentInfoUtil) PresentableException(com.crivano.swaggerservlet.PresentableException) PdfCopy(com.itextpdf.text.pdf.PdfCopy) JSONObject(org.json.JSONObject) ContentInfo(com.j256.simplemagic.ContentInfo) ByteArrayInputStream(java.io.ByteArrayInputStream) FileOutputStream(java.io.FileOutputStream) PdfSmartCopy(com.itextpdf.text.pdf.PdfSmartCopy) PresentableException(com.crivano.swaggerservlet.PresentableException)

Example 14 with PresentableException

use of com.crivano.swaggerservlet.PresentableException in project balcaovirtual by trf2-jus-br.

the class Utils method limparHtml.

public static String limparHtml(String s, String tipoDeConteudo) throws PresentableException {
    if (!s.contains(Utils.HTML_START) || !s.contains(Utils.HTML_END))
        throw new PresentableException("Não foi possível obter " + tipoDeConteudo + ", por favor tente novamente em alguns minutos.");
    if (s.contains(Utils.HTML_START))
        s = s.substring(s.indexOf(Utils.HTML_START) + Utils.HTML_START.length());
    if (s.contains(Utils.HTML_END))
        s = s.substring(0, s.indexOf(Utils.HTML_END));
    s = s.replaceAll(" width=\"[0-9]+\"", " width=\"100%\"");
    s = s.replaceAll("src=\"./imagens/brasao-apolo.jpg\"", "src=\"" + getBaseUrl() + "/assets/brasao-260x260.png\"");
    s = s.replaceAll("font-size: [0-9]+pt", "");
    s = s.replaceAll(" face=\"Times New Roman\"", "");
    s = s.replaceAll(" color=\"#[0-9]+\"", "");
    return s;
}
Also used : PresentableException(com.crivano.swaggerservlet.PresentableException)

Example 15 with PresentableException

use of com.crivano.swaggerservlet.PresentableException in project balcaovirtual by trf2-jus-br.

the class ProcessoNumeroMarcasGet method run.

@Override
public void run(Request req, Response resp, BalcaojusContext ctx) throws Exception {
    Usuario u = BalcaojusServlet.getPrincipal();
    if (u.usuarios == null)
        throw new PresentableException("Usuário não possui identificador e unidade");
    UsuarioDetalhe ud = u.usuarios.get(req.sistema.toLowerCase());
    resp.list = new ArrayList<>();
    if (ud == null)
        throw new PresentableUnloggedException("disabled");
    try (Dao dao = new Dao()) {
        Processo p = dao.obtemProcesso(req.numero, req.sistema, true);
        List<Object[]> l = dao.obtemMarcas(p, u.isInterno(), ud.id, ud.codunidade);
        if (l == null)
            return;
        for (Object[] i : l) {
            br.jus.trf2.balcaojus.model.Marca m = (br.jus.trf2.balcaojus.model.Marca) i[0];
            String t = (String) i[1];
            Marca r = new Marca();
            r.dataalteracao = m.getMarcDfAlteracao();
            r.idestilo = Long.toString(m.getEstilo().getEstiId());
            r.idmarca = Long.toString(m.getMarcId());
            r.idpeca = m.getMarcIdPeca();
            r.nomeusuario = m.getMarcNmUsu();
            r.paginicial = m.getMarcNrPagInicial() != null ? m.getMarcNrPagInicial().toString() : null;
            r.pagfinal = m.getMarcNrPagFinal() != null ? m.getMarcNrPagFinal().toString() : null;
            r.texto = m.getMarcTxConteudo();
            r.texto = t != null ? t + (m.getMarcTxConteudo() != null ? " - " + m.getMarcTxConteudo() : "") : m.getMarcTxConteudo();
            resp.list.add(r);
        }
    }
}
Also used : Usuario(br.jus.trf2.balcaojus.AutenticarPost.Usuario) Processo(br.jus.trf2.balcaojus.model.Processo) Marca(br.jus.trf2.balcaojus.IBalcaojus.Marca) PresentableUnloggedException(com.crivano.swaggerservlet.PresentableUnloggedException) PresentableException(com.crivano.swaggerservlet.PresentableException) UsuarioDetalhe(br.jus.trf2.balcaojus.AutenticarPost.UsuarioDetalhe)

Aggregations

PresentableException (com.crivano.swaggerservlet.PresentableException)15 PresentableUnloggedException (com.crivano.swaggerservlet.PresentableUnloggedException)7 Usuario (br.jus.trf2.balcaojus.AutenticarPost.Usuario)4 UsuarioDetalhe (br.jus.trf2.balcaojus.AutenticarPost.UsuarioDetalhe)3 FetchResponse (br.jus.trf2.balcaojus.CertidaoEmitirRequisitanteCpfcnpjPost.FetchResponse)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3 ProcessoValido (br.jus.trf2.balcaojus.IBalcaojus.ProcessoValido)2 Processo (br.jus.trf2.balcaojus.model.Processo)2 JWTVerifyException (com.auth0.jwt.JWTVerifyException)2 Document (com.itextpdf.text.Document)2 PdfCopy (com.itextpdf.text.pdf.PdfCopy)2 PdfReader (com.itextpdf.text.pdf.PdfReader)2 PdfSmartCopy (com.itextpdf.text.pdf.PdfSmartCopy)2 ContentInfo (com.j256.simplemagic.ContentInfo)2 ContentInfoUtil (com.j256.simplemagic.ContentInfoUtil)2 FileOutputStream (java.io.FileOutputStream)2 IOException (java.io.IOException)2 InvalidKeyException (java.security.InvalidKeyException)2 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)2 SignatureException (java.security.SignatureException)2