예제 #1
0
  private PdfPTable buildPersonnes(Fiche fiche) {
    PdfPCell cell;
    PdfPTable table = new PdfPTable(new float[] {1, 1.5f, 2.5f, 1});
    table.setWidthPercentage(100);

    cell = new PdfPCell(new Phrase("3_ Personnes concernées", FONT_NORMAL));
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell.setColspan(4);
    table.addCell(cell);

    /** Appelants */
    cell = new PdfPCell(new Phrase("Requérants: ", FONT_NORMAL));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    cell.setBorder(0);
    table.addCell(cell);

    boolean premierAppelant = true;

    if (fiche.getAppelants() == null || fiche.getAppelants().isEmpty()) {
      cell = new PdfPCell(new Phrase("", FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      cell.setColspan(2);
      table.addCell(cell);

      cell = new PdfPCell(new Phrase("", FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      table.addCell(cell);
    }

    for (Appelant appelant : fiche.getAppelants()) {

      if (!premierAppelant) {

        cell = new PdfPCell(new Phrase("", FONT_NORMAL));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(0);
        table.addCell(cell);
      } else {
        premierAppelant = false;
      }

      cell = new PdfPCell(new Phrase(appelant.getRequerant(), FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      cell.setColspan(2);
      table.addCell(cell);

      cell = new PdfPCell(new Phrase(appelant.getNumero(), FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      table.addCell(cell);
    }

    /** Personnes */
    cell = new PdfPCell(new Phrase("Personnes: ", FONT_NORMAL));
    cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    cell.setBorder(0);
    table.addCell(cell);

    boolean premierePersonne = true;

    if (fiche.getPersonnes() == null || fiche.getPersonnes().isEmpty()) {
      cell = new PdfPCell(new Phrase("", FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      table.addCell(cell);

      cell = new PdfPCell(new Phrase("", FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      cell.setColspan(2);
      table.addCell(cell);
    }

    for (Personne personne : fiche.getPersonnes()) {

      if (!premierePersonne) {

        cell = new PdfPCell(new Phrase("", FONT_NORMAL));
        cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell.setBorder(0);
        table.addCell(cell);

      } else {
        premierePersonne = false;
      }

      cell =
          new PdfPCell(
              new Phrase(
                  (personne.getNombre() == null ? "" : (personne.getNombre() + " - "))
                      + personne.getCategorie().getLibelleLong(),
                  FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      table.addCell(cell);

      String nomAvecDetails = personne.getNom();
      if (StringUtils.isNotBlank(personne.getDetails())) {
        nomAvecDetails += " - " + personne.getDetails();
      }
      cell = new PdfPCell(new Phrase(nomAvecDetails, FONT_NORMAL));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      cell.setColspan(2);
      table.addCell(cell);
    }

    table.setSpacingBefore(5);
    table.setSpacingAfter(5);

    return table;
  }
  private PdfPTable buildTable(List<Fiche> fiches) throws DocumentException {

    PdfPTable table = new PdfPTable(9);
    table.setWidthPercentage(100);
    int[] widths = {14, 8, 28, 15, 20, 30, 30, 13, 33};
    table.setWidths(widths);
    table.setHeaderRows(1);

    PdfPCell cell = new PdfPCell(new Phrase("N° Fiche", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Heure", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Nature des faits et nombre", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Equipages", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Quartier", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Lieu", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Personnes concernées", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Procédures", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    cell = new PdfPCell(new Phrase("Situation initiale", FONT_NORMAL));
    cell.setFixedHeight(40);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    table.addCell(cell);

    SimpleDateFormat hf = new SimpleDateFormat("HH:mm");
    SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    DateTime currentDate = null;

    boolean addRowDate;
    for (Fiche f : fiches) {

      Historique creation = f.getHistoriques().iterator().next();

      // Check if we need a new row to display the day
      addRowDate = false;
      if (currentDate == null) {
        currentDate = new DateTime(creation.getDateAction());
        addRowDate = true;
      } else {
        DateTime lastDate = new DateTime(creation.getDateAction());
        if (currentDate.getDayOfYear() != lastDate.getDayOfYear()) {
          currentDate = lastDate;
          addRowDate = true;
        }
      }

      if (addRowDate) {
        cell = new PdfPCell(new Phrase(df.format(currentDate.toDate()), FONT_NORMAL));
        cell.setColspan(9);
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
      }

      // N° Fiche
      cell = new PdfPCell(new Phrase(f.getReference(), FONT_NORMAL));
      table.addCell(cell);

      // Heure d'arrivée  #31569
      cell =
          f.getGdhAppel() != null
              ? new PdfPCell(new Phrase(hf.format(f.getGdhAppel()), FONT_NORMAL))
              : new PdfPCell();
      cell.setHorizontalAlignment(Element.ALIGN_CENTER);
      table.addCell(cell);

      // Faits
      StringBuilder sb = new StringBuilder();
      boolean first = true;
      for (Fait fa : f.getFaits()) {
        if (first) {
          first = false;
        } else {
          sb.append("\n");
        }

        sb.append(fa.getNombre()).append(" ").append(fa.getNature().getLibelleLong());
      }
      cell = new PdfPCell(new Phrase(sb.toString(), FONT_NORMAL));
      table.addCell(cell);

      // Equipages
      sb = new StringBuilder();
      first = true;
      for (Patrouille pa : f.getPatrouilles()) {
        if (first) {
          first = false;
        } else {
          sb.append("\n");
        }
        sb.append(pa.getIndicatif().getLibelleLong());
      }
      cell = new PdfPCell(new Phrase(sb.toString(), FONT_NORMAL));
      table.addCell(cell);

      // Quartier
      cell = new PdfPCell(new Phrase(f.getAdresse().getQuartier().getLibelle(), FONT_NORMAL));
      table.addCell(cell);

      // Lieu
      cell =
          new PdfPCell(
              new Phrase(
                  f.getAdresse().getNumeroVoie() + " " + f.getAdresse().getNomVoie().getLibelle(),
                  FONT_NORMAL));
      table.addCell(cell);

      // Personnes
      sb = new StringBuilder();
      first = true;
      for (Personne pe : f.getPersonnes()) {
        if (first) {
          first = false;
        } else {
          sb.append("\n");
        }
        sb.append(pe.getCategorie().getLibelleLong())
            .append(" : ")
            .append(StringUtils.isEmpty(pe.getNom()) ? "-" : pe.getNom());
      }
      cell = new PdfPCell(new Phrase(sb.toString(), FONT_NORMAL));
      table.addCell(cell);

      // Procedures
      sb = new StringBuilder();
      first = true;
      for (Procedure pr : f.getProcedures()) {
        if (first) {
          first = false;
        } else {
          sb.append("\n");
        }
        sb.append(pr.getCategorie().getLibelleCourt()).append(" - ").append(pr.getNumero());
      }
      cell = new PdfPCell(new Phrase(sb.toString(), FONT_NORMAL));
      table.addCell(cell);

      // Titre de la situation initiale
      cell =
          new PdfPCell(
              new Phrase(FicheEventReportHelper.construitLibelleSituationInitiale(f), FONT_NORMAL));
      table.addCell(cell);
    }

    return table;
  }