import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;
import Acesso;
import java.util.Vector;
import java.net.URL;
import Profissionais;
import java.io.*;

/**
 * Esta classe gera o pdf contendo todos os profissionais por estado,
 * unidade e especialidade
 * Desenvolvido por Gisele Consoline
 */
public class PdfEstado {

  private Vector vetProfissionais;
  private String estado = "";
  private String unidade = "";
  private String especialidade = "";

  /**
   * Recebe as strings passadas pelo usuário para incrementar as váriáveis
   * globais
   */
    public PdfEstado(Vector vetProfissionais, String estado, String unidade, String especialidade) {
      this.vetProfissionais = vetProfissionais;
      this.estado = estado;
      this.unidade = unidade;
      this.especialidade = especialidade;
    }

  /**
   * Recebe os parametros e gera o arquivo relatorio_estado.pdf
   */
    public void processaPdf(OutputStream output){
        System.out.println("Gerando arquivo pdf por estado...");
        // criação de um documento com um certo tamanho (A4)
        Document document = new Document(PageSize.A4);

        //Strings do path das imagens de produção e desenvolvimento
        String iProd = "//usr//local//apache//htdocs//relatorio//imagem//";
        String iDesenv = "c:\\jbuilder5\\jakarta-tomcat-3.2.1\\webapps\\relatorio\\imagem\\";

        try {
            // criação do arquivo.pdf
            PdfWriter.getInstance(document, output);

            // Adição de metadados no documento
            document.addAuthor("Gisele Consoline");
            document.addSubject("SISREG em formato PDF");

            document.open();

            Table datatable = new Table(3);
            datatable.setCellsFitPage(true);

            Image img = Image.getInstance(/*iProd*/ iDesenv + "lg_sisreg2.jpg");
            img.scalePercent(80);
            Chunk ck = new Chunk(img, 0, -5);

            Image sisreg = Image.getInstance(/*iProd*/ iDesenv + "lg_ministerio3.jpg");
            sisreg.scalePercent(80);
            Chunk ckSisreg = new Chunk(sisreg, 0, -5);

            datatable.setPadding(4);
            datatable.setSpacing(0);
            int headerwidths[] = {20, 60, 20};
            datatable.setWidths(headerwidths);
            datatable.setWidth(100);

            //incluindo imagem no titulo da tabela
            Cell cell = new Cell(new Chunk(img, 0, -20));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setVerticalAlignment(Element.ALIGN_BOTTOM);
            cell.setColspan(1);
            cell.setBorder(0);
            datatable.addCell(cell);

            cell = new Cell(new Phrase("Estado / Unidade / Especialidade", FontFactory.getFont(FontFactory.HELVETICA, 14, Font.BOLD)));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setLeading(30);
            cell.setColspan(1);
            cell.setBorder(1);
            datatable.addCell(cell);

            Cell cell2 = new Cell(new Chunk(sisreg, 0, -20));
            cell2.setHorizontalAlignment(Element.ALIGN_RIGHT);
            cell2.setVerticalAlignment(Element.ALIGN_BOTTOM);
            cell2.setColspan(1);
            cell2.setBorder(0);
            datatable.addCell(cell2);

            Cell cTitulo = new Cell(new Phrase("Estado...............:", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD)));
            cTitulo.setHorizontalAlignment(Element.ALIGN_LEFT);
            cTitulo.setColspan(1);
            cTitulo.setBorder(1);
            datatable.addCell(cTitulo);

            Cell cEstado = new Cell(new Phrase(estado, FontFactory.getFont(FontFactory.HELVETICA, 12)));
            cEstado.setHorizontalAlignment(Element.ALIGN_LEFT);
            cEstado.setColspan(2);
            cEstado.setBorder(1);
            datatable.addCell(cEstado);

            Cell cTitUnid = new Cell(new Phrase("Unidade.............:", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD)));
            cTitUnid.setHorizontalAlignment(Element.ALIGN_LEFT);
            cTitUnid.setColspan(1);
            cTitUnid.setBorder(0);
            datatable.addCell(cTitUnid);

            Cell cUnidade = new Cell(new Phrase(unidade, FontFactory.getFont(FontFactory.HELVETICA, 12)));
            cUnidade.setHorizontalAlignment(Element.ALIGN_LEFT);
            cUnidade.setColspan(2);
            cUnidade.setBorder(0);
            datatable.addCell(cUnidade);

            Cell cTitEsp = new Cell(new Phrase("Especialidade...:", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD)));
            cTitEsp.setHorizontalAlignment(Element.ALIGN_LEFT);
            cTitEsp.setColspan(1);
            cTitEsp.setBorder(0);
            datatable.addCell(cTitEsp);

            Cell cEsp = new Cell(new Phrase(especialidade, FontFactory.getFont(FontFactory.HELVETICA, 12)));
            cEsp.setHorizontalAlignment(Element.ALIGN_LEFT);
            cEsp.setColspan(2);
            cEsp.setBorder(0);
            datatable.addCell(cEsp);

            datatable.setDefaultCellBorderWidth(2);
            datatable.setDefaultHorizontalAlignment(1);
            datatable.setDefaultRowspan(2);

            cell = new Cell(new Phrase("CPF", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD)));
            cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
            datatable.addCell(cell);

            cell = new Cell(new Phrase("Nome do Profissional", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD)));
            cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
            cell.setColspan(2);
            datatable.addCell(cell);

            // fim do header da tabela
            datatable.endHeaders();

            datatable.setDefaultCellBorderWidth(1);
            datatable.setDefaultRowspan(1);

          if (this.vetProfissionais.size()>0){
            for(int i=0; i<this.vetProfissionais.size(); i++){
	      Profissionais oProfissionais = (Profissionais) this.vetProfissionais.elementAt(i);

                Cell cCpf = new Cell(new Phrase(oProfissionais.getCpf(), FontFactory.getFont(FontFactory.HELVETICA, 10)));
                cCpf.setHorizontalAlignment(Element.ALIGN_LEFT);
                datatable.addCell(cCpf);

                Cell cellNome = new Cell(new Phrase(oProfissionais.getProfissional(), FontFactory.getFont(FontFactory.HELVETICA, 10)));
                cellNome.setColspan(2);
                cellNome.setHorizontalAlignment(Element.ALIGN_LEFT);
                datatable.addCell(cellNome);
            }
          }
            document.add(datatable);
            System.out.println("Arquivo PDF gerado com sucesso!");
        }
        catch(Exception e) {
            System.out.println("Ocorreram problemas ao gerar o arquivo PDF:" + e.getMessage());
            e.printStackTrace();
        }

        // fecha o documento
        document.close();
    }
}

