com.solidmaps.webapp.report.RequerimentAlterLicenseExercitoPDF.java Source code

Java tutorial

Introduction

Here is the source code for com.solidmaps.webapp.report.RequerimentAlterLicenseExercitoPDF.java

Source

package com.solidmaps.webapp.report;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Calendar;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import com.solidmaps.webapp.entity.CharterTypeEntity;
import com.solidmaps.webapp.entity.LicenseEXEntity;
import com.solidmaps.webapp.entity.LicenseExCharterProductEntity;
import com.solidmaps.webapp.utils.DateUtils;

/**
 * Formulrio: EX01 - Requerimento para Apostilamento de Certificado de Registro - PJ
 * 
 * @author brunorocca
 *
 */
public class RequerimentAlterLicenseExercitoPDF {

    private String filePath;

    private final String WINDOWS_LINE_SEPARATOR = "\r\n";

    private Integer numLine = 1;

    public RequerimentAlterLicenseExercitoPDF(String filePath) {
        this.filePath = filePath;
    }

    private final Font FONT_PARAGRAPH = new Font(FontFamily.TIMES_ROMAN, 10, Font.NORMAL);
    private final Font FONT_HEADER = new Font(FontFamily.TIMES_ROMAN, 10, Font.NORMAL);

    /**
     * 
     * @param license 
     *       Licensa vigente do Exrcito
     * @param listCharterType 
     *       Lista de Atividades a incluir
     * @param listProducts
     *       Lista de Produtos a incluir, bem como os limites de Armazenamento
     * @param text
     *       Texto sobre a altees Cadastrais
     * @param type
     *       Tipo de alterao cadastral (Endereo, Responsvel, etc)
     */
    public String generate(LicenseEXEntity license, List<CharterTypeEntity> listCharterType,
            List<LicenseExCharterProductEntity> listProducts, String text, String type) {

        Document doc = new Document();
        PdfWriter docWriter = null;
        String fileDocPath = "";

        try {

            fileDocPath = this.createDocument(doc, docWriter, license);
            this.createParagraph(doc, license);
            this.createCharter(doc, license, listCharterType);
            this.createIncludeProduct(doc, license, listProducts);
            this.createAlterLicense(doc, license, text, type);
            this.createSignature(doc, license);

        } catch (DocumentException dex) {
            dex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (doc != null) {
                // close the document
                doc.close();
            }
            if (docWriter != null) {
                // close the writer
                docWriter.close();
            }
        }

        return fileDocPath;

    }

    private String createDocument(Document doc, PdfWriter docWriter, LicenseEXEntity license)
            throws FileNotFoundException, DocumentException {

        String fileName = "REQUERIMENTO PARA APOSTILAMENTO DE CERTIFICADO DE REGISTRO " + license.getNumRegister()
                + ".pdf";

        docWriter = PdfWriter.getInstance(doc, new FileOutputStream(filePath + fileName));

        // document header attributes
        doc.addAuthor("EnforceMaps");
        doc.addCreationDate();
        doc.addProducer();
        doc.addCreator("EnforceMaps");
        doc.addTitle(
                "REQUERIMENTO PARA APOSTILAMENTO DE CERTIFICADO DE REGISTRO " + license.getNumRegister() + ".pdf");
        doc.setPageSize(PageSize.A4);

        // open document
        doc.open();

        return fileName;
    }

    private void createParagraph(Document doc, LicenseEXEntity license) throws DocumentException {

        StringBuilder sbHeader = new StringBuilder().append("Exmo Sr Comandante da ")
                .append(license.getCompany().getRegion()).append(" Regio Militar");

        StringBuilder sbParagraph = new StringBuilder().append(license.getCompany().getName().toUpperCase())
                .append(", incrita sob o CNPJ n ").append(license.getCompany().getCnpj())
                .append(", estabelecida na cidade de ").append(license.getCompany().getCity().toUpperCase())
                .append("/").append(license.getCompany().getState()).append(",  ")
                .append(license.getCompany().getStreet()).append(", CEP ").append(license.getCompany().getCep())
                .append(", email: ").append(license.getUserResponsable().getEmail()).append(", fone/fax ")
                .append(license.getUserResponsable().getPhoneDDD()).append(" ")
                .append(license.getUserResponsable().getPhoneNumber()).append(" representada neste ato por seu ")
                .append(license.getCompany().getUserResponsable().getOffice()).append(", Sr ")
                .append(license.getCompany().getUserResponsable().getName()).append(", inscrito sob o CPF: ")
                .append(license.getCompany().getUserResponsable().getCpf())
                .append(", portador da cdula de identidade (RG): ")
                .append(license.getCompany().getUserResponsable().getRg()).append(", de nacionalidade ")
                .append(license.getCompany().getUserResponsable().getCountry()).append(", estado civil ")
                .append(license.getCompany().getUserResponsable().getMaritalStatus())
                .append(" profisso Engenheiro Qumico, domiciliado a ")
                .append(license.getCompany().getUserResponsable().getStreet())
                .append(license.getCompany().getUserResponsable().getStreet()).append(" CEP ")
                .append(license.getCompany().getUserResponsable().getCep());

        if (license.getCompany().getProcuratorEntity() != null) {
            sbParagraph.append(" e seus procuradores, conforme procurao anexo, Sr ")
                    .append(license.getCompany().getProcuratorEntity().getName()).append(" inscrito sob o CPF n: ")
                    .append(license.getCompany().getProcuratorEntity().getCpf())
                    .append(" portador da cdula de identidade (RG) n: ")
                    .append(license.getCompany().getProcuratorEntity().getRg()).append(" ")
                    .append(license.getCompany().getProcuratorEntity().getRgExpeditionCity());

        }

        sbParagraph.append(", vem pelo presente, requerer  V Ex.a ");

        // Texto cabealho
        Paragraph paragraphHeaderText = new Paragraph(
                "REQUERIMENTO PARA APOSTILAMENTO DE CERTIFICADO DE REGISTRO - PJ");
        paragraphHeaderText.setFont(FONT_HEADER);
        paragraphHeaderText.setAlignment(Element.ALIGN_CENTER);

        // Texto Comandante
        Paragraph paragraphComand = new Paragraph(sbHeader.toString());
        paragraphComand.setFont(FONT_PARAGRAPH);

        // Texto da Empresa
        Paragraph paragraphCompany = new Paragraph(sbParagraph.toString());
        paragraphCompany.setFont(FONT_PARAGRAPH);

        doc.add(paragraphHeaderText);
        doc.add(Chunk.NEWLINE);
        doc.add(paragraphComand);
        doc.add(Chunk.NEWLINE);
        doc.add(paragraphCompany);
        doc.add(Chunk.NEWLINE);

    }

    /**
     * Incluso de Atividades
     * 
     * @param doc
     * @param license
     * @param listCharterType
     * @throws DocumentException
     */
    private void createCharter(Document doc, LicenseEXEntity license, List<CharterTypeEntity> listCharterType)
            throws DocumentException {

        if (listCharterType == null || listCharterType.isEmpty()) {
            return;
        }

        StringBuilder sb = new StringBuilder().append(numLine++).append("-) ")
                .append("APOSTILAMENTO em seu CERTIFICADO DE REGISTRO n: ").append(license.getNumRegister())
                .append(" para a incluso das atividades:");

        for (CharterTypeEntity charterType : listCharterType) {
            sb.append(charterType.getName()).append(", ");
        }

        sb.append(
                " em todos os produtos produtos j listados no Certificado de Registro, de acordo com o artigo 96 do Regulamento")
                .append(" aprovado pelo Decreto nmero 3.665, de 20 de novembro de 2000, para fiscalizao de produtos controlados (R-105) ")
                .append(" e legislao complementar");

        Paragraph paragraph = new Paragraph(sb.toString());
        paragraph.setFont(FONT_PARAGRAPH);

        doc.add(Chunk.NEWLINE);
        doc.add(paragraph);
        doc.add(Chunk.NEWLINE);

    }

    /**
     * Incluso de Produtos
     * 
     * @param doc
     * @param license
     * @param listProducts
     * @throws DocumentException
     */
    private void createIncludeProduct(Document doc, LicenseEXEntity license,
            List<LicenseExCharterProductEntity> listProducts) throws DocumentException {

        if (listProducts == null || listProducts.isEmpty()) {
            return;
        }

        StringBuilder sb = new StringBuilder().append(numLine++).append("-) ")
                .append("APOSTILAMENTO em seu CERTIFICADO DE REGISTRO n: ").append(license.getNumRegister())
                .append(" para a incluso dos seguintes produtos:").append(WINDOWS_LINE_SEPARATOR);

        for (LicenseExCharterProductEntity productCharter : listProducts) {
            sb.append(productCharter.getProduct().getOrder()).append(" - ")
                    .append(productCharter.getProduct().getName()).append(" - ")
                    .append(productCharter.getQtdProduct()).append(" - ").append(productCharter.getTypeQtdProduct())
                    .append(WINDOWS_LINE_SEPARATOR);
        }

        sb.append(
                "Para todas as atividades j cadastradas no Certificado de Registro, de acordo  com o Artigo 96 do Regulamento ")
                .append("aprovado pelo Decreto No. 3.665, de 20 de Novembro de 2000, para a fiscalizao de Produtos Controlados (R-105) ")
                .append("e legislao complementar.");

        Paragraph paragraph = new Paragraph(sb.toString());
        paragraph.setFont(FONT_PARAGRAPH);

        doc.add(Chunk.NEWLINE);
        doc.add(paragraph);
        doc.add(Chunk.NEWLINE);

    }

    /**
     * Alteraes Cadastrais
     * 
     * @param doc
     * @param license
     * @param listProducts
     * @throws DocumentException
     */
    private void createAlterLicense(Document doc, LicenseEXEntity license, String text, String type)
            throws DocumentException {

        if (StringUtils.isEmpty(text)) {
            return;
        }

        StringBuilder sb = new StringBuilder().append(numLine++).append("-) ").append("CORREO de ").append(type)
                .append(" em seu CERTIFICADO DE REGISTRO n:").append(license.getNumRegister()).append(" para: ")
                .append(text).append(" conforme cadastrado junto a Prefeitura da Cidade de ")
                .append(license.getCompany().getCity()).append("/").append(license.getCompany().getState())
                .append(" e Receita Federal.");

        Paragraph paragraph = new Paragraph(sb.toString());
        paragraph.setFont(FONT_PARAGRAPH);

        doc.add(Chunk.NEWLINE);
        doc.add(paragraph);
        doc.add(Chunk.NEWLINE);

    }

    private void createSignature(Document doc, LicenseEXEntity license) throws DocumentException {

        StringBuilder sbTerms = new StringBuilder().append("Nestes termos").append(WINDOWS_LINE_SEPARATOR)
                .append(" Pede deferimento.");

        StringBuilder sbDate = new StringBuilder().append(license.getCompany().getCity()).append("/")
                .append(license.getCompany().getState()).append(", ")
                .append(DateUtils.format(Calendar.getInstance()));

        StringBuilder sbSignature = new StringBuilder().append("____________________________________________")
                .append(WINDOWS_LINE_SEPARATOR).append(license.getCompany().getName())
                .append(WINDOWS_LINE_SEPARATOR).append(license.getCompany().getUserResponsable().getName())
                .append(" - ").append(license.getCompany().getUserResponsable().getOffice());

        Paragraph paragraphTerms = new Paragraph(sbTerms.toString());
        paragraphTerms.setFont(FONT_PARAGRAPH);
        paragraphTerms.setAlignment(Element.ALIGN_CENTER);

        Paragraph paragraphDate = new Paragraph(sbDate.toString());
        paragraphDate.setFont(FONT_PARAGRAPH);

        Paragraph paragraphSignature = new Paragraph(sbSignature.toString());
        paragraphSignature.setFont(FONT_PARAGRAPH);
        paragraphSignature.setAlignment(Element.ALIGN_CENTER);

        doc.add(Chunk.NEWLINE);
        doc.add(paragraphTerms);
        doc.add(Chunk.NEWLINE);
        doc.add(paragraphDate);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(paragraphSignature);
        doc.add(Chunk.NEWLINE);

    }

}