Example usage for com.lowagie.text.pdf PdfPTable PdfPTable

List of usage examples for com.lowagie.text.pdf PdfPTable PdfPTable

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfPTable PdfPTable.

Prototype

public PdfPTable(PdfPTable table) 

Source Link

Document

Constructs a copy of a PdfPTable.

Usage

From source file:org.caisi.tickler.web.TicklerPrinter.java

License:Open Source License

public void printTicklerInfo() throws DocumentException {

    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(50f);/*w w  w.  j ava2  s .  c  o m*/
    table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

    addStandardTableEntry(table, "Created By", tickler.getProvider().getFormattedName());
    addStandardTableEntry(table, "Last Updated", formatter.format(tickler.getUpdateDate()));
    addStandardTableEntry(table, "Service Date", formatter.format(tickler.getServiceDate()));
    addStandardTableEntry(table, "Assigned To", tickler.getAssignee().getFormattedName());
    addStandardTableEntry(table, "Priority", tickler.getPriority().toString());
    addStandardTableEntry(table, "Status", tickler.getStatusWeb());
    addStandardTableEntry(table, "Program",
            (tickler.getProgram() != null) ? tickler.getProgram().getName() : "N/A");

    getDocument().add(table);

    table = new PdfPTable(1);
    table.setWidthPercentage(70f);

    PdfPCell cell1 = new PdfPCell(getParagraph("Message"));

    cell1.setBorder(PdfPCell.NO_BORDER);
    cell1.setHorizontalAlignment(Element.ALIGN_LEFT);

    table.addCell(cell1);

    cell1 = new PdfPCell(getParagraph(tickler.getMessage()));
    cell1.setHorizontalAlignment(Element.ALIGN_LEFT);

    table.addCell(cell1);

    getDocument().add(table);

}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.CaseStudieSummaryPDF.java

License:Open Source License

/**
 * This method is used for add the main information table of project summary
 *///from www .java  2  s  . c om
private void addMainInformationTable() {

    String startDate, endDate;
    if (project.getStartDate() != null) {
        startDate = new SimpleDateFormat("dd-MM-yyyy").format(project.getStartDate());
    } else {
        startDate = this.messageReturn(null);
    }

    if (project.getEndDate() != null) {
        endDate = new SimpleDateFormat("dd-MM-yyyy").format(project.getEndDate());
    } else {
        endDate = this.messageReturn(null);
    }

    Paragraph cellContent;

    // Add content
    try {
        PdfPTable table = new PdfPTable(4);

        // Set table widths
        table.setLockedWidth(true);
        table.setTotalWidth(480);
        table.setWidths(new int[] { 3, 5, 3, 5 });

        // First row
        cellContent = new Paragraph(this.getText("summaries.project.startDate") + "\n" + " (dd-MM-yyyy)",
                TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 0);

        cellContent = new Paragraph(this.messageReturn(startDate), TABLE_BODY_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 0);

        cellContent = new Paragraph(this.getText("summaries.project.endDate") + "\n" + " (dd-MM-yyyy)",
                TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 0);

        cellContent = new Paragraph(this.messageReturn(endDate), TABLE_BODY_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 0);

        // Second row
        cellContent = new Paragraph(this.getText("summaries.project.managementLiaison"), TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 1);

        cellContent = new Paragraph(this.messageReturn(project.getLiaisonInstitution().getAcronym() + " - "
                + project.getLiaisonInstitution().getName()), TABLE_BODY_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 1);

        cellContent = new Paragraph(this.getText("summaries.project.contactPerson"), TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 1);

        cellContent = new Paragraph(this.messageReturn(project.getOwner().getComposedName()), TABLE_BODY_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 1);

        // Third row
        cellContent = new Paragraph(this.getText("summaries.project.leadOrganization"), TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 0);
        if (project.getLeader() == null || project.getLeader().getInstitution() == null) {
            cellContent = new Paragraph(this.getText("summaries.project.empty"), TABLE_BODY_FONT);
        } else {
            cellContent = new Paragraph(
                    this.messageReturn(
                            this.messageReturn(project.getLeader().getInstitution().getComposedName())),
                    TABLE_BODY_FONT);

        }
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 0);

        cellContent = new Paragraph(this.getText("summaries.project.projectLeader"), TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 0);
        if (project.getLeaderPerson() == null || project.getLeaderPerson().getUser() == null) {
            cellContent = new Paragraph(this.getText("summaries.project.empty"), TABLE_BODY_FONT);
        } else {
            cellContent = new Paragraph(
                    this.messageReturn(project.getLeaderPerson().getUser().getComposedName()), TABLE_BODY_FONT);
        }

        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 0);

        // Fourth row
        cellContent = (new Paragraph(this.getText("summaries.project.projectType"), TABLE_BODY_BOLD_FONT));
        this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 1);

        cellContent = new Paragraph(this.messageReturn(project.getType().replaceAll("_", " ")),
                TABLE_BODY_FONT);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 1);

        // Fiveth row
        Chunk imdb = null;
        Font hyperLink = new Font(FontFactory.getFont("openSans", 10, Color.BLUE));
        hyperLink.setStyle(Font.UNDERLINE);

        // -- Not Bilateral
        if (!project.isBilateralProject()) {
            cellContent = (new Paragraph(this.getText("summaries.project.detailed"), TABLE_BODY_BOLD_FONT));
            this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 1);

            if (project.getWorkplanName() != null && !project.getWorkplanName().equals("")) {
                imdb = new Chunk(project.getWorkplanName(), hyperLink);
                try {
                    imdb.setAction(new PdfAction(new URL(this.messageReturn(project.getWorkplanURL()))));
                } catch (MalformedURLException exp) {
                    imdb = new Chunk(project.getWorkplanName(), TABLE_BODY_FONT);
                    LOG.error("There is an Malformed exception in " + project.getWorkplanName());
                }
            } else {
                imdb = new Chunk(this.getText("summaries.project.empty"), TABLE_BODY_FONT);
            }
        }

        // -- Bilateral
        else {
            cellContent = (new Paragraph(this.getText("summaries.project.ipContributions.proposal.space"),
                    TABLE_BODY_BOLD_FONT));
            this.addTableBodyCell(table, cellContent, Element.ALIGN_RIGHT, 1);

            if (project.getBilateralContractProposalName() != null
                    && !project.getBilateralContractProposalName().equals("")) {
                imdb = new Chunk(project.getBilateralContractProposalName(), hyperLink);
                try {
                    imdb.setAction(new PdfAction(new URL(this.messageReturn(project.getWorkplanURL()))));
                } catch (MalformedURLException exp) {
                    imdb = new Chunk(project.getBilateralContractProposalName(), TABLE_BODY_FONT);
                    LOG.error("There is an Malformed exception in bilateral contract: "
                            + project.getBilateralContractProposalName());
                }
            } else {
                imdb = new Chunk(this.getText("summaries.project.empty"), TABLE_BODY_FONT);
            }
        }

        cellContent = new Paragraph();
        cellContent.add(imdb);
        this.addTableBodyCell(table, cellContent, Element.ALIGN_LEFT, 1);

        document.add(table);
        document.add(Chunk.NEWLINE);
    } catch (DocumentException e) {
        LOG.error(
                "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                e);
    }
}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.CaseStudieSummaryPDF.java

License:Open Source License

/**
 * This method is used for add Outcomes in the project summary
 *//*from   w  w w . j a v  a2  s.  c  o m*/
private void addProjectOutcomes(String number) {
    try {
        Paragraph outcomesBlock = new Paragraph();
        outcomesBlock.setAlignment(Element.ALIGN_JUSTIFIED);
        Paragraph title = new Paragraph(number + ". " + this.getText("summaries.project.outcome"),
                HEADING2_FONT);
        outcomesBlock.add(title);
        outcomesBlock.add(Chunk.NEWLINE);
        ;
        title = new Paragraph();
        title.setFont(HEADING3_FONT);
        title.add(number + ".1 " + this.getText("summaries.project.outcomeNarrative"));
        outcomesBlock.add(title);
        outcomesBlock.add(Chunk.NEWLINE);
        ;

        // Project outcome statement
        Paragraph body = new Paragraph();
        body.setFont(BODY_TEXT_BOLD_FONT);
        body.add(this.getText("summaries.project.outcomeStatement"));

        // body.setFont(BODY_TEXT_FONT);
        if (project.getOutcomes() == null || project.getOutcomes().get(String.valueOf(midOutcomeYear)) == null
                || project.getOutcomes().get(String.valueOf(midOutcomeYear)).getStatement() == null
                || project.getOutcomes().get(String.valueOf(midOutcomeYear)).getStatement().equals("")) {
            body.add(": ");
            body.setFont(BODY_TEXT_FONT);
            body.add(this.getText("summaries.project.empty"));
        } else {
            body.setFont(BODY_TEXT_FONT);
            body.add(Chunk.NEWLINE);
            body.add(this
                    .messageReturn(project.getOutcomes().get(String.valueOf(midOutcomeYear)).getStatement()));

        }
        body.add(Chunk.NEWLINE);
        ;
        outcomesBlock.add(body);

        try {
            document.newPage();
            // document.add(outcomesBlock);
        } catch (Exception e) {
            LOG.error("There was an error trying to add the project focuses to the project summary pdf", e);
        }

        Anchor anchor;

        ////////////////// Reporting
        PdfPTable table;

        // **********************************************************************************
        // *************************** Outcome Case Studies *************************************
        // **********************************************************************************

        if (project.isReporting()) {
            document.newPage();
            Paragraph cell;

            if (project.getCaseStudies().isEmpty()) {
                document.add(
                        new Paragraph(this.getText("summaries.project.reporting.outcome.not.case.studies")));
            } else {
                title = new Paragraph();
                title.add(Chunk.NEWLINE);
                // document.add(title);
            }
            List<Project> lst = projectManager.getAllProjectsBasicInfo(APConstants.REPORTING_SECTION);
            Collections.sort(lst, new Comparator<Project>() {

                @Override
                public int compare(Project s1, Project s2) {
                    Integer p1 = s1.getId();
                    Integer p2 = s2.getId();
                    return p1.compareTo(p2);
                }
            });
            for (Project project : lst) {
                project = projectManager.getProject(project.getId());
                if (project.isWorkplanRequired()) {
                    String workPlanURL = this.getWorkplanURL();
                    if (workPlanURL != null || project.getWorkplanName() != null) {
                        project.setWorkplanURL(workPlanURL + project.getWorkplanName());
                    }
                }
                // Get a route for the bilateral contract
                if (project.isBilateralProject()) {
                    String bilateralContractURL = this.getBilateralContractURL();
                    if (bilateralContractURL != null || project.getBilateralContractProposalName() != null) {
                        project.setWorkplanURL(
                                bilateralContractURL + project.getBilateralContractProposalName());
                    }
                }

                // Getting the information of the Regions program
                project.setRegions(
                        ipProgramManager.getProjectFocuses(project.getId(), APConstants.REGION_PROGRAM_TYPE));

                // Getting the information of the Flagships program
                project.setFlagships(
                        ipProgramManager.getProjectFocuses(project.getId(), APConstants.FLAGSHIP_PROGRAM_TYPE));

                List<ProjectPartner> projectPartnerList = this.partnerManager.getProjectPartners(project, 0);

                for (ProjectPartner projectPartner : projectPartnerList) {
                    projectPartner
                            .setPartnerPersons(this.partnerPersonManager.getPartnerPersons(projectPartner));
                    projectPartner.setPartnerContributors(
                            partnerManager.getProjectPartnerContributors(projectPartner));
                }
                project.setProjectPartners(projectPartnerList);
                this.project = project;

                List<CasesStudies> caseStudiesList = caseStudiesManager.getCaseStudysByProject(project.getId());

                List<IPIndicator> ipIndicatorList;
                IPIndicator ipIndicator;
                if (caseStudiesList != null) {
                    if (!caseStudiesList.isEmpty()) {
                        try {
                            this.addProjectTitle();
                            this.addMainInformationTable();
                        } catch (Exception e) {
                            System.out.println(project.getId());
                            e.printStackTrace();
                        }
                    }

                    for (CasesStudies caseStudie : caseStudiesList) {
                        ipIndicatorList = new ArrayList<IPIndicator>();
                        for (CaseStudieIndicators indicatorCaseStudie : caseStudie
                                .getCaseStudieIndicatorses()) {
                            ipIndicator = indicatorManager
                                    .getIndicatorFlgship(indicatorCaseStudie.getIdIndicator());
                            ipIndicatorList.add(ipIndicator);
                        }
                        caseStudie.setCaseStudyIndicators(ipIndicatorList);
                    }
                    project.setCaseStudies(caseStudiesList);

                    int counter = 0;
                    for (CasesStudies caseStudy : project.getCaseStudies()) {

                        counter++;
                        table = new PdfPTable(1);
                        table.setLockedWidth(true);
                        table.setTotalWidth(500);

                        // case study
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.case.study") + " #" + counter,
                                TABLE_HEADER_FONT);
                        this.addTableHeaderCell(table, cell);
                        // this.addCustomTableCell(table, cell, Element.ALIGN_LEFT, BODY_TEXT_FONT, Color.WHITE,
                        // table.getNumberOfColumns(), 0, false);

                        // Title
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.title"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getTitle());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Outcome statement
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.outcomestatement"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getOutcomeStatement());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Research outputs
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.researchoutputs"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getResearchOutputs());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Research partners
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.researchPartners"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getResearchPartners());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // activities Contributed
                        cell = new Paragraph(
                                this.getText(
                                        "summaries.project.reporting.outcome.casestudy.activitiesContributed"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getActivities());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Non Research Partners
                        cell = new Paragraph(
                                this.getText(
                                        "summaries.project.reporting.outcome.casestudy.nonResearchPartners"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getNonResearchPartneres());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Output Users
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.outputUsers"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getOutputUsers());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Output Used
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.outputWasUsed"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getOutputUsed());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Evidence
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.evidenceOutcome"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getEvidenceOutcome());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // References
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.references"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getReferencesCase());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Outcome indicators
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.primaryOutcome",
                                        new String[] { String.valueOf(this.midOutcomeYear) }),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add("\n");
                        for (IPIndicator _ipIndicator : caseStudy.getCaseStudyIndicators()) {
                            if (_ipIndicator.getOutcome() != null) {
                                cell.add(_ipIndicator.getOutcome().getDescription());
                            }
                            cell.add(" " + _ipIndicator.getDescription() + "\n");
                        }
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // Explain link
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.explainLink"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(caseStudy.getExplainIndicatorRelation());
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // year
                        cell = new Paragraph(this.getText("summaries.project.reporting.outcome.casestudy.year"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        cell.add(String.valueOf(caseStudy.getYear()));
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        // upload
                        cell = new Paragraph(
                                this.getText("summaries.project.reporting.outcome.casestudy.upload"),
                                TABLE_BODY_BOLD_FONT);
                        cell.setFont(TABLE_BODY_FONT);
                        if (caseStudy.getFile() == null || caseStudy.getFile().equals("")) {
                            cell.add(this.messageReturn(null));
                        } else {
                            anchor = new Anchor(caseStudy.getFile(), TABLE_BODY_FONT_LINK);
                            anchor.setReference(config.getDownloadURL() + "/projects/" + project.getId()
                                    + "/caseStudy/" + caseStudy.getFile());
                            cell.add(anchor);
                        }
                        this.addTableBodyCell(table, cell, Element.ALIGN_LEFT, 1);

                        document.add(table);
                        document.add(new Paragraph(Chunk.NEWLINE));

                    }
                }

                document.newPage();
            }
        }

    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

/**
 * This method add Activities for the summary project
 *///from w  ww  . j a v  a  2  s . co  m
private void addActivities() {

    try {
        document.newPage();
        Paragraph activityBlock = new Paragraph("6. " + this.getText("summaries.project.activity"),
                HEADING2_FONT);
        activityBlock.setAlignment(Element.ALIGN_JUSTIFIED);
        activityBlock.add(Chunk.NEWLINE);

        PdfPTable table;
        List<Activity> listActivities = project.getActivities();

        if (listActivities.isEmpty()) {
            activityBlock.setFont(BODY_TEXT_FONT);
            activityBlock.add(this.getText("summaries.project.empty"));
            document.add(activityBlock);
        } else {
            activityBlock.add(Chunk.NEWLINE);
            document.add(activityBlock);
            int counter = 1;
            for (Activity activity : listActivities) {
                boolean printActity = true;
                if (activity != null) {
                    if (!project.isReporting()) {
                        Calendar c = Calendar.getInstance();
                        c.setTime(activity.getEndDate());
                        Calendar cStartDate = Calendar.getInstance();
                        cStartDate.setTime(activity.getStartDate());
                        if (c.get(Calendar.YEAR) != config.getPlanningCurrentYear()) {
                            if (cStartDate.get(Calendar.YEAR) != config.getPlanningCurrentYear()) {
                                printActity = false;
                            }

                        }

                        if (activity.getActivityStatus() == Integer
                                .parseInt(ProjectStatusEnum.Cancelled.getStatusId())) {
                            printActity = false;
                        }
                    }
                    if (printActity) {
                        table = new PdfPTable(2);
                        table.setTotalWidth(480);
                        table.setLockedWidth(true);

                        // Header table
                        activityBlock = new Paragraph();
                        activityBlock.setAlignment(Element.ALIGN_CENTER);
                        activityBlock.setFont(TABLE_HEADER_FONT);
                        activityBlock.add("Activity #" + counter);

                        PdfPCell cell_new = new PdfPCell(activityBlock);
                        cell_new.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell_new.setVerticalAlignment(Element.ALIGN_MIDDLE);
                        cell_new.setBackgroundColor(TABLE_HEADER_BACKGROUND);
                        cell_new.setUseBorderPadding(true);
                        cell_new.setPadding(3);
                        cell_new.setBorderColor(TABLE_CELL_BORDER_COLOR);
                        cell_new.setColspan(2);

                        this.addTableHeaderCell(table, cell_new);

                        // Activity title
                        activityBlock = new Paragraph();
                        activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                        activityBlock.add(this.getText("summaries.project.activities.title"));

                        activityBlock.setFont(TABLE_BODY_FONT);
                        activityBlock.add(this.messageReturn(activity.getTitle()));
                        activityBlock.add(Chunk.NEWLINE);
                        this.addTableColSpanCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1, 2);

                        // Activity description
                        activityBlock = new Paragraph();
                        activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                        activityBlock.add(this.getText("summaries.project.activities.description"));

                        activityBlock.setFont(TABLE_BODY_FONT);
                        activityBlock.add(this.messageReturn(activity.getDescription()));
                        activityBlock.add(Chunk.NEWLINE);
                        this.addTableColSpanCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1, 2);

                        String startDate = null;
                        String endDate = null;
                        try {
                            startDate = new SimpleDateFormat("dd-MM-yyyy").format(activity.getStartDate());
                        } catch (Exception e) {

                        }
                        try {

                            endDate = new SimpleDateFormat("dd-MM-yyyy").format(activity.getEndDate());
                        } catch (Exception e) {

                        }

                        // Activity Start Date
                        activityBlock = new Paragraph();
                        activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                        activityBlock.add(this.getText("summaries.project.startDate") + " (dd-MM-yyyy)" + ": ");

                        activityBlock.setFont(TABLE_BODY_FONT);
                        activityBlock.add(startDate);
                        activityBlock.add(Chunk.NEWLINE);
                        this.addTableBodyCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1);

                        // Activity End Date
                        activityBlock = new Paragraph();
                        activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                        activityBlock.add(this.getText("summaries.project.endDate") + " (dd-MM-yyyy)" + ": ");

                        activityBlock.setFont(TABLE_BODY_FONT);
                        activityBlock.add(endDate);
                        activityBlock.add(Chunk.NEWLINE);
                        this.addTableBodyCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1);

                        // Activity Leader
                        activityBlock = new Paragraph();
                        activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                        activityBlock.add(this.getText("summaries.project.activities.activityLeader") + ": ");
                        activityBlock.setFont(TABLE_BODY_FONT);

                        PartnerPerson activityPartnerPerson = activity.getLeader();

                        if (activityPartnerPerson != null) {
                            activityBlock.add(activityPartnerPerson.getComposedName());
                            String partnerInstitution = this.mapPartnerPersons
                                    .get(String.valueOf(activityPartnerPerson.getId()));
                            if (partnerInstitution != null) {
                                activityBlock.add(", " + partnerInstitution);
                            }
                        } else {
                            activityBlock.add(this.getText("summaries.project.empty"));
                        }
                        activityBlock.add(Chunk.NEWLINE);
                        this.addTableColSpanCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1, 2);

                        // if (project.isReporting()) {
                        // status
                        activityBlock = new Paragraph();
                        activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                        activityBlock.add(this.getText("summaries.project.activities.status"));

                        activityBlock.setFont(TABLE_BODY_FONT);
                        if (activity.getActivityStatus() > 0) {
                            activityBlock.add(statuses.get(String.valueOf(activity.getActivityStatus())));
                        } else {
                            activityBlock.add(" " + this.getText("summaries.project.empty"));
                            // }
                            activityBlock.add(Chunk.NEWLINE);

                            if (activity.isStatusCancelled() || activity.isStatusExtended()
                                    || activity.isStatusOnGoing()) {
                                this.addTableBodyCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1);

                                activityBlock = new Paragraph();
                                activityBlock.setFont(TABLE_BODY_BOLD_FONT);
                                activityBlock.add(this.getText("summaries.project.activities.justification"));

                                activityBlock.setFont(TABLE_BODY_FONT);
                                activityBlock.add(this.messageReturn(activity.getActivityProgress()));
                                activityBlock.add(Chunk.NEWLINE);

                                this.addTableBodyCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1);
                            } else {
                                this.addTableColSpanCell(table, activityBlock, Element.ALIGN_JUSTIFIED, 1, 2);
                            }
                        }

                        // document.add(Chunk.NEWLINE);
                        document.add(table);
                        activityBlock = new Paragraph();
                        activityBlock.add(Chunk.NEWLINE);
                        document.add(activityBlock);
                        counter++;

                    }
                }

            }

            // Leason regardins
            activityBlock = new Paragraph();
            activityBlock.setAlignment(Element.ALIGN_JUSTIFIED);
            activityBlock.setFont(BODY_TEXT_BOLD_FONT);
            if (!project.isReporting()) {
                activityBlock.add(this.getText("summaries.project.activities.lessonsRegarding"));
            } else {
                activityBlock.add(this.getText("summaries.project.activities.reporting.lessonsRegarding"));
            }
            activityBlock.setFont(BODY_TEXT_FONT);

            if (project.getComponentLesson("activities") != null) {
                activityBlock.add(this.messageReturn(project.getComponentLesson("activities").getLessons()));
            } else {
                activityBlock.add(this.messageReturn(null));
            }
            document.add(activityBlock);

        }

    } catch (DocumentException e) {
        LOG.error(
                "There was an error trying to add the project activities to the project summary pdf of project {} ",
                e, project.getId());
    }

}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

private void addBudgetReporting(String number) {

    try {//from   w ww.  j a va  2 s.  c  om
        document.newPage();
        Paragraph leverageBlock = new Paragraph(
                number + ". " + this.getText("summaries.project.leverage") + "s", HEADING2_FONT);
        leverageBlock.setAlignment(Element.ALIGN_JUSTIFIED);
        leverageBlock.add(Chunk.NEWLINE);

        PdfPTable table;
        List<ProjectLeverage> listLeverage = project.getLeverages();

        if (listLeverage.isEmpty()) {
            leverageBlock.setFont(BODY_TEXT_FONT);
            leverageBlock.add(this.getText("summaries.project.empty"));
            document.add(leverageBlock);
        } else {
            leverageBlock.add(Chunk.NEWLINE);
            document.add(leverageBlock);
            int counter = 1;
            for (ProjectLeverage leverage : listLeverage) {
                if (leverage != null) {
                    table = new PdfPTable(2);
                    table.setTotalWidth(480);
                    table.setLockedWidth(true);

                    // Header table
                    leverageBlock = new Paragraph();
                    leverageBlock.setAlignment(Element.ALIGN_CENTER);
                    leverageBlock.setFont(TABLE_HEADER_FONT);
                    leverageBlock.add(this.getText("summaries.project.leverage") + " #" + counter);

                    this.addTableHeaderCellColspan(table, leverageBlock, 2);

                    // leverage title
                    leverageBlock = new Paragraph();
                    leverageBlock.setFont(TABLE_BODY_BOLD_FONT);
                    leverageBlock.add(this.getText("summaries.project.activities.title"));

                    leverageBlock.setFont(TABLE_BODY_FONT);
                    leverageBlock.add(this.messageReturn(leverage.getTitle()));
                    leverageBlock.add(Chunk.NEWLINE);
                    this.addTableColSpanCell(table, leverageBlock, Element.ALIGN_JUSTIFIED, 1, 2);

                    // Leverage institution
                    leverageBlock = new Paragraph();
                    leverageBlock.setFont(TABLE_BODY_BOLD_FONT);
                    leverageBlock.add(this.getText("summaries.project.leverage.partnerName"));

                    leverageBlock.setFont(TABLE_BODY_FONT);
                    if (leverage.getMyInstitution() != null) {
                        leverageBlock.add(this.messageReturn(leverage.getMyInstitution().getComposedName()));
                    } else {
                        leverageBlock.add(this.messageReturn(null));
                    }

                    leverageBlock.add(Chunk.NEWLINE);
                    this.addTableColSpanCell(table, leverageBlock, Element.ALIGN_JUSTIFIED, 1, 2);

                    // Leverage Year
                    leverageBlock = new Paragraph();
                    leverageBlock.setFont(TABLE_BODY_BOLD_FONT);
                    leverageBlock.add(this.getText("summaries.project.leverage.year"));

                    leverageBlock.setFont(TABLE_BODY_FONT);
                    leverageBlock.add(String.valueOf(this.currentReportingYear));
                    leverageBlock.add(Chunk.NEWLINE);
                    this.addTableColSpanCell(table, leverageBlock, Element.ALIGN_JUSTIFIED, 1, 2);

                    // Leverage Flagship
                    leverageBlock = new Paragraph();
                    leverageBlock.setFont(TABLE_BODY_BOLD_FONT);
                    leverageBlock.add(this.getText("summaries.project.leverage.flagship"));

                    leverageBlock.setFont(TABLE_BODY_FONT);
                    leverageBlock.add(
                            this.messageReturn(String.valueOf(leverage.getMyFlagship().getComposedName())));
                    leverageBlock.add(Chunk.NEWLINE);
                    this.addTableBodyCell(table, leverageBlock, Element.ALIGN_JUSTIFIED, 1);

                    // Leverage Budget
                    leverageBlock = new Paragraph();
                    leverageBlock.setFont(TABLE_BODY_BOLD_FONT);
                    leverageBlock.add(this.getText("summaries.project.leverage.budget"));

                    leverageBlock.setFont(TABLE_BODY_FONT);
                    if (leverage.getBudget() != null) {
                        leverageBlock.add("US $");
                        leverageBlock.add(this.budgetFormatter.format(leverage.getBudget().doubleValue()));
                    } else {
                        leverageBlock.add(this.messageReturn(null));
                    }
                    leverageBlock.add(Chunk.NEWLINE);
                    this.addTableBodyCell(table, leverageBlock, Element.ALIGN_JUSTIFIED, 1);

                    document.add(table);
                    leverageBlock = new Paragraph();
                    leverageBlock.add(Chunk.NEWLINE);
                    document.add(leverageBlock);
                    counter++;
                }
            }
            document.add(leverageBlock);
        }
    } catch (DocumentException e) {
        LOG.error(
                "There was an error trying to add the project activities to the project summary pdf of project {} ",
                e, project.getId());
    }

}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

/**
 * This Method is for to calculate the overall or gender summary
 * /*from   w  w  w.  j av a 2s .  c  o m*/
 * @param startYear start year to calculate the summary
 * @param endYear end year to calculate the summary
 * @param type this is used for to determinate the type the report to create
 */
private void addBudgetsSummaryByPartners(int startYear, int endYear, int typeSummary) {

    try {
        Paragraph cell;
        if (typeSummary == 0) {
            cell = new Paragraph(this.getText("summaries.project.budget.summary", new String[] { "Overall" }),
                    BODY_TEXT_BOLD_FONT);
        } else {
            cell = new Paragraph(this.getText("summaries.project.budget.summary", new String[] { "Gender" }),
                    BODY_TEXT_BOLD_FONT);
        }
        PdfPTable table;
        if (project.isCoFundedProject()) {
            table = new PdfPTable(4);
            table.setWidths(new int[] { 2, 3, 3, 3 });
        } else {
            table = new PdfPTable(2);
            table.setWidths(new int[] { 3, 3 });
        }

        table.setLockedWidth(true);
        table.setTotalWidth(400);

        table.setHeaderRows(1);

        // Add cell with the name summary
        this.addCustomTableCell(table, cell, Element.ALIGN_CENTER, BODY_TEXT_BOLD_FONT, Color.WHITE,
                table.getNumberOfColumns(), 0, false);

        cell = new Paragraph(this.getText("summaries.project.budget.overall.type"), TABLE_HEADER_FONT);
        this.addTableHeaderCell(table, cell);

        if (project.isCoFundedProject()) {

            if (typeSummary == 0) {
                cell = new Paragraph(
                        this.getText("summaries.project.budget.overall.text",
                                new String[] { BudgetType.W1_W2.name().replace("_", "/") }) + "(USD)",
                        TABLE_HEADER_FONT);
                this.addTableHeaderCell(table, cell);

                cell = new Paragraph(
                        this.getText("summaries.project.budget.overall.text",
                                new String[] { BudgetType.W3_BILATERAL.name().replace("_", "/") }) + "(USD)",
                        TABLE_HEADER_FONT);
            } else {
                cell = new Paragraph(
                        this.getText("summaries.project.budget.overall.gender",
                                new String[] { BudgetType.W1_W2.name().replace("_", "/") }) + "(USD)",
                        TABLE_HEADER_FONT);
                this.addTableHeaderCell(table, cell);

                cell = new Paragraph(
                        this.getText("summaries.project.budget.overall.gender",
                                new String[] { BudgetType.W3_BILATERAL.name().replace("_", "/") }) + "(USD)",
                        TABLE_HEADER_FONT);
            }
            this.addTableHeaderCell(table, cell);

            // Total column
            cell = new Paragraph(this.getText("summaries.project.budget.overall.total") + " (USD)",
                    TABLE_HEADER_FONT);
            this.addTableHeaderCell(table, cell);
        }

        else {

            if (typeSummary == 0) {
                cell = new Paragraph(
                        this.getText("summaries.project.budget.overall.text",
                                new String[] { this.getBudgetType().name().replace("_", "/") }) + "(USD)",
                        TABLE_HEADER_FONT);
            } else {
                cell = new Paragraph(
                        this.getText("summaries.project.budget.overall.gender",
                                new String[] { this.getBudgetType().name().replace("_", "/") }) + "(USD)",
                        TABLE_HEADER_FONT);
            }
            this.addTableHeaderCell(table, cell);
        }

        double value, valueSum;
        value = 0.0;

        for (int year = startYear; year <= endYear; year++) {
            cell = new Paragraph(String.valueOf(year), TABLE_BODY_BOLD_FONT);
            this.addTableBodyCell(table, cell, Element.ALIGN_CENTER, 0);

            valueSum = 0.0;

            if (project.isCoFundedProject()) {
                if (typeSummary == 0) {
                    // amount w1/w2
                    value = this.budgetManager.calculateProjectBudgetByTypeAndYear(project.getId(),
                            BudgetType.W1_W2.getValue(), year);
                    cell = new Paragraph(this.budgetFormatter.format(value), TABLE_BODY_FONT);
                    ;
                    this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
                    valueSum = value;

                    // amount w3/Bilateral
                    value = this.budgetManager.calculateProjectBudgetByTypeAndYear(project.getId(),
                            BudgetType.W3_BILATERAL.getValue(), year);

                } else {

                    // gender w1/w2
                    value = this.budgetManager.calculateGenderBudgetByTypeAndYear(project.getId(),
                            BudgetType.W1_W2.getValue(), year);
                    cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_FONT);
                    ;
                    this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
                    valueSum = value;

                    // gender w3/Bilateral
                    value = this.budgetManager.calculateGenderBudgetByTypeAndYear(project.getId(),
                            BudgetType.W3_BILATERAL.getValue(), year);
                }

                cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_FONT);
                ;
                this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);

                // Total
                valueSum += value;
                cell = new Paragraph(budgetFormatter.format(valueSum), TABLE_BODY_FONT);
                this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);

            } else {
                if (typeSummary == 0) {
                    // amount w1/w2
                    value = this.budgetManager.calculateProjectBudgetByTypeAndYear(project.getId(),
                            this.getBudgetType().getValue(), year);
                    cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_FONT);
                    ;
                    this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);

                } else {

                    // gender w1/w2
                    value = this.budgetManager.calculateGenderBudgetByTypeAndYear(project.getId(),
                            this.getBudgetType().getValue(), year);
                    cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_FONT);
                    ;
                    this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);

                }
            }
        }

        // ********************** Totals *************

        cell = new Paragraph(this.getText("summaries.project.budget.overall.total"), TABLE_BODY_BOLD_FONT);
        this.addTableBodyCell(table, cell, Element.ALIGN_CENTER, 0);

        if (project.isCoFundedProject()) {

            if (typeSummary == 0) {
                value = budgetManager.calculateTotalCCAFSBudgetByType(project.getId(),
                        BudgetType.W1_W2.getValue());
                cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_BOLD_FONT);
                this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
                valueSum = value;

                value = budgetManager.calculateTotalCCAFSBudgetByType(project.getId(),
                        BudgetType.W3_BILATERAL.getValue());
                cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_BOLD_FONT);
                this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
                valueSum += value;
            } else {

                value = budgetManager.calculateTotalGenderPercentageByType(project.getId(),
                        BudgetType.W1_W2.getValue());
                cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_BOLD_FONT);
                this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
                valueSum = value;

                value = budgetManager.calculateTotalGenderPercentageByType(project.getId(),
                        BudgetType.W3_BILATERAL.getValue());
                cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_BOLD_FONT);
                this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
                valueSum += value;
            }

            // Total
            cell = new Paragraph(budgetFormatter.format(valueSum), TABLE_BODY_BOLD_FONT);
            this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
        }

        else {
            if (typeSummary == 0) {
                value = budgetManager.calculateTotalCCAFSBudgetByType(project.getId(),
                        this.getBudgetType().getValue());
            } else {
                value = budgetManager.calculateTotalGenderPercentageByType(project.getId(),
                        this.getBudgetType().getValue());
            }

            cell = new Paragraph(budgetFormatter.format(value), TABLE_BODY_BOLD_FONT);
            this.addTableBodyCell(table, cell, Element.ALIGN_RIGHT, 1);
            valueSum = value;
        }
        document.add(table);
        cell = new Paragraph(Chunk.NEWLINE);
        document.add(cell);

    } catch (DocumentException e) {
        LOG.error(
                "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                e);
    }
}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

/**
 * @param deliverable deliverable to add in the summary
 * @param counter number of deliverable//from  ww w  .ja  va2  s.  c o m
 **/
private void addDelivable(Deliverable deliverable, int counter) {
    try {
        if (deliverable != null) {

            PdfPTable table = new PdfPTable(2);
            table.setTotalWidth(480);
            table.setLockedWidth(true);

            StringBuilder stringBuilder = new StringBuilder();
            PdfPCell cell_new;

            // **** Expected Deliverable #*********
            Paragraph deliverableBlock = new Paragraph();
            deliverableBlock.setFont(HEADING4_FONT);
            if (project.isReporting()) {
                deliverableBlock.add(this.getText("summaries.project.deliverable") + " #" + counter);
            } else {
                if (deliverable.getYear() < config.getPlanningCurrentYear()) {
                    deliverableBlock.add(this.getText("summaries.project.deliverable") + " #" + counter);
                } else {
                    deliverableBlock
                            .add(this.getText("summaries.project.deliverable.expected") + " #" + counter);
                }

            }

            deliverableBlock.add(Chunk.NEWLINE);
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);

            // **** Deliverable Information *********
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(BODY_TEXT_BOLD_FONT);
            deliverableBlock.setAlignment(Element.ALIGN_LEFT);
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            deliverableBlock.add(this.getText("summaries.project.deliverable.information"));

            cell_new = new PdfPCell(deliverableBlock);
            cell_new.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell_new.setVerticalAlignment(Element.ALIGN_MIDDLE);
            cell_new.setBackgroundColor(TABLE_HEADER_BACKGROUND);
            cell_new.setUseBorderPadding(true);
            cell_new.setPadding(3);
            cell_new.setBorderColor(TABLE_CELL_BORDER_COLOR);
            cell_new.setColspan(2);

            this.addTableHeaderCell(table, cell_new);

            // Title
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.deliverable.information.title") + ": ");

            deliverableBlock.setFont(TABLE_BODY_FONT);
            deliverableBlock.add(this.messageReturn(deliverable.getTitle()));
            deliverableBlock.add(Chunk.NEWLINE);
            ;
            // document.add(deliverableBlock);
            this.addTableColSpanCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1, 2);

            // MOG

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            if (deliverable.getOutput() != null) {
                stringBuilder = new StringBuilder();
                if (deliverable.getOutput().getProgram() != null
                        && deliverable.getOutput().getProgram().getAcronym() != null) {
                    stringBuilder.append(deliverable.getOutput().getProgram().getAcronym());
                    stringBuilder.append(" - MOG # ");
                } else {
                    stringBuilder.append("MOG # ");
                }
                stringBuilder.append(this.getMOGIndex(deliverable.getOutput()));
                stringBuilder.append(": ");
                deliverableBlock.add(stringBuilder.toString());
                deliverableBlock.setFont(TABLE_BODY_FONT);
                stringBuilder = new StringBuilder();
                stringBuilder.append(deliverable.getOutput().getDescription());
            } else {
                deliverableBlock.add("MOG :");
                stringBuilder.append(this.getText("summaries.project.empty"));
            }
            deliverableBlock.add(stringBuilder.toString());
            deliverableBlock.add(Chunk.NEWLINE);
            // document.add(deliverableBlock);
            this.addTableColSpanCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1, 2);

            // Main Type
            deliverableBlock = new Paragraph();
            stringBuilder = new StringBuilder();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            stringBuilder.append(this.getText("summaries.project.deliverable.information.main"));
            stringBuilder.append(": ");
            deliverableBlock.add(stringBuilder.toString());

            deliverableBlock.setFont(TABLE_BODY_FONT);
            stringBuilder = new StringBuilder();
            if (deliverable.getType() != null && deliverable.getType().getCategory() != null) {
                stringBuilder.append(this.messageReturn(deliverable.getType().getCategory().getName()));
            } else {
                stringBuilder.append(this.messageReturn(""));
            }
            deliverableBlock.add(stringBuilder.toString());
            deliverableBlock.add(Chunk.NEWLINE);
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1);

            // Sub Type
            deliverableBlock = new Paragraph();
            stringBuilder = new StringBuilder();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            stringBuilder.append(this.getText("summaries.project.deliverable.information.sub"));
            stringBuilder.append(": ");
            deliverableBlock.add(stringBuilder.toString());
            deliverableBlock.setFont(TABLE_BODY_FONT);
            stringBuilder = new StringBuilder();
            if (deliverable.getType() == null) {
                stringBuilder.append(this.messageReturn(this.getText("summaries.project.empty")));
            } else if (deliverable.getType().getId() == 38) {
                stringBuilder.append(this.getText("summaries.project.deliverable.other.expected"));
                stringBuilder.append("(");
                stringBuilder.append(this.messageReturn(deliverable.getTypeOther()));
                stringBuilder.append(")");
            } else {
                stringBuilder.append(this.messageReturn(deliverable.getType().getName()));
            }

            deliverableBlock.add(this.messageReturn(stringBuilder.toString()));
            deliverableBlock.add(Chunk.NEWLINE);
            ;
            // document.add(deliverableBlock);
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // Year
            deliverableBlock = new Paragraph();
            stringBuilder = new StringBuilder();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            stringBuilder.append(this.getText("summaries.project.deliverable.information.year"));
            stringBuilder.append(": ");
            deliverableBlock.add(stringBuilder.toString());

            deliverableBlock.setFont(TABLE_BODY_FONT);
            stringBuilder = new StringBuilder();
            stringBuilder.append(deliverable.getYear());
            deliverableBlock.add(stringBuilder.toString());
            deliverableBlock.add(Chunk.NEWLINE);
            // document.add(deliverableBlock);
            this.addTableColSpanCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1, 2);

            // Status
            deliverableBlock = new Paragraph();
            stringBuilder = new StringBuilder();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            stringBuilder.append(this.getText("summaries.project.deliverable.information.statuts"));
            deliverableBlock.add(stringBuilder.toString());

            deliverableBlock.setFont(TABLE_BODY_FONT);
            stringBuilder = new StringBuilder();
            if (deliverable.getStatus() != 0) {
                if (deliverable.getStatus() == Integer.parseInt(ProjectStatusEnum.Cancelled.getStatusId())) {

                    deliverableBlock.setFont(TABLE_BODY_FONT_RED);
                }
                stringBuilder.append(this.statuses.get(String.valueOf(deliverable.getStatus())));
            } else {
                stringBuilder.append(this.messageReturn(null));
            }
            deliverableBlock.add(stringBuilder.toString());
            deliverableBlock.add(Chunk.NEWLINE);
            // document.add(deliverableBlock);

            if (deliverable.isStatusCancelled() || deliverable.isStatusExtended()
                    || deliverable.isStatusOnGoing()) {
                this.addTableColSpanCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1, 1);

                // Justification
                deliverableBlock = new Paragraph();
                stringBuilder = new StringBuilder();
                deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
                stringBuilder.append(this.getText("summaries.project.deliverable.information.justification"));
                deliverableBlock.add(stringBuilder.toString());

                deliverableBlock.setFont(TABLE_BODY_FONT);
                deliverableBlock.add(this.messageReturn(deliverable.getStatusDescription()));
                deliverableBlock.add(Chunk.NEWLINE);

                this.addTableColSpanCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1, 1);

            } else {
                this.addTableColSpanCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1, 2);
            }

            document.add(table);
            deliverableBlock = new Paragraph();
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);

            // ********** Next Users**************************************

            counter = 1;
            List<NextUser> nextUsers = deliverable.getNextUsers();
            for (NextUser nextUser : nextUsers) {
                if (nextUser != null) {

                    table = new PdfPTable(1);
                    table.setTotalWidth(480);
                    table.setLockedWidth(true);

                    // Next user title
                    deliverableBlock = new Paragraph();
                    deliverableBlock.setAlignment(Element.ALIGN_LEFT);
                    deliverableBlock.setFont(TABLE_HEADER_FONT);
                    if (nextUsers.size() == 1) {
                        deliverableBlock.add(this.getText("summaries.project.deliverable.next.user"));
                    } else {
                        deliverableBlock
                                .add(this.getText("summaries.project.deliverable.next.user") + " #" + counter);
                    }

                    this.addTableHeaderCell(table, deliverableBlock);

                    // Next user
                    stringBuilder = new StringBuilder();
                    deliverableBlock = new Paragraph();
                    deliverableBlock.setFont(TABLE_BODY_FONT);
                    stringBuilder.append(nextUser.getUser());
                    deliverableBlock.add(this.messageReturn(stringBuilder.toString()));
                    this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1);

                    // Expected Changes
                    stringBuilder = new StringBuilder();
                    deliverableBlock = new Paragraph();
                    deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
                    deliverableBlock
                            .add(this.getText("summaries.project.deliverable.next.user.expected.change"));
                    deliverableBlock.setFont(TABLE_BODY_FONT);
                    stringBuilder.append(this.messageReturn(nextUser.getExpectedChanges()));
                    deliverableBlock.add(stringBuilder.toString());
                    // document.add(deliverableBlock);
                    this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1);

                    // Strategies
                    stringBuilder = new StringBuilder();
                    deliverableBlock = new Paragraph();
                    deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
                    deliverableBlock.add(this.getText("summaries.project.deliverable.next.user.strategies"));
                    deliverableBlock.setFont(TABLE_BODY_FONT);
                    stringBuilder.append(this.messageReturn(nextUser.getStrategies()));
                    deliverableBlock.add(stringBuilder.toString());
                    // document.add(deliverableBlock);
                    this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1);

                    document.add(table);
                    deliverableBlock = new Paragraph();
                    deliverableBlock.add(Chunk.NEWLINE);
                    document.add(deliverableBlock);

                    counter++;
                }

            }
            // ********** Deliverable partnership****************************

            // ******************Partner contributing
            counter = 1;

            table = new PdfPTable(1);
            table.setLockedWidth(true);
            table.setTotalWidth(480);

            // Title partners contributing
            deliverableBlock = new Paragraph();
            deliverableBlock.setAlignment(Element.ALIGN_LEFT);
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            deliverableBlock.add(this.getText("summaries.project.deliverable.partnership"));
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            this.addTableHeaderCell(table, deliverableBlock);

            // Organization
            stringBuilder = new StringBuilder();
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.deliverable.partnership.organization") + " #"
                    + counter + " (Responsible)" + ": ");
            deliverableBlock.setFont(TABLE_BODY_FONT);
            DeliverablePartner deliverableResponsiblePartner = deliverable.getResponsiblePartner();
            PartnerPerson partnerPersonResponsible = null;
            if (deliverableResponsiblePartner != null) {
                partnerPersonResponsible = deliverableResponsiblePartner.getPartner();
            }
            if (deliverableResponsiblePartner != null && partnerPersonResponsible != null) {
                stringBuilder.append(this.messageReturn(partnerPersonResponsible.getComposedName()));
                stringBuilder.append(", ");
                stringBuilder
                        .append(this.mapPartnerPersons.get(String.valueOf(partnerPersonResponsible.getId())));
            } else {
                stringBuilder.append(this.getText("summaries.project.empty"));
            }
            deliverableBlock.add(stringBuilder.toString());
            deliverableBlock.add(Chunk.NEWLINE);
            ;
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1);
            counter = 1;
            // ************** Other Partners
            List<DeliverablePartner> listOtherPartner = deliverable.getOtherPartners();

            PartnerPerson otherResponsiblepartnerPerson = null;

            if (!listOtherPartner.isEmpty()) {
                for (DeliverablePartner deliverablePartner : listOtherPartner) {
                    if (deliverablePartner != null) {
                        counter++;

                        // Title partners contributing
                        deliverableBlock = new Paragraph();
                        deliverableBlock.setAlignment(Element.ALIGN_LEFT);
                        deliverableBlock.setFont(BODY_TEXT_BOLD_FONT);
                        if (listOtherPartner.size() == 1) {
                            deliverableBlock.add(this.getText("summaries.project.deliverable.partnership"));
                        } else {
                            deliverableBlock.add(
                                    this.getText("summaries.project.deliverable.partnership") + " #" + counter);
                        }

                        // Organization
                        stringBuilder = new StringBuilder();
                        deliverableBlock = new Paragraph();
                        deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);

                        deliverableBlock
                                .add(this.getText("summaries.project.deliverable.partnership.organization")
                                        + " #" + counter + ": ");
                        deliverableBlock.add("");

                        deliverableBlock.setFont(TABLE_BODY_FONT);

                        otherResponsiblepartnerPerson = deliverablePartner.getPartner();
                        if (otherResponsiblepartnerPerson != null) {
                            stringBuilder.append(
                                    this.messageReturn(otherResponsiblepartnerPerson.getComposedName()));
                            stringBuilder.append(", ");
                            stringBuilder.append(this.mapPartnerPersons
                                    .get(String.valueOf(otherResponsiblepartnerPerson.getId())));
                        } else {
                            stringBuilder.append(this.getText("summaries.project.empty"));
                        }

                        deliverableBlock.add(stringBuilder.toString());
                        deliverableBlock.add(Chunk.NEWLINE);
                        ;
                        this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_JUSTIFIED, 1);
                    }
                }
            }

            document.add(table);
            deliverableBlock = new Paragraph();
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);

        }

        // ********** Ranking**************************************
        PdfPCell cell_new;
        if (project.isReporting()) {

            PdfPTable table = new PdfPTable(2);
            table.setLockedWidth(true);
            table.setTotalWidth(480);
            table.setWidths(new int[] { 7, 3 });
            DeliverablesRanking deliverableRanking = deliverable.getRanking();

            // summaries.project.reporting.deliverable.ranking
            Paragraph deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            deliverableBlock.setAlignment(Element.ALIGN_LEFT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.ranking"));

            cell_new = new PdfPCell(deliverableBlock);
            cell_new.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell_new.setVerticalAlignment(Element.ALIGN_MIDDLE);
            cell_new.setBackgroundColor(TABLE_HEADER_BACKGROUND);
            cell_new.setUseBorderPadding(true);
            cell_new.setPadding(3);
            cell_new.setBorderColor(TABLE_CELL_BORDER_COLOR);
            cell_new.setColspan(2);

            this.addTableHeaderCell(table, cell_new);

            // address gender
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.addres.gender"));
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_FONT);
            if (deliverableRanking != null && deliverableRanking.getAddress() != null) {
                deliverableBlock.add(this.messageReturn(deliverableRanking.getAddress().toString()));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_CENTER, 1);

            // Get Potential
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.contribution.outcome"));
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_FONT);
            if (deliverableRanking != null && deliverableRanking.getPotential() != null) {
                deliverableBlock.add(this.messageReturn(deliverableRanking.getPotential().toString()));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_CENTER, 1);

            // Level
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.shared.ownership"));
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_FONT);
            if (deliverableRanking != null && deliverableRanking.getLevel() != null) {
                deliverableBlock.add(this.messageReturn(deliverableRanking.getLevel().toString()));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_CENTER, 1);

            // Personal perspective
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.personal.prespective"));
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_FONT);
            if (deliverableRanking != null && deliverableRanking.getPersonalPerspective() != null) {
                deliverableBlock
                        .add(this.messageReturn(String.valueOf(deliverableRanking.getPersonalPerspective())));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_CENTER, 1);

            document.add(table);
            deliverableBlock = new Paragraph();
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);

            // ********** Deliverable Dissemination**************************************
            DeliverableDissemination deliverableDissemination = deliverable.getDissemination();
            table = new PdfPTable(1);
            table.setLockedWidth(true);
            table.setTotalWidth(480);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            deliverableBlock.setAlignment(Element.ALIGN_LEFT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.dissemination"));
            this.addTableHeaderCell(table, deliverableBlock);

            // Open access
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.dissemination.open"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableDissemination != null) {
                if (deliverableDissemination.getIsOpenAccess() != null
                        && deliverableDissemination.getIsOpenAccess().booleanValue()) {
                    deliverableBlock.add("Yes");
                } else if (deliverableDissemination.getIntellectualProperty() != null
                        && deliverableDissemination.getIntellectualProperty().booleanValue()) {
                    deliverableBlock.add(
                            this.getText("summaries.project.reporting.deliverable.dissemination.intellectual"));
                } else if (deliverableDissemination.getLimitedExclusivity() != null
                        && deliverableDissemination.getLimitedExclusivity().booleanValue()) {
                    deliverableBlock
                            .add(this.getText("summaries.project.reporting.deliverable.dissemination.limited"));
                } else if (deliverableDissemination.getRestrictedUseAgreement() != null
                        && deliverableDissemination.getRestrictedUseAgreement().booleanValue()) {

                    deliverableBlock.add(
                            this.getText("summaries.project.reporting.deliverable.dissemination.restricted"));
                    this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

                    deliverableBlock = new Paragraph();
                    deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
                    deliverableBlock
                            .add(this.getText("summaries.project.reporting.deliverable.dissemination.access"));
                    deliverableBlock.setFont(TABLE_BODY_FONT);
                    deliverableBlock.add(deliverableDissemination.getRestrictedAccessUntilText());

                } else if (deliverableDissemination.getEffectiveDateRestriction() != null
                        && deliverableDissemination.getEffectiveDateRestriction().booleanValue()) {
                    deliverableBlock.add(
                            this.getText("summaries.project.reporting.deliverable.dissemination.effective"));
                    this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

                    deliverableBlock = new Paragraph();
                    deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
                    deliverableBlock.add(
                            this.getText("summaries.project.reporting.deliverable.dissemination.embargoed"));
                    deliverableBlock.setFont(TABLE_BODY_FONT);
                    deliverableBlock.add(deliverableDissemination.getRestrictedEmbargoedText());

                } else {
                    deliverableBlock.add(this.messageReturn(null));
                }
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // License adopted

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.dissemination.license"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableDissemination != null) {
                if (deliverable
                        .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_LICENSE) != null) {
                    deliverableBlock.add(this.messageReturn(deliverable
                            .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_LICENSE)));
                } else {
                    deliverableBlock.add("No");
                }
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // // Dissemination channel
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.dissemination.channel"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableDissemination != null) {
                deliverableBlock.add(this.messageReturn(deliverableDissemination.getDisseminationChannel()));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // Dissemination URL
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.dissemination.url"));
            deliverableBlock.setFont(TABLE_BODY_FONT_LINK);

            if (deliverableDissemination != null) {
                deliverableBlock.add(this.messageReturn(deliverableDissemination.getDisseminationUrl()));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            document.add(table);
            deliverableBlock = new Paragraph();
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);

            // ********** Deliverable Metadata**************************************
            DeliverablePublicationMetadata deliverableMetadata = deliverable.getPublicationMetadata();
            table = new PdfPTable(1);
            table.setLockedWidth(true);
            table.setTotalWidth(480);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            deliverableBlock.setAlignment(Element.ALIGN_LEFT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata"));
            this.addTableHeaderCell(table, deliverableBlock);

            // Description
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata.description"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableMetadata != null) {
                deliverableBlock.add(this.messageReturn(deliverable
                        .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_DESCRIPTION)));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // creator
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata.creator"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableMetadata != null) {
                deliverableBlock.add(this.messageReturn(
                        deliverable.getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_CREATOR)));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // authorID
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata.authorID"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableMetadata != null) {
                deliverableBlock.add(this.messageReturn(deliverable
                        .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_CREATOR_ID)));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // Creation
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata.creation"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableMetadata != null) {
                deliverableBlock.add(this.messageReturn(deliverable
                        .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_PUBLICATION)));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // Language
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata.language"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableMetadata != null) {
                deliverableBlock.add(this.messageReturn(this.messageReturn(deliverable
                        .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_LANGUAGE))));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);

            // Coverage
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.metadata.coverage"));
            deliverableBlock.setFont(TABLE_BODY_FONT);

            if (deliverableMetadata != null) {
                deliverableBlock.add(this.messageReturn(deliverable
                        .getMetadataValueByEncondedName(APConstants.DELIVERABLE_ENCONDING_COVERAGE)));
            } else {
                deliverableBlock.add(this.messageReturn(null));
            }
            this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);
            document.add(table);
            deliverableBlock = new Paragraph();
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);

            // ********** Deliverable Data Sharing**************************************
            table = new PdfPTable(1);
            table.setLockedWidth(true);
            table.setTotalWidth(480);

            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_HEADER_FONT);
            deliverableBlock.setAlignment(Element.ALIGN_LEFT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.datasharing"));
            this.addTableHeaderCell(table, deliverableBlock);

            // Files
            deliverableBlock = new Paragraph();
            deliverableBlock.setFont(TABLE_BODY_BOLD_FONT);
            deliverableBlock.add(this.getText("summaries.project.reporting.deliverable.datasharing.files"));
            deliverableBlock.add("\n");
            deliverableBlock.setFont(TABLE_BODY_FONT);

            List<DeliverableDataSharingFile> deliverableDataSharingFileList = deliverable.getDataSharingFile();

            cell_new = new PdfPCell(deliverableBlock);
            cell_new.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell_new.setVerticalAlignment(Element.ALIGN_MIDDLE);
            cell_new.setBackgroundColor(TABLE_BODY_ODD_ROW_BACKGROUND);
            cell_new.setUseBorderPadding(true);
            cell_new.setPadding(3);
            cell_new.setBorderColor(TABLE_CELL_BORDER_COLOR);
            cell_new.setColspan(2);
            Anchor anchor;
            Phrase myurl;
            counter = 0;
            if (deliverableDataSharingFileList != null) {
                for (DeliverableDataSharingFile deliverableDataSharingFile : deliverableDataSharingFileList) {
                    if (deliverableDataSharingFile != null) {

                        anchor = new Anchor(deliverableDataSharingFile.getFile(), TABLE_BODY_FONT_LINK);
                        anchor.setReference(config.getDownloadURL() + "/projects/" + project.getId()
                                + "/deliverableDataSharing/" + deliverableDataSharingFile.getFile());
                        myurl = new Phrase();
                        myurl.add(anchor);
                        myurl.setFont(TABLE_BODY_FONT_LINK);

                        cell_new.addElement(myurl);
                        if (counter > 1) {
                            cell_new.addElement(new Paragraph("\n"));
                        }
                        counter++;
                    }
                }
                table.addCell(cell_new);
            } else {
                deliverableBlock.setFont(TABLE_BODY_FONT);
                deliverableBlock.add(this.messageReturn(null));
                this.addTableBodyCell(table, deliverableBlock, Element.ALIGN_LEFT, 1);
            }
            document.add(table);
            deliverableBlock = new Paragraph();
            deliverableBlock.add(Chunk.NEWLINE);
            deliverableBlock.add(Chunk.NEWLINE);
            document.add(deliverableBlock);
        }

    } catch (DocumentException e) {
        LOG.error(
                "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                e);
    }
}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

/**
 * This is an auxiliar method for to get information project partners in the paragrapn block.
 * /* www.java 2  s  .  c  o  m*/
 * @param partner partner to get information
 * @param numberPP number of project partner
 * @param partnersBlock paragraph to add the information
 */
private void addPartner(ProjectPartner partner, int numberPP) {

    if (!(partner == null)) {
        try {
            PdfPTable table = new PdfPTable(1);
            table.setTotalWidth(500);
            table.setLockedWidth(true);

            // /////////////////////////////////////////////////////////////////////
            Paragraph paragraph = new Paragraph();

            // Partner #
            paragraph.setFont(HEADING3_FONT);

            if (project.getLeader() != null && partner.getId() == project.getLeader().getId()) {
                paragraph.add(this.getText("summaries.project.partner") + numberPP + " "
                        + this.getText("summaries.project.partner.leader"));
            } else {
                paragraph.add(this.getText("summaries.project.partner") + numberPP + " ");
            }

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

            // Organization
            paragraph = new Paragraph();
            paragraph.setFont(BODY_TEXT_BOLD_FONT);
            paragraph.setAlignment(Element.ALIGN_LEFT);
            paragraph.add(this.getText("summaries.project.organization"));
            paragraph.setFont(BODY_TEXT_FONT);
            if (partner.getInstitution() != null) {
                if (!((partner.getInstitution().getAcronym() == null)
                        || (partner.getInstitution().getAcronym().isEmpty()))) {
                    paragraph.add(partner.getInstitution().getAcronym());
                    paragraph.add(" - ");

                }
                paragraph.add(this.messageReturn(partner.getInstitution().getName()));
            } else {
                paragraph.add("Not defined");
            }

            document.add(paragraph);

            // CCAFS Partner(s) allocating budget:
            if (!partner.getInstitution().isPPA()) {
                table = new PdfPTable(1);
                table.setTotalWidth(500);
                table.setLockedWidth(true);

                paragraph = new Paragraph();
                paragraph.add(Chunk.NEWLINE);

                // title contributing
                paragraph.setFont(BODY_TEXT_BOLD_FONT);
                paragraph.add(this.getText("summaries.project.projectPartners.ccafs.partner.allocating"));

                List<ProjectPartner> partnersContributings = partner.getPartnerContributors();
                if (partnersContributings.isEmpty()) {
                    paragraph.add(": ");
                    paragraph.setFont(BODY_TEXT_FONT);
                    paragraph.add(this.getText("summaries.project.empty"));
                    document.add(paragraph);
                } else {
                    this.addCustomTableCell(table, paragraph, Element.ALIGN_LEFT, BODY_TEXT_BOLD_FONT,
                            Color.WHITE, table.getNumberOfColumns(), 0, false);

                    for (ProjectPartner partnerContributing : partnersContributings) {
                        paragraph = new Paragraph();
                        this.addTableBodyCell(table,
                                new Paragraph(partnerContributing.getInstitution().getComposedName(),
                                        TABLE_BODY_FONT),
                                Element.ALIGN_JUSTIFIED, 1);
                    }
                }
                document.add(table);

            }

            paragraph = new Paragraph();
            paragraph.add(Chunk.NEWLINE);
            document.add(paragraph);

            // PartnerPersons
            table = new PdfPTable(3);
            table.setTotalWidth(500);
            table.setLockedWidth(true);
            table.setWidths(new int[] { 1, 3, 6 });

            paragraph = new Paragraph();
            paragraph.setFont(BODY_TEXT_BOLD_FONT);
            paragraph.add(this.getText("summaries.project.partner.partnerPerson"));
            this.addCustomTableCell(table, paragraph, Element.ALIGN_LEFT, BODY_TEXT_BOLD_FONT, Color.WHITE,
                    table.getNumberOfColumns(), 0, false);

            // ***** Header Partner persons

            // Person type
            paragraph = new Paragraph();
            paragraph.setFont(TABLE_HEADER_FONT);
            paragraph.add(this.getText("summaries.project.partner.persontype"));
            this.addTableHeaderCell(table, paragraph);

            // contact person
            paragraph = new Paragraph();
            paragraph.setFont(TABLE_HEADER_FONT);
            paragraph.add(this.getText("summaries.project.partner.contactperson"));
            this.addTableHeaderCell(table, paragraph);

            // responsabities
            paragraph = new Paragraph();
            paragraph.setFont(TABLE_HEADER_FONT);
            paragraph.setAlignment(Element.ALIGN_JUSTIFIED);
            paragraph.add(this.getText("summaries.project.partner.responsibilities"));
            this.addTableHeaderCell(table, paragraph);

            paragraph.setFont(TABLE_BODY_FONT);

            for (PartnerPerson partnerPerson : partner.getPartnerPersons()) {

                // type
                paragraph = new Paragraph();
                paragraph.setFont(TABLE_BODY_FONT);
                if (partnerPerson.getType() == null) {
                    paragraph.add(this.getText("summary.project.empty"));
                } else if (partnerPerson.getType().equals("PL")) {
                    paragraph.add(this.getText("planning.projectPartners.types.PL"));
                } else if (partnerPerson.getType().equals("PC")) {
                    paragraph.add(this.getText("planning.projectPartners.types.PC"));
                } else {
                    // is CP
                    paragraph.add(this.getText("planning.projectPartners.types.CP"));
                }
                this.addTableColSpanCell(table, paragraph, Element.ALIGN_CENTER, 1, 1);

                // contact person
                paragraph = new Paragraph();
                paragraph.setFont(TABLE_BODY_FONT);
                paragraph.add(this.messageReturn(partnerPerson.getComposedName()));
                this.addTableColSpanCell(table, paragraph, Element.ALIGN_CENTER, 1, 1);

                // Responsabilities
                paragraph = new Paragraph();
                paragraph.setFont(TABLE_BODY_FONT);
                paragraph.add(this.messageReturn(partnerPerson.getResponsibilities()));
                this.addTableColSpanCell(table, paragraph, Element.ALIGN_JUSTIFIED, 1, 1);

            }

            document.add(table);
            paragraph = new Paragraph();
            paragraph.add(Chunk.NEWLINE);
            paragraph.add(Chunk.NEWLINE);
            document.add(paragraph);

        } catch (DocumentException e) {
            LOG.error(
                    "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                    e);
        }
    }
}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

private void addProjectBudgets() {

    int startYear = 0;
    int endYear = 0;

    Paragraph paragraph = new Paragraph();

    Calendar startDate = Calendar.getInstance();
    Calendar endDate = Calendar.getInstance();
    if (project.getStartDate() != null) {
        startDate.setTime(project.getStartDate());
        startYear = startDate.get(Calendar.YEAR);

    }//from w ww.  jav  a  2 s .c  om
    if (project.getEndDate() != null) {
        endDate.setTime(project.getEndDate());
        endYear = endDate.get(Calendar.YEAR);
    }

    PdfPTable table;
    paragraph.setFont(HEADING2_FONT);
    paragraph.add("7. " + this.getText("summaries.project.budget"));
    try {
        document.newPage();
        paragraph.add(Chunk.NEWLINE);
        paragraph.add(Chunk.NEWLINE);
        document.add(paragraph);

        // If project is Bilateral to ask the following;
        if (project.isBilateralProject() && project.getOverhead() != null) {
            paragraph = new Paragraph();
            paragraph.setFont(BODY_TEXT_BOLD_FONT);

            // Overhead
            if (!project.getOverhead().isBilateralCostRecovered()) {
                paragraph.add(this.getText("summaries.project.budget.overhead"));
                paragraph.setFont(BODY_TEXT_FONT);
                paragraph.add(this.genderFormatter.format(project.getOverhead().getContractedOverhead()));
            } else {
                paragraph.add(this.getText("summaries.project.budget.cost.covered"));
                paragraph.setFont(BODY_TEXT_FONT);
                paragraph.add(this.getText("summaries.options.yes"));
            }
            paragraph.add(Chunk.NEWLINE);
            paragraph.add(Chunk.NEWLINE);
            document.add(paragraph);
        }

        // Summary table Overall
        this.addBudgetsSummaryByPartners(startYear, endYear, 0);

        // Summary table Gender
        this.addBudgetsSummaryByPartners(startYear, endYear, 1);

        // ************************Budget By Partners*************************************
        paragraph = new Paragraph();
        paragraph.add(Chunk.NEWLINE);
        paragraph.setFont(HEADING3_FONT);
        paragraph.add("7.1 " + this.getText("summaries.project.budget.partners"));
        paragraph.add(Chunk.NEWLINE);

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

        if (project.isBilateralProject()) {
            table = new PdfPTable(4);
            table.setWidths(new int[] { 2, 3, 3, 3 });
            table.setTotalWidth(480);
            this.addBudgetPartner(project.getLeader(), paragraph, table, BudgetType.W3_BILATERAL, startYear,
                    endYear);

            document.add(table);
            paragraph = new Paragraph(Chunk.NEWLINE);
            paragraph = new Paragraph(Chunk.NEWLINE);

            document.add(paragraph);

        } else {

            List<ProjectPartner> listProjectPartner = project.getPPAPartners();
            listProjectPartner.add(project.getLeader());
            listProjectPartner = this.removePartnersRepeat(listProjectPartner);

            for (ProjectPartner projectPartner : listProjectPartner) {
                table = new PdfPTable(4);
                table.setWidths(new int[] { 2, 3, 3, 3 });
                table.setTotalWidth(480);

                if (project.isCoFundedProject()) {
                    this.addBudgetPartner(projectPartner, paragraph, table, BudgetType.W1_W2, startYear,
                            endYear);
                    document.add(table);
                    paragraph = new Paragraph(Chunk.NEWLINE);
                    paragraph.add(Chunk.NEWLINE);
                    document.add(paragraph);

                    table = new PdfPTable(4);
                    table.setWidths(new int[] { 2, 3, 3, 3 });
                    table.setTotalWidth(480);
                    this.addBudgetPartner(projectPartner, paragraph, table, BudgetType.W3_BILATERAL, startYear,
                            endYear);
                } else {
                    this.addBudgetPartner(projectPartner, paragraph, table, this.getBudgetType(), startYear,
                            endYear);
                }

                document.add(table);
                paragraph = new Paragraph(Chunk.NEWLINE);
                paragraph = new Paragraph(Chunk.NEWLINE);

                document.add(paragraph);
            }
        }
        // }
    } catch (DocumentException e) {
        LOG.error(
                "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                e);
    }

    // ************************Budget By Contributions*************************************
    paragraph = new Paragraph();
    paragraph.setFont(HEADING3_FONT);
    paragraph.add(Chunk.NEWLINE);
    if (project.isBilateralProject()) {
        paragraph.add("7.2 " + this.getText("summaries.project.budget.contribution.bilateral"));
    } else {
        paragraph.add("7.2 " + this.getText("summaries.project.budget.contribution.cofunded"));
    }
    paragraph.add(Chunk.NEWLINE);
    paragraph.add(Chunk.NEWLINE);

    try {
        document.add(paragraph);

        paragraph = new Paragraph();
        List<Project> projectLinkagesList = project.getLinkedProjects();
        if (projectLinkagesList.isEmpty()) {
            paragraph.add(this.getText("summaries.project.empty"));
            document.add(paragraph);
        } else {

            table = new PdfPTable(3);
            table.setTotalWidth(480);
            table.setWidths(new int[] { 7, 1, 2 });
            table.setLockedWidth(true);
            this.addTableHeaderCell(table,
                    new Paragraph(this.getText("summaries.project.budget.overall.project"), TABLE_HEADER_FONT));

            this.addTableHeaderCell(table,
                    new Paragraph(this.getText("summaries.project.budget.overall.year"), TABLE_HEADER_FONT));

            StringBuilder type = new StringBuilder();
            type.append((this.getBudgetType() == null) ? BudgetType.W3_BILATERAL.name().replace("_", "/")
                    : BudgetType.W1_W2.name().replace("_", "/"));

            type.append("\n (USD)");

            this.addTableHeaderCell(table, new Paragraph(
                    this.getText("summaries.project.budget.overall.amount", new String[] { type.toString() }),
                    TABLE_HEADER_FONT));
            Budget annualContribution;
            double totalAnnualContribution = 0.0;
            for (Project linkageProject : projectLinkagesList) {

                // Budgets for projects

                annualContribution = linkageProject.getAnualContribution();
                if (annualContribution != null) {

                    this.addTableBodyCell(table,
                            new Paragraph(linkageProject.getComposedName(), TABLE_BODY_FONT),
                            Element.ALIGN_JUSTIFIED, 1);

                    this.addTableBodyCell(table,
                            new Paragraph(String.valueOf(annualContribution.getYear()), TABLE_BODY_FONT),
                            Element.ALIGN_CENTER, 1);

                    totalAnnualContribution += annualContribution.getAmount();
                    this.addTableBodyCell(table,
                            new Paragraph(this.budgetFormatter.format(annualContribution.getAmount()),
                                    TABLE_BODY_FONT),
                            Element.ALIGN_CENTER, 1);
                }

            }

            this.addTableColSpanCell(table,
                    new Paragraph(this.getText("summaries.project.budget.overall.total"), TABLE_BODY_BOLD_FONT),
                    Element.ALIGN_CENTER, 1, 2);

            this.addTableBodyCell(table,
                    new Paragraph(String.valueOf(totalAnnualContribution), TABLE_BODY_BOLD_FONT),
                    Element.ALIGN_CENTER, 1);

            document.add(table);
        }
        document.add(Chunk.NEWLINE);
        document.add(Chunk.NEWLINE);
    } catch (DocumentException e) {
        LOG.error(
                "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                e);
    }

    // ************************Budget By Mogs*************************************
    paragraph = new Paragraph();
    paragraph.setFont(HEADING3_FONT);
    paragraph.add(Chunk.NEWLINE);
    paragraph.add("7.3 " + this.getText("summaries.project.budget.mog"));
    paragraph.add(Chunk.NEWLINE);
    paragraph.add(Chunk.NEWLINE);
    try {

        document.add(paragraph);

        paragraph = new Paragraph();
        List<IPElement> outputsList = project.getOutputs();
        if (outputsList.isEmpty()) {
            paragraph.setFont(BODY_TEXT_FONT);
            paragraph.add(this.getText("summaries.project.empty"));
            document.add(paragraph);
        }

        StringBuffer budgetLabel = new StringBuffer();
        ;
        table = new PdfPTable(5);

        table.setTotalWidth(480);
        table.setWidths(new int[] { 2, 3, 3, 3, 3 });
        table.setLockedWidth(true);

        for (IPElement mog : outputsList) {
            table = new PdfPTable(5);

            table.setTotalWidth(480);
            table.setWidths(new int[] { 2, 3, 3, 3, 3 });
            table.setLockedWidth(true);

            if (project.isCoFundedProject()) {
                this.addBudgetByMogOne(paragraph, table, budgetLabel, mog, startYear, endYear,
                        BudgetType.W1_W2);
                document.add(table);

                table = new PdfPTable(5);

                table.setTotalWidth(480);
                table.setWidths(new int[] { 2, 3, 3, 3, 3 });
                table.setLockedWidth(true);

                document.add(Chunk.NEWLINE);
                this.addBudgetByMogOne(paragraph, table, budgetLabel, mog, startYear, endYear,
                        BudgetType.W3_BILATERAL);
            } else {
                this.addBudgetByMogOne(paragraph, table, budgetLabel, mog, startYear, endYear,
                        this.getBudgetType());
            }

            document.add(table);
            document.add(Chunk.NEWLINE);
        }
        // }
    } catch (DocumentException e) {
        LOG.error(
                "-- generatePdf() > There was an error adding the table with content for case study summary. ",
                e);
    }
}

From source file:org.cgiar.ccafs.ap.summaries.projects.pdf.ProjectSummaryPDF.java

License:Open Source License

private void addProjectCCAFSOutcomes(String number) {
    PdfPTable table = new PdfPTable(3);

    Paragraph cell = new Paragraph();
    Paragraph indicatorsBlock = new Paragraph();
    indicatorsBlock.setAlignment(Element.ALIGN_JUSTIFIED);
    indicatorsBlock.setKeepTogether(true);

    Paragraph title = new Paragraph(number + ".2 " + this.getText("summaries.project.indicatorsContribution"),
            HEADING3_FONT);//from w w  w.j  av  a 2s.co  m
    indicatorsBlock.add(Chunk.NEWLINE);
    indicatorsBlock.add(title);

    try {
        document.add(indicatorsBlock);
        List<IPElement> listIPElements = this.getMidOutcomesPerIndicators();
        if (!listIPElements.isEmpty()) {

            if (project.isReporting()) {

                for (IPElement outcome : listIPElements) {
                    Paragraph outcomeBlock = new Paragraph();
                    int indicatorIndex = 1;

                    outcomeBlock.add(Chunk.NEWLINE);
                    outcomeBlock.setAlignment(Element.ALIGN_JUSTIFIED);
                    outcomeBlock.setFont(BODY_TEXT_BOLD_FONT);
                    outcomeBlock.add(outcome.getProgram().getAcronym());
                    outcomeBlock.add(" - " + this.getText("summaries.project.midoutcome"));

                    outcomeBlock.setFont(BODY_TEXT_FONT);
                    outcomeBlock.add(outcome.getDescription());
                    outcomeBlock.add(Chunk.NEWLINE);
                    outcomeBlock.add(Chunk.NEWLINE);

                    document.add(outcomeBlock);

                    for (IPIndicator outcomeIndicator : outcome.getIndicators()) {
                        outcomeIndicator = outcomeIndicator.getParent() != null ? outcomeIndicator.getParent()
                                : outcomeIndicator;
                        List<IPIndicator> indicators = project.getIndicatorsByParent(outcomeIndicator.getId());
                        if (indicators.isEmpty()) {
                            continue;
                        }

                        Paragraph indicatorDescription = new Paragraph();
                        indicatorDescription.setFont(BODY_TEXT_BOLD_FONT);
                        indicatorDescription.add(this.getText("summaries.project.indicators"));
                        indicatorDescription.add(String.valueOf(indicatorIndex) + ": ");

                        indicatorDescription.setFont(BODY_TEXT_FONT);
                        indicatorDescription.setAlignment(Element.ALIGN_JUSTIFIED);
                        indicatorDescription.add(outcomeIndicator.getDescription());
                        document.add(indicatorDescription);
                        document.add(Chunk.NEWLINE);
                        ;

                        PdfPCell cell_new;
                        for (IPIndicator indicator : indicators) {

                            table = new PdfPTable(3);
                            table.setLockedWidth(true);
                            table.setTotalWidth(480);
                            table.setWidths(new int[] { 3, 3, 3 });
                            table.setHeaderRows(1);

                            if (indicator.getOutcome().getId() != outcome.getId()) {
                                continue;
                            }

                            cell = new Paragraph(this.messageReturn(String.valueOf(indicator.getYear())),
                                    TABLE_HEADER_FONT);

                            cell_new = new PdfPCell(cell);
                            // Set alignment
                            cell_new.setHorizontalAlignment(Element.ALIGN_CENTER);
                            cell_new.setVerticalAlignment(Element.ALIGN_MIDDLE);
                            cell_new.setBackgroundColor(TABLE_HEADER_BACKGROUND);

                            // Set padding
                            cell_new.setUseBorderPadding(true);
                            cell_new.setPadding(3);

                            // Set border color
                            cell_new.setBorderColor(TABLE_CELL_BORDER_COLOR);
                            cell_new.setColspan(3);

                            this.addTableHeaderCell(table, cell_new);
                            // Target value
                            cell = new Paragraph(this.getText("summaries.project.indicator.targetValue"),
                                    TABLE_BODY_BOLD_FONT);
                            cell.setFont(TABLE_BODY_FONT);
                            cell.add(this.messageReturn(indicator.getTarget()));

                            this.addTableBodyCell(table, cell, Element.ALIGN_JUSTIFIED, 1);

                            // Cumulative target to date
                            // TODO
                            cell = new Paragraph(this.getText("summaries.project.indicator.cumulative"),
                                    TABLE_BODY_BOLD_FONT);
                            cell.setFont(TABLE_BODY_FONT);
                            cell.add(this.messageReturn(
                                    project.calculateAcumulativeTarget(indicator.getYear(), indicator)));
                            if (indicator.getYear() <= this.currentReportingYear) {
                                this.addTableBodyCell(table, cell, Element.ALIGN_JUSTIFIED, 1);
                                // achieved
                                cell = new Paragraph(this.getText("summaries.project.indicator.archieved"),
                                        TABLE_BODY_BOLD_FONT);
                                cell.setFont(TABLE_BODY_FONT);
                                if (indicator.getArchived() == null) {
                                    cell.add(this.messageReturn(null));
                                } else {
                                    cell.add(this.messageReturn(String.valueOf(indicator.getArchived())));
                                }
                                this.addTableBodyCell(table, cell, Element.ALIGN_JUSTIFIED, 1);
                            } else {
                                this.addTableColSpanCell(table, cell, Element.ALIGN_JUSTIFIED, 1, 2);
                            }
                            // target narrative
                            cell = new Paragraph(this.getText("summaries.project.indicator.targetNarrative"),
                                    TABLE_BODY_BOLD_FONT);
                            cell.setFont(TABLE_BODY_FONT);
                            cell.add(this.messageReturn(indicator.getDescription()));
                            this.addTableColSpanCell(table, cell, Element.ALIGN_JUSTIFIED, 1, 3);

                            // targets achieved
                            if (indicator.getYear() <= this.currentReportingYear) {
                                cell = new Paragraph(
                                        this.getText("summaries.project.indicator.targetsAchieved"),
                                        TABLE_BODY_BOLD_FONT);
                                cell.setFont(TABLE_BODY_FONT);
                                cell.add(this.messageReturn(indicator.getNarrativeTargets()));
                                this.addTableColSpanCell(table, cell, Element.ALIGN_JUSTIFIED, 1, 3);
                            }

                            // Target gender
                            cell = new Paragraph(this.getText("summaries.project.indicator.targetGender"),
                                    TABLE_BODY_BOLD_FONT);
                            cell.setFont(TABLE_BODY_FONT);
                            cell.add(this.messageReturn(indicator.getGender()));
                            this.addTableColSpanCell(table, cell, Element.ALIGN_JUSTIFIED, 1, 3);

                            // Target achieved gender
                            if (indicator.getYear() <= this.currentReportingYear) {
                                cell = new Paragraph(this.getText("summaries.project.indicator.genderAchieved"),
                                        TABLE_BODY_BOLD_FONT);
                                cell.setFont(TABLE_BODY_FONT);
                                cell.add(this.messageReturn(indicator.getNarrativeGender()));
                                this.addTableColSpanCell(table, cell, Element.ALIGN_JUSTIFIED, 1, 3);
                            }

                            document.add(table);
                            document.add(Chunk.NEWLINE);

                        }
                        indicatorIndex++;

                    }
                }

                //////////// Planning
            } else {

                for (IPElement outcome : listIPElements) {
                    Paragraph outcomeBlock = new Paragraph();
                    int indicatorIndex = 1;

                    outcomeBlock.add(Chunk.NEWLINE);
                    outcomeBlock.setAlignment(Element.ALIGN_JUSTIFIED);
                    outcomeBlock.setFont(BODY_TEXT_BOLD_FONT);
                    outcomeBlock.add(outcome.getProgram().getAcronym());
                    outcomeBlock.add(" - " + this.getText("summaries.project.midoutcome"));

                    outcomeBlock.setFont(BODY_TEXT_FONT);
                    outcomeBlock.add(outcome.getDescription());
                    outcomeBlock.add(Chunk.NEWLINE);
                    outcomeBlock.add(Chunk.NEWLINE);

                    document.add(outcomeBlock);

                    for (IPIndicator outcomeIndicator : outcome.getIndicators()) {
                        outcomeIndicator = outcomeIndicator.getParent() != null ? outcomeIndicator.getParent()
                                : outcomeIndicator;
                        List<IPIndicator> indicators = project.getIndicatorsByParent(outcomeIndicator.getId());
                        if (indicators.isEmpty()) {
                            continue;
                        }

                        Paragraph indicatorDescription = new Paragraph();
                        indicatorDescription.setFont(BODY_TEXT_BOLD_FONT);
                        indicatorDescription.add(this.getText("summaries.project.indicators"));
                        indicatorDescription.add(String.valueOf(indicatorIndex) + ": ");

                        indicatorDescription.setFont(BODY_TEXT_FONT);
                        indicatorDescription.setAlignment(Element.ALIGN_JUSTIFIED);
                        indicatorDescription.add(outcomeIndicator.getDescription());
                        document.add(indicatorDescription);
                        document.add(Chunk.NEWLINE);
                        ;

                        table = new PdfPTable(4);
                        table.setLockedWidth(true);
                        table.setTotalWidth(480);
                        table.setWidths(new int[] { 1, 3, 3, 3 });
                        table.setHeaderRows(1);

                        // Headers
                        cell = new Paragraph(this.getText("summaries.project.indicator.year"),
                                TABLE_HEADER_FONT);
                        this.addTableHeaderCell(table, cell);
                        cell = new Paragraph(this.getText("summaries.project.indicator.targetValue"),
                                TABLE_HEADER_FONT);
                        this.addTableHeaderCell(table, cell);
                        cell = new Paragraph(this.getText("summaries.project.indicator.targetNarrative"),
                                TABLE_HEADER_FONT);
                        this.addTableHeaderCell(table, cell);
                        cell = new Paragraph(this.getText("summaries.project.indicator.targetGender"),
                                TABLE_HEADER_FONT);
                        this.addTableHeaderCell(table, cell);

                        for (IPIndicator indicator : indicators) {

                            if (indicator.getOutcome().getId() != outcome.getId()) {
                                continue;
                            }
                            cell = new Paragraph(this.messageReturn(String.valueOf(indicator.getYear())),
                                    TABLE_BODY_FONT);
                            this.addTableBodyCell(table, cell, Element.ALIGN_CENTER, 1);

                            cell = new Paragraph(this.messageReturn(indicator.getTarget()), TABLE_BODY_FONT);
                            this.addTableBodyCell(table, cell, Element.ALIGN_CENTER, 1);

                            cell = new Paragraph(this.messageReturn(indicator.getDescription()),
                                    TABLE_BODY_FONT);
                            this.addTableBodyCell(table, cell, Element.ALIGN_JUSTIFIED, 1);

                            cell = new Paragraph(this.messageReturn(indicator.getGender()), TABLE_BODY_FONT);
                            this.addTableBodyCell(table, cell, Element.ALIGN_JUSTIFIED, 1);

                        }
                        indicatorIndex++;
                        document.add(table);
                        document.add(Chunk.NEWLINE);
                    }
                }
            }

            // When there isn't elements in indicators
        } else {
            cell = new Paragraph(this.getText("summaries.project.empty"));
            document.add(cell);
        }
    } catch (

    DocumentException e)

    {
        LOG.error("There was an error trying to add the project focuses to the project summary pdf", e);
    }

}