Example usage for com.lowagie.text.pdf PdfPCell setBorder

List of usage examples for com.lowagie.text.pdf PdfPCell setBorder

Introduction

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

Prototype

public void setBorder(int border) 

Source Link

Document

Enables/Disables the border on the specified sides.

Usage

From source file:org.areasy.common.doclet.document.Members.java

License:Open Source License

/**
 * Prints member information.//from   ww  w .j av  a 2 s .c o  m
 *
 * @param declaration      The modifiers ("public static final..").
 * @param returnType       Phrase with the return type text (might be
 *                         a hyperlink)
 * @param parms            Parameters of a method or constructor, null for a field.
 * @param thrownExceptions Exceptions of a method, null for a field or constructor.
 * @param isFirst          True if it is the first field/method/constructor in the list.
 * @param isField          True if it is a field.
 * @param isConstructor    True if it is a constructor.
 * @throws Exception
 */
public static void printMember(String declaration, Phrase returnType, ProgramElementDoc commentDoc,
        Parameter[] parms, ClassDoc[] thrownExceptions, boolean isFirst, boolean isField, boolean isConstructor,
        boolean isDeprecated, Phrase deprecatedPhrase, Object constantValue) throws Exception {
    String name = commentDoc.name();

    State.setCurrentMember(State.getCurrentClass() + "." + name);
    State.setCurrentDoc(commentDoc);

    // Returns the text, resolving any "inheritDoc" inline tags
    String commentText = DocletUtility.getComment(commentDoc);

    // TODO: The following line may set the wrong page number
    //      in the index, when the member gets printed on a
    //      new page completely (because it is in one table).
    // Solution unknown yet. Probably split up table.
    Doclet.getIndex().addToMemberList(State.getCurrentMember());

    // Prepare list of exceptions (if it throws any)
    String throwsText = "throws";
    int parmsColumn = declaration.length() + (name.length() - throwsText.length());

    // First output text line (declaration of method and first parameter or "()" ).
    // This first line is a special case because the class name is bold,
    // while the rest is regular plain text, so it must be built using three Chunks.
    Paragraph declarationParagraph = new Paragraph((float) 10.0);

    // left part / declaration ("public static..")
    Chunk leftPart = new Chunk(declaration, Fonts.getFont(CODE_FONT, 10));

    declarationParagraph.add(leftPart);

    if (returnType != null) {
        // left middle part / declaration ("public static..")
        declarationParagraph.add(returnType);
        declarationParagraph.add(new Chunk(" ", Fonts.getFont(CODE_FONT, 10)));
        parmsColumn = 2;
    }

    // right middle part / bold class name
    declarationParagraph.add(new Chunk(name, Fonts.getFont(CODE_FONT, BOLD, 10)));

    if (!isField) {
        // 1st parameter or empty brackets

        if ((parms != null) && (parms.length > 0)) {
            Phrase wholePhrase = new Phrase("(", Fonts.getFont(CODE_FONT, 10));
            // create link for parameter type
            wholePhrase.add(PDFUtility.getParameterTypePhrase(parms[0], 10));
            // then normal text for parameter name
            wholePhrase.add(" " + parms[0].name());
            if (parms.length > 1) {
                wholePhrase.add(",");
            } else {
                wholePhrase.add(")");
            }

            // In order to have the parameter types in the bookmark,
            // make the current state text more detailled
            String txt = State.getCurrentMethod() + "(";
            for (int i = 0; i < parms.length; i++) {
                if (i > 0)
                    txt = txt + ",";
                txt = txt + DocletUtility.getParameterType(parms[i]);
            }

            txt = txt + ")";
            State.setCurrentMethod(txt);

            // right part / parameter and brackets
            declarationParagraph.add(wholePhrase);

        } else {
            String lastPart = "()";
            State.setCurrentMethod(State.getCurrentMethod() + lastPart);

            // right part / parameter and brackets
            declarationParagraph.add(new Chunk(lastPart, Fonts.getFont(CODE_FONT, 10)));
        }

    }

    float[] widths = { (float) 6.0, (float) 94.0 };
    PdfPTable table = new PdfPTable(widths);
    table.setWidthPercentage((float) 100);

    // Before the first constructor or method, create a coloured title bar
    if (isFirst) {
        PdfPCell colorTitleCell = null;

        // Some empty space...
        Document.add(new Paragraph((float) 6.0, " "));

        if (isConstructor)
            colorTitleCell = new CustomPdfPCell("Constructors");
        else if (isField)
            colorTitleCell = new CustomPdfPCell("Fields");
        else
            colorTitleCell = new CustomPdfPCell("Methods");

        colorTitleCell.setColspan(2);
        table.addCell(colorTitleCell);
    }

    // Method name (large, first line of a method description block)
    Phrase linkPhrase = Destinations.createDestination(commentDoc.name(), commentDoc,
            Fonts.getFont(TEXT_FONT, BOLD, 14));
    Paragraph nameTitle = new Paragraph(linkPhrase);
    PdfPCell nameCell = new CellNoBorderNoPadding(nameTitle);

    if (isFirst)
        nameCell.setPaddingTop(10);
    else
        nameCell.setPaddingTop(0);

    nameCell.setPaddingBottom(8);
    nameCell.setColspan(1);

    // Create nested table in order to try to prevent the stuff inside
    // this table from being ripped appart over a page break. The method
    // name and the declaration/parm/exception line(s) should always be
    // together, because everything else just looks bad
    PdfPTable linesTable = new PdfPTable(1);
    linesTable.addCell(nameCell);
    linesTable.addCell(new CellNoBorderNoPadding(declarationParagraph));

    if (!isField) {
        // Set up following declaration lines
        Paragraph[] params = PDFUtility.createParameters(parmsColumn, parms);
        Paragraph[] exceps = PDFUtility.createExceptions(parmsColumn, thrownExceptions);

        for (int i = 0; i < params.length; i++) {
            linesTable.addCell(new CellNoBorderNoPadding(params[i]));
        }

        for (int i = 0; i < exceps.length; i++) {
            linesTable.addCell(new CellNoBorderNoPadding(exceps[i]));
        }
    }

    // Create cell for inserting the nested table into the outer table
    PdfPCell cell = new PdfPCell(linesTable);
    cell.setPadding(5);
    cell.setBorder(Rectangle.NO_BORDER);
    cell.setColspan(2);
    table.addCell(cell);

    // The empty, left cell (the invisible indentation column)
    State.setContinued(true);

    PdfPCell leftCell = PDFUtility.createElementCell(5, new Phrase("", Fonts.getFont(TEXT_FONT, BOLD, 6)));
    PdfPCell spacingCell = new PdfPCell();
    spacingCell.setFixedHeight((float) 8.0);
    spacingCell.setBorder(Rectangle.NO_BORDER);
    table.addCell(spacingCell);
    table.addCell(spacingCell);

    // The descriptive method explanation text

    if (isDeprecated) {
        Phrase commentPhrase = new Phrase();
        commentPhrase
                .add(new Phrase(AbstractConfiguration.LB_DEPRECATED_TAG, Fonts.getFont(TEXT_FONT, BOLD, 10)));
        commentPhrase.add(deprecatedPhrase);
        table.addCell(leftCell);
        table.addCell(PDFUtility.createElementCell(0, commentPhrase));

        commentPhrase = new Phrase();
        commentPhrase.add(Chunk.NEWLINE);
        table.addCell(leftCell);
        table.addCell(PDFUtility.createElementCell(0, commentPhrase));
    }

    Element[] objs = HtmlParserWrapper.createPdfObjects(commentText);

    if (objs.length == 1) {
        table.addCell(leftCell);
        table.addCell(PDFUtility.createElementCell(0, objs[0]));
    } else {
        table.addCell(leftCell);
        table.addCell(PDFUtility.createElementCell(0, Element.ALIGN_LEFT, objs));
    }

    // TODO: FORMAT THIS CONSTANT VALUE OUTPUT CORRECTLY

    if (isField) {
        if (constantValue != null) {
            // Add 2nd comment line (left cell empty, right cell text)
            Chunk valueTextChunk = new Chunk("Constant value: ", Fonts.getFont(TEXT_FONT, PLAIN, 10));
            Chunk valueContentChunk = new Chunk(constantValue.toString(), Fonts.getFont(CODE_FONT, BOLD, 10));
            Phrase constantValuePhrase = new Phrase("");
            constantValuePhrase.add(valueTextChunk);
            constantValuePhrase.add(valueContentChunk);
            table.addCell(leftCell);
            table.addCell(PDFUtility.createElementCell(0, constantValuePhrase));
        }
    }

    // Add whole method block to document
    Document.add(table);
}

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

License:Open Source License

private void addStandardTableEntry(PdfPTable table, String name, String value) {
    PdfPCell cell1 = new PdfPCell(getParagraph(name + ":"));

    cell1.setBorder(PdfPCell.BOTTOM);
    cell1.setHorizontalAlignment(Element.ALIGN_LEFT);
    PdfPCell cell2 = new PdfPCell(getParagraph(value));
    cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell2.setBorder(PdfPCell.BOTTOM);//from w  ww . j  ava  2  s  . co  m

    table.addCell(cell1);
    table.addCell(cell2);
}

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);//from   www .  j  a v a2s  . 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.drools.verifier.doc.DroolsDocsComponentFactory.java

License:Apache License

public void onEndPage(PdfWriter writer, Document document) {

    try {/*  ww w .ja  va 2  s. c  o m*/
        Image image = Image.getInstance(DroolsDocsBuilder.class.getResource("guvnor-webapp.png")); // TODO this image never existed
        image.setAlignment(Image.RIGHT);
        image.scaleAbsolute(100, 30);
        Rectangle page = document.getPageSize();
        PdfPTable head = new PdfPTable(2);

        PdfPCell cell1 = new PdfPCell(image);
        cell1.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell1.setBorder(0);

        head.addCell(cell1);

        PdfPCell cell2 = new PdfPCell(new Phrase(currentDate, DroolsDocsComponentFactory.HEADER_FOOTER_TEXT));
        cell2.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cell2.setBorder(0);

        head.addCell(cell2);

        head.setTotalWidth(page.getWidth() - document.leftMargin() - document.rightMargin());
        head.writeSelectedRows(0, -1, document.leftMargin(),
                page.getHeight() - document.topMargin() + head.getTotalHeight(), writer.getDirectContent());

    } catch (Exception e) {
        throw new ExceptionConverter(e);
    }
}

From source file:org.emmanet.controllers.PdfView.java

License:Apache License

@Override
protected void buildPdfDocument(Map map, Document doc, PdfWriter writer, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    if (map.get("WebRequestsDAO") != null && request.getParameter("type").equals("req")) {
        WebRequestsDAO wrd = new WebRequestsDAO();
        WebRequests wr = new WebRequests();
        wrd = (WebRequestsDAO) map.get("WebRequestsDAO");

        if (wrd.getRegister_interest() != null) {
            if (wrd.getRegister_interest().equals("1")) {
                pdfTitle = "EMMA Strain Interest Registration Form";
                pdfConditions = false;//  ww w .j a  va 2s  .c o m
            } else if (wrd.getRegister_interest().equals("0")) {
                pdfTitle = "EMMA Mutant Request Form";
                pdfConditions = true;
            }
        }

        Paragraph pHead = new Paragraph(pdfTitle + "\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11));
        pHead.setAlignment(Element.ALIGN_CENTER);
        doc.add(pHead);
        doc.add(new Paragraph(pdfTitle + "\nRequest ID:" + wrd.getId_req() + "\n\n",
                FontFactory.getFont(FontFactory.HELVETICA_BOLD, 20)));
        Paragraph pSubHead = new Paragraph(
                "Following data have been submitted to EMMA on " + wrd.getTimestamp(),
                FontFactory.getFont(FontFactory.HELVETICA, 11));
        pSubHead.setAlignment(Element.ALIGN_CENTER);

        doc.add(pSubHead);
        doc.add(Chunk.NEWLINE);
        // Space padding underline
        Chunk underlined = new Chunk(
                "                                                                                     "
                        + "                                                                       ");
        underlined.setUnderline(new Color(0x00, 0x00, 0x00), 0.0f, 0.2f, 16.0f, 0.0f,
                PdfContentByte.LINE_CAP_BUTT);//Black line
        doc.add(underlined);
        Font font = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 11);
        // Set table cell widths equiv. to 25% and 75%
        float[] widths = { 0.25f, 0.75f };
        PdfPTable table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        PdfPCell cell = new PdfPCell(new Paragraph("Scientist\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        table.addCell("Title");
        table.addCell("" + wrd.getSci_title());
        table.addCell("Firstname");
        table.addCell("" + wrd.getSci_firstname());
        table.addCell("Surname");
        table.addCell("" + wrd.getSci_surname());
        table.addCell("E-mail");
        table.addCell("" + wrd.getSci_e_mail());
        table.addCell("Phone");
        table.addCell("" + wrd.getSci_phone());
        table.addCell("Fax");
        table.addCell("" + wrd.getSci_fax());
        PdfPCell cellShip = new PdfPCell(new Paragraph("\nShipping Contact\n\n", font));
        cellShip.setColspan(2);
        cellShip.setBorder(0);
        table.addCell(cellShip);

        table.addCell("Title");
        table.addCell("" + wrd.getCon_title());
        table.addCell("Firstname");
        table.addCell("" + wrd.getCon_firstname());
        table.addCell("Surname");
        table.addCell("" + wrd.getCon_surname());
        table.addCell("E-mail");
        table.addCell("" + wrd.getCon_e_mail());
        table.addCell("Phone");
        table.addCell("" + wrd.getCon_phone());
        table.addCell("Fax");
        table.addCell("" + wrd.getCon_fax());
        table.addCell("Institution");
        table.addCell("" + wrd.getCon_institution());
        table.addCell("Department");
        table.addCell("" + wrd.getCon_dept());
        table.addCell("Address Line 1");
        table.addCell("" + wrd.getCon_addr_1());
        table.addCell("Address Line 2");
        table.addCell("" + wrd.getCon_addr_2());
        table.addCell("County/province");
        table.addCell("" + wrd.getCon_province());
        table.addCell("Town");
        table.addCell("" + wrd.getCon_town());
        table.addCell("Postcode");
        table.addCell("" + wrd.getCon_postcode());
        table.addCell("Country");
        table.addCell("" + wrd.getCon_country());

        if (!wrd.getRegister_interest().equals("1")) {
            //webrequest is not a roi so these were set above so send them to pdf
            PdfPCell cellBill = new PdfPCell(new Paragraph("\nBilling Details\n\n", font));
            cellBill.setColspan(2);
            cellBill.setBorder(0);
            table.addCell(cellBill);

            table.addCell("VAT reference");
            table.addCell("" + wrd.getBil_vat());
            table.addCell("Purchase Order Number");
            table.addCell("" + wrd.getPO_ref());
            table.addCell("Title");
            table.addCell("" + wrd.getBil_title());
            table.addCell("Firstname");
            table.addCell("" + wrd.getBil_firstname());
            table.addCell("Surname");
            table.addCell("" + wrd.getBil_surname());
            table.addCell("E-mail");
            table.addCell("" + wrd.getBil_e_mail());
            table.addCell("Phone");
            table.addCell("" + wrd.getBil_phone());
            table.addCell("Fax");
            table.addCell("" + wrd.getBil_fax());
            table.addCell("Institution");
            table.addCell("" + wrd.getBil_institution());
            table.addCell("Department");
            table.addCell("" + wrd.getBil_dept());
            table.addCell("Address Line 1");
            table.addCell("" + wrd.getBil_addr_1());
            table.addCell("Address Line 2");
            table.addCell("" + wrd.getBil_addr_2());
            table.addCell("County/province");
            table.addCell("" + wrd.getBil_province());
            table.addCell("Town");
            table.addCell("" + wrd.getBil_town());
            table.addCell("Postcode");
            table.addCell("" + wrd.getBil_postcode());
            table.addCell("Country");
            table.addCell("" + wrd.getBil_country());

            // TODO add europhenome and wtsi_mouse_portal info
        }

        PdfPCell cellStrain = new PdfPCell(new Paragraph("\nStrain Details\n\n", font));
        cellStrain.setColspan(2);
        cellStrain.setBorder(0);

        table.addCell(cellStrain);
        table.addCell("Strain ID");
        table.addCell("" + wrd.getStrain_id());
        table.addCell("Strain name");
        //new String (wrd.getStrain_name().getBytes("UTF-8"));
        //table.addCell("" + wrd.getStrain_name());
        table.addCell("" + new String(wrd.getStrain_name().getBytes("UTF-8")));
        table.addCell("Common Name(s)");
        table.addCell("" + wrd.getCommon_name_s());

        if (wrd.getReq_material() != null) {
            PdfPCell cellMaterial = new PdfPCell(new Paragraph("\nRequested Material\n\n", font));
            cellMaterial.setColspan(2);
            cellMaterial.setBorder(0);

            table.addCell(cellMaterial);
            table.addCell("Material");
            table.addCell("" + wrd.getReq_material());
        }

        if (wrd.getLive_animals() != null) {
            table.addCell("Live Animals");
            table.addCell("Selected");
        }

        if (wrd.getFrozen_emb() != null) {
            table.addCell("Frozen Embryos");
            table.addCell("Selected");
        }

        if (wrd.getFrozen_spe() != null) {
            table.addCell("Frozen Sperm");
            table.addCell("Selected");
        }

        if (pdfConditions) {
            String text = "";
            String text1 = "";
            String text2 = "";
            String header = "";
            String header1 = "";
            String header2 = "";
            if (wrd.getApplication_type().equals("request_only")) {
                text = new StringBuilder().append(text).append(
                        "\nYou have indicated that you have read the conditions and agree to pay the transmittal fee "
                                + "plus shipping costs.")
                        .toString();

                header = new StringBuilder().append(header).append("\nStandard request\n").toString();

            } else if (!wrd.getApplication_type().equals("request_only")) {
                header1 = new StringBuilder().append(header1)
                        .append("\nApplication for Transnational Access Activity").toString();
                if (wrd.getApplication_type().equals("ta_only")) {
                    text1 = new StringBuilder().append(text1).append(
                            "\nYou have indicated that you have read the conditions and have applied for free of charge TA only. "
                                    + "In the case of the TA application being rejected the request process will be terminated.")
                            .toString();
                    header1 = new StringBuilder().append(header1).append(" (TA Option B)\n").toString();
                } else {
                    text1 = new StringBuilder().append(text1).append(
                            "\nYou have indicated that you have read the conditions and have applied for free of charge TA "
                                    + "and have agreed to pay the service charge plus shipping cost if the TA application is rejected.")
                            .toString();
                    header1 = new StringBuilder().append(header1).append(" (TA Option A)\n").toString();
                }

                header2 = new StringBuilder().append(header2).append(
                        "\n\nDescription of project (1/2 page) involving requested EMMA mouse mutant resource. "
                                + "The project description will be used by the Evaluation Committee for selection of applicants:")
                        .toString();
            }

            if (!wrd.getApplication_type().equals("request_only")) {
                //  table.addCell("" + model.get("ta_proj_desc"));
                text2 = new StringBuilder().append(text2).append("\n\n ").append(wrd.getProject_description())
                        .toString();
            }

            if (!wrd.getApplication_type().equals("request_only")) {
                //we have a ta header and text to add
                PdfPCell cellConditions1 = new PdfPCell(new Paragraph(header1, font));

                cellConditions1.setColspan(2);
                cellConditions1.setBorder(0);
                table.addCell(cellConditions1);

                PdfPCell cellConditions2 = new PdfPCell(new Paragraph(text1));

                cellConditions2.setColspan(2);
                cellConditions2.setBorder(0);
                table.addCell(cellConditions2);

                PdfPCell cellConditions3 = new PdfPCell(new Paragraph(header2, font));

                cellConditions3.setColspan(2);
                cellConditions3.setBorder(0);
                table.addCell(cellConditions3);

                PdfPCell cellConditions4 = new PdfPCell(new Paragraph(text2));

                cellConditions4.setColspan(2);
                cellConditions4.setBorder(0);
                table.addCell(cellConditions4);

            } else {

                PdfPCell cellConditions = new PdfPCell(new Paragraph(header, font));
                cellConditions.setColspan(2);
                cellConditions.setBorder(0);
                table.addCell(cellConditions);

                PdfPCell cellConditionsTxt = new PdfPCell(new Paragraph(text));
                cellConditionsTxt.setColspan(2);
                cellConditionsTxt.setBorder(0);
                table.addCell(cellConditionsTxt);
            }
        }
        doc.add(table);
    }

    if (map.get("StrainsDAO") != null && request.getParameter("type").equals("sub")) {
        StrainsDAO sd;
        StrainsManager sm = new StrainsManager();
        PeopleDAO pd;
        PeopleDAO subPDAO = new PeopleDAO();
        PeopleManager pm = new PeopleManager();
        BibliosManager bm = new BibliosManager();

        sd = (StrainsDAO) map.get("StrainsDAO");
        pd = pm.getPerson(sd.getPer_id_per_contact());//For shipping details

        if (sd.getPer_id_per_sub() != null) {
            subPDAO = pm.getPerson(sd.getPer_id_per_sub());
        }

        //RETRIEVE ASSOCIATED SUBMISSION FILES IF PRESENT

        final String submissionID = sd.getSub_id_sub();
        System.out.println("SUBMISSION ID IS::" + submissionID);

        List assocFilesADDITIONAL = new ArrayList();
        List assocFilesSANITARY = new ArrayList();
        List assocFilesCHARACTERISATION = new ArrayList();

        File dir = new File(SUBFORMUPLOAD);
        File[] files;
        files = dir.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                //only add to list if submission id is conatined within file name (which includes path and file name)
                if (submissionID != null && name.startsWith(submissionID)) {
                    return name.toLowerCase().endsWith(".pdf");
                }
                return false;
            }
        });
        System.out.println("Files size is::" + files.length);
        if (files != null && submissionID != null) {
            for (int i = 0; i < files.length; i++) {
                System.out.println("FILEname VALUE " + i + "==" + files[i].getName());
                String file = files[i].getName();
                if (file.startsWith(submissionID) && file.contains((CharSequence) "ADDITIONAL")) {
                    assocFilesADDITIONAL.add(file);
                    System.out.println("ADDITIONAL file " + file);
                } else if (file.startsWith(submissionID) && file.contains((CharSequence) "SANITARYSTATUS")) {
                    assocFilesSANITARY.add(file);
                    System.out.println("SANITARY file " + file);
                } else {
                    assocFilesCHARACTERISATION.add(file);
                    System.out.println("CHARACTERISATION file " + file);
                }
            }
        }

        ServletContext servletContext = request.getSession().getServletContext();
        URL infrafrontierIconURL = servletContext.getResource("/images/infrafrontier/icon/footerlogo.jpg");
        logger.debug("infrafrontierIconURL = " + infrafrontierIconURL);
        URL emmaIconURL = servletContext.getResource("/images/infrafrontier/icon/emma-logo-soft.png");
        logger.debug("emmaIconURL = " + emmaIconURL);
        Image infrafrontierIcon = Image.getInstance(infrafrontierIconURL);
        Image emmaIcon = Image.getInstance(emmaIconURL);

        pdfTitle = "EMMA Mutant Submission Form";
        doc.add(new Chunk(infrafrontierIcon, 0, 0));
        doc.add(new Chunk(emmaIcon, 320, 0));
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        Paragraph paragraph = new Paragraph(pdfTitle, FontFactory.getFont(FontFactory.HELVETICA_BOLD, 20));
        paragraph.setAlignment(Element.ALIGN_CENTER);
        doc.add(paragraph);

        float[] widths = { 0.25f, 0.75f };
        PdfPTable table = new PdfPTable(widths);
        table.setWidthPercentage(100);
        PdfPCell cell;

        Paragraph pSubHead = new Paragraph(
                "\nThe Following data have been submitted to EMMA on " + sd.getArchiveDAO().getSubmitted(),
                FontFactory.getFont(FontFactory.HELVETICA, 11));
        pSubHead.setAlignment(Element.ALIGN_CENTER);

        doc.add(pSubHead);
        doc.add(Chunk.NEWLINE);
        // Space padding underline
        Chunk underlined = new Chunk(
                "                                                                                     "
                        + "                                                                       ");
        underlined.setUnderline(new Color(0x00, 0x00, 0x00), 0.0f, 0.2f, 16.0f, 0.0f,
                PdfContentByte.LINE_CAP_BUTT);//Black line
        doc.add(underlined);
        Font font = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 11);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Genotype preparation - strain name [actually, synonym] and description
        // Jira request EMMA-586 - use strain.name instead of synonym (requested by Sabine)
        String strainName = sd.getName();
        pSubHead = new Paragraph(strainName + " / " + sd.getEmma_id() + "\n\n",
                FontFactory.getFont(FontFactory.HELVETICA_BOLD, 11));
        pSubHead.setAlignment(Element.ALIGN_CENTER);
        doc.add(pSubHead);

        // Submitter
        cell = new PdfPCell(new Paragraph("\nSubmitter (Steps 1 and 2 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        if (sd.getPer_id_per_sub() != null) {
            table.addCell(cell);
            table.addCell("Title");
            table.addCell("" + subPDAO.getTitle());
            table.addCell("Firstname");
            table.addCell("" + subPDAO.getFirstname());
            table.addCell("Surname");
            table.addCell("" + subPDAO.getSurname());
            table.addCell("E-mail");
            table.addCell("" + subPDAO.getEmail());
            table.addCell("Phone");
            table.addCell("" + subPDAO.getPhone());
            table.addCell("Fax");
            table.addCell("" + subPDAO.getFax());
        }
        if (subPDAO.getLabsDAO() != null) {
            table.addCell("Institution");
            table.addCell("" + subPDAO.getLabsDAO().getName());
            table.addCell("Department");
            table.addCell("" + subPDAO.getLabsDAO().getDept());
            table.addCell("Address Line 1");
            table.addCell("" + subPDAO.getLabsDAO().getAddr_line_1());
            table.addCell("Address Line 2");
            table.addCell("" + subPDAO.getLabsDAO().getAddr_line_2());
            table.addCell("County/province");
            table.addCell("" + subPDAO.getLabsDAO().getProvince());
            table.addCell("Town");
            table.addCell("" + subPDAO.getLabsDAO().getTown());
            table.addCell("Postcode");
            table.addCell("" + subPDAO.getLabsDAO().getPostcode());
            table.addCell("Country");
            table.addCell("" + subPDAO.getLabsDAO().getCountry());
        }
        doc.add(table);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Producer
        cell = new PdfPCell(new Paragraph("Producer (Step 3 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        table.addCell("Title");
        table.addCell("" + sd.getPeopleDAO().getTitle());
        table.addCell("Firstname");
        table.addCell("" + sd.getPeopleDAO().getFirstname());
        table.addCell("Surname");
        table.addCell("" + sd.getPeopleDAO().getSurname());
        table.addCell("E-mail");
        table.addCell("" + sd.getPeopleDAO().getEmail());
        table.addCell("Phone");
        table.addCell("" + sd.getPeopleDAO().getPhone());
        table.addCell("Fax");
        table.addCell("" + sd.getPeopleDAO().getFax());
        table.addCell("Institution");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getName());
        table.addCell("Department");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getDept());
        table.addCell("Address Line 1");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getAddr_line_1());
        table.addCell("Address Line 2");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getAddr_line_2());
        table.addCell("County/province");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getProvince());
        table.addCell("Town");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getTown());
        table.addCell("Postcode");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getPostcode());
        table.addCell("Country");
        table.addCell("" + sd.getPeopleDAO().getLabsDAO().getCountry());
        Integer id_ilar = Utils.tryParseInt(sd.getPeopleDAO().getId_ilar());
        if ((id_ilar != null) && (id_ilar.intValue() > 0)) { // If there is a valid ILAR, display it.
            table.addCell("ILAR");
            table.addCell(sd.getPeopleDAO().getIlarDAO().getLabcode());
        }

        doc.add(table);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Shipper
        cell = new PdfPCell(new Paragraph("\nShipper (Step 4 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        table.addCell("Title");
        table.addCell("" + pd.getTitle());
        table.addCell("Firstname");
        table.addCell("" + pd.getFirstname());
        table.addCell("Surname");
        table.addCell("" + pd.getSurname());
        table.addCell("E-mail");
        table.addCell("" + pd.getEmail());
        table.addCell("Phone");
        table.addCell("" + pd.getPhone());
        table.addCell("Fax");
        table.addCell("" + pd.getFax());
        table.addCell("Institution");
        table.addCell("" + pd.getLabsDAO().getName());
        table.addCell("Department");
        table.addCell("" + pd.getLabsDAO().getDept());
        table.addCell("Address Line 1");
        table.addCell("" + pd.getLabsDAO().getAddr_line_1());
        table.addCell("Address Line 2");
        table.addCell("" + pd.getLabsDAO().getAddr_line_2());
        table.addCell("County/province");
        table.addCell("" + pd.getLabsDAO().getProvince());
        table.addCell("Town");
        table.addCell("" + pd.getLabsDAO().getTown());
        table.addCell("Postcode");
        table.addCell("" + pd.getLabsDAO().getPostcode());
        table.addCell("Country");
        table.addCell("" + pd.getLabsDAO().getCountry());

        doc.add(table);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        String origBgName = sd.getBackgroundDAO().getName();

        // Genotype
        cell = new PdfPCell(new Paragraph("\nGenotype (Step 5 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        table.addCell("Strain Name");
        table.addCell("" + strainName);

        table.addCell("Genetic description");
        table.addCell("" + cleanNULLS(sd.getCharact_gen(), false));

        table.addCell("Current genetic background");
        table.addCell("" + cleanNULLS(origBgName, false));

        table.addCell("Number of generations backcrossed");
        table.addCell("" + cleanNULLS(sd.getGeneration(), false));

        table.addCell("Number of generations sib-mated");
        table.addCell("" + cleanNULLS(sd.getSibmatings(), false));

        table.addCell("Breeding history");
        table.addCell("" + sd.getMaintenance());

        doc.add(table);
        doc.add(Chunk.NEWLINE);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Genotype - Mutations
        cell = new PdfPCell(new Paragraph("Mutation(s)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        Set sMutations = sd.getMutationsStrainsDAO();

        StringBuffer sDom = new StringBuffer();
        for (Iterator it = sMutations.iterator(); it.hasNext();) {
            MutationsStrainsDAO mutDAO = (MutationsStrainsDAO) it.next();
            if (mutDAO.getMutationsDAO().getDominance() != null) {
                sDom = new StringBuffer(sDom).append(mutDAO.getMutationsDAO().getDominance().toString());
            }

            cell = new PdfPCell(
                    new Paragraph("Type: " + cleanNULLS(mutDAO.getMutationsDAO().getMain_type(), false),
                            FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(
                    new Paragraph("Subtype: " + cleanNULLS(mutDAO.getMutationsDAO().getSub_type(), false),
                            FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "Affected gene: " + cleanNULLS(
                            mutDAO.getMutationsDAO().getAllelesDAO().getGenesDAO().getName(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "MGI of affected gene: " + cleanNULLS(
                            mutDAO.getMutationsDAO().getAllelesDAO().getGenesDAO().getMgi_ref(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "Affected allele: " + cleanNULLS(mutDAO.getMutationsDAO().getAllelesDAO().getName(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "MGI of affected allele: "
                            + cleanNULLS(mutDAO.getMutationsDAO().getAllelesDAO().getMgi_ref(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "Affected chromosome: " + cleanNULLS(
                            mutDAO.getMutationsDAO().getAllelesDAO().getGenesDAO().getChromosome(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "Dominance pattern: " + cleanNULLS(mutDAO.getMutationsDAO().getDominance(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            if (mutDAO.getMutationsDAO().getBackgroundDAO() != null) {
                cell = new PdfPCell(new Paragraph(
                        "Original genetic background: "
                                + cleanNULLS(mutDAO.getMutationsDAO().getBackgroundDAO().getName(), false),
                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
            } else {
                cell = new PdfPCell(new Paragraph("\n"));
            }
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            if (mutDAO.getMutationsDAO().getCh_ano_name() != null) {
                cell = new PdfPCell(new Paragraph(
                        "Chromosomal anomaly name: "
                                + cleanNULLS(mutDAO.getMutationsDAO().getCh_ano_name(), false),
                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
            } else {
                cell = new PdfPCell(new Paragraph("\n"));
            }
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            if (mutDAO.getMutationsDAO().getCh_ano_desc() != null) {
                cell = new PdfPCell(new Paragraph(
                        "Chromosomal anomaly description: "
                                + cleanNULLS(mutDAO.getMutationsDAO().getCh_ano_desc(), false),
                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
            } else {
                cell = new PdfPCell(new Paragraph("\n"));
            }
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph(
                    "ES cell line used: " + cleanNULLS(mutDAO.getMutationsDAO().getTm_esline(), false) + "\n\n",
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);
        }

        /* END MUTATIONS*/

        doc.add(table);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        cell = new PdfPCell(new Paragraph("\nONE mutant strain is defined by its specific set of mutation(s) "
                + "and its specific genetic background. Therefore strains with the same set of mutation(s) but different "
                + "backgrounds do require DISTINCT submission forms (i.e) ONE form for each background\n\n",
                font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        doc.add(table);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Phenotype
        cell = new PdfPCell(new Paragraph("\nPhenotype (Step 6 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("Phenotypic description of homozygous mice\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getPheno_text(), true)));
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("\nPhenotypic description of heterozygous mice\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getPheno_text_hetero(), true)));
        cell.setColspan(2);
        table.addCell(cell);
        doc.add(table);

        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // References
        List bibliosStrains = bm.bibliosStrains(sd.getId_str());
        String acceptedString = ((!bibliosStrains.isEmpty()) && (bibliosStrains.size() > 0) ? "Yes/Accepted"
                : "No/Not known");
        cell = new PdfPCell(new Paragraph("\nReferences (Step 7 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("Has this mouse mutant strain been published or accepted for publication? "
                        + acceptedString + "\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        for (Iterator it = bibliosStrains.iterator(); it.hasNext();) {
            BibliosStrainsDAO bsdao = (BibliosStrainsDAO) it.next();

            cell = new PdfPCell(
                    new Paragraph("Short description\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            if (bsdao.getBibliosDAO().getNotes() != null) {
                cell = new PdfPCell(new Paragraph("" + cleanNULLS(bsdao.getBibliosDAO().getNotes(), true)));
            } else {
                cell = new PdfPCell(new Paragraph("\n"));
            }
            cell.setColspan(2);
            table.addCell(cell);

            String pubmedId = (bsdao.getBibliosDAO().getPubmed_id() == null ? ""
                    : bsdao.getBibliosDAO().getPubmed_id());
            cell = new PdfPCell(
                    new Paragraph("\nPubMed ID: " + pubmedId, FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph("Title: " + bsdao.getBibliosDAO().getTitle(),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            String authors = "Authors: " + bsdao.getBibliosDAO().getAuthor1();
            if (bsdao.getBibliosDAO().getAuthor2() != null)
                authors = authors + ", " + bsdao.getBibliosDAO().getAuthor2();
            cell = new PdfPCell(new Paragraph(authors, FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph("Journal/Book: " + bsdao.getBibliosDAO().getJournal(),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph("Year: " + cleanNULLS(bsdao.getBibliosDAO().getYear(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph("Volume: " + bsdao.getBibliosDAO().getVolume(),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            cell = new PdfPCell(new Paragraph("Pages: " + bsdao.getBibliosDAO().getPages() + "\n\n",
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);
        }
        doc.add(table);

        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Characterization
        cell = new PdfPCell(new Paragraph("\nCharacterization (Step 8 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        cell = new PdfPCell(new Paragraph(
                "By genotyping \n" + "(e.g. sequence of PCR primers and PCR settings,Southern probes and "
                        + "hybridization protocol)\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getChar_genotyping(), true)));
        } else {
            cell = new PdfPCell(new Paragraph("\n"));
        }
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("\nBy phenotyping (e.g. coat colour)\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(
                    new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getChar_phenotyping(), true)));
        } else {
            cell = new PdfPCell(new Paragraph("\n"));
        }
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("\nBy any other means that are not genotyping or phenotyping\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getChar_other(), true)));
        } else {
            cell = new PdfPCell(new Paragraph(""));
        }
        cell.setColspan(2);
        table.addCell(cell);

        //assocFilesCHARACTERISATION

        StringBuffer additionalCharacFiles = new StringBuffer("");
        for (Iterator it = assocFilesCHARACTERISATION.iterator(); it.hasNext();) {
            String fileName = it.next().toString();
            additionalCharacFiles = new StringBuffer(additionalCharacFiles).append("\n        ")
                    .append(fileName);
        }

        cell = new PdfPCell(
                new Paragraph("\nAdditional files uploaded:", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("" + additionalCharacFiles, FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        doc.add(table);

        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);

        // Breeding
        cell = new PdfPCell(new Paragraph("\nBreeding (Step 9 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("Are homozygous mice viable? " + cleanNULLS(sd.getMutant_viable(), false),
                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        cell = new PdfPCell(
                new Paragraph("Are homozygous mice fertile? " + cleanNULLS(sd.getMutant_fertile(), false),
                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Are heterozygous/hemizygous mice fertile? " + cleanNULLS(sd.getHethemi_fertile(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Are homozygous matings required? " + cleanNULLS(sd.getRequire_homozygous() + "\n\n", false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph(
                    "" + cleanNULLS(sd.getResiduesDAO().getHomozygous_matings_required_text(), true)));
        } else {
            cell = new PdfPCell(new Paragraph(""));
        }
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "\nAverage age of reproductive maturity (weeks): "
                        + cleanNULLS(sd.getResiduesDAO().getReproductive_maturity_age(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Average age of reproductive decline (months): "
                        + cleanNULLS(sd.getResiduesDAO().getReproductive_decline_age(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Average length of gestation (days): "
                        + cleanNULLS(sd.getResiduesDAO().getGestation_length(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Average number of pups at birth: " + cleanNULLS(sd.getResiduesDAO().getPups_at_birth(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Average number of pups surviving to weaning: "
                        + cleanNULLS(sd.getResiduesDAO().getPups_at_weaning(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Recommended weaning age (days): " + cleanNULLS(sd.getResiduesDAO().getWeaning_age(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Average number of litters in lifetime: "
                        + cleanNULLS(sd.getResiduesDAO().getLitters_in_lifetime(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Breeding performance: " + cleanNULLS(sd.getResiduesDAO().getBreeding_performance(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("Husbandry requirements:\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(
                    new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getAnimal_husbandry() + "\n", true)));
        } else {
            cell = new PdfPCell(new Paragraph(""));
        }
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("\nAre mice immunicompromised? " + cleanNULLS(sd.getImmunocompromised(), false),
                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("\nSanitary status:\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(
                    new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getCurrent_sanitary_status(), true)));
        } else {
            cell = new PdfPCell(new Paragraph("\n"));
        }
        cell.setColspan(2);

        table.addCell(cell);
        cell = new PdfPCell(
                new Paragraph("\nAnimal welfare:\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getWelfare(), true)));
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("\nRemedial actions:\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getRemedial_actions(), true)));
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("\nPlease note that under certain circumstances "
                + "(e.g.: long-term cryopreservation by sperm freezing) the strain's original genotype will not "
                + "always be available for future reconstitution of live colonies. Therefore, the original genetic "
                + "background cannot be guaranteed.\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        //assocFilesSANITARY

        StringBuffer additionalSanitaryFiles = new StringBuffer("");
        for (Iterator it = assocFilesSANITARY.iterator(); it.hasNext();) {
            String fileName = it.next().toString();
            additionalSanitaryFiles = new StringBuffer(additionalSanitaryFiles).append("\n        ")
                    .append(fileName);
        }

        cell = new PdfPCell(
                new Paragraph("\nAdditional files uploaded:", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("" + additionalSanitaryFiles, FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        doc.add(table);

        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);
        table.setWidthPercentage(100);
        doc.add(table);

        // Research value
        cell = new PdfPCell(new Paragraph("\n\n\nResearch value (Step 10 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "Does this strain model a human condition or disease? "
                        + cleanNULLS(sd.getHuman_model(), false),
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        Strains_OmimManager strainsOmimManager = new Strains_OmimManager();
        List<Strains_OmimDAO> strains_omimDAOList = strainsOmimManager.findById_Strains(sd.getId_str());

        if (!strains_omimDAOList.isEmpty()) {
            cell = new PdfPCell(
                    new Paragraph("\nOMIM IDs:\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);

            for (Strains_OmimDAO strainsOmimDAO : strains_omimDAOList) {
                cell = new PdfPCell(
                        new Paragraph("" + cleanNULLS(strainsOmimDAO.getOmimDAO().getOmim(), true)));
                cell.setColspan(2);
                table.addCell(cell);
            }
        }

        cell = new PdfPCell(new Paragraph(
                "\n\nIf OMIM IDs are not available, please describe the human condition or disease:\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getHuman_model_desc(), true)));
        cell.setColspan(2);
        table.addCell(cell);

        // Prep for Research areas
        Set cs = sd.getCategoriesStrainsDAO();
        String otherCategory = "";
        StringBuffer categories = new StringBuffer();
        for (Iterator it = cs.iterator(); it.hasNext();) {
            CategoriesStrainsDAO cd = (CategoriesStrainsDAO) it.next();
            if (cd.getCategoriesDAO().getCurated().compareTo("Y") == 0)
                categories.append("\n        ").append(cd.getCategoriesDAO().getMain_cat());
            else
                otherCategory = cd.getCategoriesDAO().getMain_cat();
        }

        cell = new PdfPCell(new Paragraph("\n\nResearch areas:\n        " + categories + "\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        Set sRTools = sd.getRtoolsDAO();
        StringBuffer rtools = new StringBuffer("");
        System.out.println("size of rtoolsdao set is :- " + sRTools.size());
        for (Iterator it = sRTools.iterator(); it.hasNext();) {
            RToolsDAO rtd = (RToolsDAO) it.next();
            rtools = new StringBuffer(rtools).append("\n        ")
                    .append(rtd.getCvrtoolsDAO().getDescription());
            //System.out.println("Rtools set iterator value is: " + rtools);
        }

        if ((otherCategory != null) && (otherCategory.trim().length() > 0)) {
            cell = new PdfPCell(new Paragraph("\n\nOther Research areas:\n\n        " + otherCategory + "\n",
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
            cell.setColspan(2);
            cell.setBorder(0);
            table.addCell(cell);
        }
        cell = new PdfPCell(new Paragraph("\n\nResearch tools:\n" + rtools,
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        /* END OF Research value */

        doc.add(table);
        doc.add(Chunk.NEWLINE);
        doc.add(Chunk.NEWLINE);
        doc.add(underlined);
        table = new PdfPTable(widths);

        table.setWidthPercentage(100);

        /* Additional information */

        cell = new PdfPCell(new Paragraph("\n\nAdditional information (Step 11 of 11)\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph(
                    "How many requests for this strain have you received in the last 6 months? "
                            + cleanNULLS(sd.getResiduesDAO().getNumber_of_requests(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        } else {
            cell = new PdfPCell(
                    new Paragraph("How many requests for this strain have you received in the last 6 months? ",
                            FontFactory.getFont(FontFactory.HELVETICA, 11)));
        }

        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph(
                    "Is this strain being deposited with any other institution or biotechnology company? "
                            + cleanNULLS(sd.getResiduesDAO().getDeposited_elsewhere() + "\n\n", false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        } else {
            cell = new PdfPCell(new Paragraph(
                    "Is this strain being deposited with any other institution or biotechnology company? ",
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        }
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            if (sd.getResiduesDAO().getIpr_description() != null) {
                cell = new PdfPCell(
                        new Paragraph(cleanNULLS(sd.getResiduesDAO().getDeposited_elsewhere_text(), true)));
                cell.setColspan(2);
                table.addCell(cell);
            }
        }

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph(
                    "\n\nAre other laboratories producing similar strains? "
                            + cleanNULLS(sd.getResiduesDAO().getOther_labos(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        } else {
            cell = new PdfPCell(new Paragraph("\n\nAre other laboratories producing similar strains? ",
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        }
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        String IPRights = "";
        if (sd.getResiduesDAO() != null) {
            IPRights = sd.getResiduesDAO().getIp_rights();
        } else {
            //do nothing
        }
        cell = new PdfPCell(new Paragraph(
                "Are there any intellectual property rights or patented technologies linked to this strain? "
                        + IPRights + "\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        if (sd.getResiduesDAO() != null) {
            if (sd.getResiduesDAO().getIpr_description() != null) {
                cell = new PdfPCell(
                        new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getIpr_description(), true)));
                cell.setColspan(2);
                table.addCell(cell);
            }
        }

        cell = new PdfPCell(new Paragraph(
                "\nIs the producer the exclusive owner of this strain? "
                        + cleanNULLS(sd.getExclusive_owner(), false) + "\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph("" + cleanNULLS(sd.getEx_owner_description(), true)));
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Paragraph(
                "\nDo you have permission from all owners to deposit this strain in the EMMA repository? "
                        + cleanNULLS(sd.getResiduesDAO().getOwner_permission(), false) + "\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("" + cleanNULLS(sd.getResiduesDAO().getOwner_permission_text(), true)));
        cell.setColspan(2);
        table.addCell(cell);

        String delayedRelease = "";
        if (sd.getResiduesDAO() != null) {
            delayedRelease = cleanNULLS(sd.getResiduesDAO().getDelayed_wanted(), false);
        }
        if (delayedRelease != null && delayedRelease.startsWith("yes")) {
            delayedRelease = new StringBuffer(delayedRelease).append(" (briefly explain below)\n\n").toString();
        }

        cell = new PdfPCell(new Paragraph("\nDo you require delayed release for your strain? " + delayedRelease,
                FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);
        if (delayedRelease != null && delayedRelease.startsWith("yes")) {
            cell = new PdfPCell(new Paragraph("" + sd.getResiduesDAO().getDelayed_description()));
            cell.setColspan(2);
            table.addCell(cell);
        }

        if (sd.getResiduesDAO() != null) {
            cell = new PdfPCell(new Paragraph("\nHow many mice of breeding age could you provide and when?"
                    + "\n\nEstimated date of shipping:\n\nMonth: "
                    + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_month(), false) + "\n\nYear: "
                    + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_year(), false) + "\n\nNumber of males: "
                    + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_males(), false)
                    + "\n\nNumber of females: "
                    + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_females(), false),
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        } else {
            cell = new PdfPCell(new Paragraph(
                    "\n\nHow many mice of breeding age could you provide and when?"
                            + "\n\nEstimated date of shipping:\n\nMonth: " + "\n\nYear: "
                            + "\n\nNumber of males: " + "\n\nNumber of females: ",
                    FontFactory.getFont(FontFactory.HELVETICA, 11)));
        }
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        //assocFilesADDITIONAL

        StringBuffer additionalFiles = new StringBuffer("");
        for (Iterator it = assocFilesADDITIONAL.iterator(); it.hasNext();) {
            String fileName = it.next().toString();
            additionalFiles = new StringBuffer(additionalFiles).append("\n        ").append(fileName);
        }

        cell = new PdfPCell(
                new Paragraph("\nAdditional files uploaded:", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        cell = new PdfPCell(
                new Paragraph("" + additionalFiles, FontFactory.getFont(FontFactory.HELVETICA, 11)));
        cell.setColspan(2);
        cell.setBorder(0);
        table.addCell(cell);

        //            cell = new PdfPCell(new Paragraph("\n\nWere any of the following techniques used in the construction of this mutant?\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            cell.setColspan(2);
        //            cell.setBorder(0);
        //            table.addCell(cell);
        //
        //            if (sd.getResiduesDAO() != null) {
        //                cell = new PdfPCell(new Paragraph("Cre recombinase-loxP technology? " + cleanNULLS(sd.getResiduesDAO().getCrelox(), false), FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            } else {
        //                cell = new PdfPCell(new Paragraph("Cre recombinase-loxP technology? ", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            }
        //            cell.setColspan(2);
        //            cell.setBorder(0);
        //            table.addCell(cell);
        //
        //            if (sd.getResiduesDAO() != null) {
        //                cell = new PdfPCell(new Paragraph("FLP recombinase technology? " + cleanNULLS(sd.getResiduesDAO().getFlp(), false), FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            } else {
        //                cell = new PdfPCell(new Paragraph("FLP recombinase technology? ", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            }
        //            cell.setColspan(2);
        //            cell.setBorder(0);
        //            table.addCell(cell);
        //
        //            if (sd.getResiduesDAO() != null) {
        //                cell = new PdfPCell(new Paragraph("TET-system technology? " + cleanNULLS(sd.getResiduesDAO().getTet(), false), FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            } else {
        //                cell = new PdfPCell(new Paragraph("TET-system technology? ", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            }
        //            cell.setColspan(2);
        //            cell.setBorder(0);
        //            table.addCell(cell);
        //
        //
        //            if (sd.getResiduesDAO() != null) {
        //                cell = new PdfPCell(new Paragraph("\n\nIf the submission request is accepted when could you provide "
        //                        + "10 females and 6 males (5-12 weeks old)?"
        //                        + "\nEstimated date of shipping\nMonth: " + cleanNULLS(sd.getResiduesDAO().getWhen_mice_month(), false) + "\nYear: " + cleanNULLS(sd.getResiduesDAO().getWhen_mice_year(), false), FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            } else {
        //                cell = new PdfPCell(new Paragraph("\n\nIf the submission request is accepted when could you provide "
        //                        + "10 females and 6 males (5-12 weeks old)?"
        //                        + "\nEstimated date of shipping\nMonth: \nYear:", FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            }
        //
        //            cell.setColspan(2);
        //            cell.setBorder(0);
        //            table.addCell(cell);

        //            if (sd.getResiduesDAO() != null) {
        //                cell = new PdfPCell(new Paragraph("\n\nIf unable to provide this number of mice how many could you provide and when?"
        //                        + "\nEstimated date of shipping\nMonth: " + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_month(), false)
        //                        + "\nYear: " + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_year(), false)
        //                        + "\nNumber of males: " + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_males(), false)
        //                        + "\nNumber of females: " + cleanNULLS(sd.getResiduesDAO().getWhen_how_many_females(), false),
        //                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            } else {
        //                cell = new PdfPCell(new Paragraph("\n\nIf unable to provide this number of mice how many could you provide and when?"
        //                        + "\nEstimated date of shipping\nMonth: "
        //                        + "\nYear: "
        //                        + "\nNumber of males: "
        //                        + "\nNumber of females: ",
        //                        FontFactory.getFont(FontFactory.HELVETICA, 11)));
        //            }
        //            cell.setColspan(2);
        //            cell.setBorder(0);
        //            table.addCell(cell);

        /* END OF ADDITIONAL INFORMATION */
        doc.add(table);

        doc.add(Chunk.NEWLINE);
        // Space padding underline
        underlined = new Chunk(
                "                                                                                     "
                        + "                                                                       ");
        underlined.setUnderline(new Color(0x00, 0x00, 0x00), 0.0f, 0.2f, 16.0f, 0.0f,
                PdfContentByte.LINE_CAP_BUTT);//Black line
        doc.add(underlined);

        pSubHead = new Paragraph("The terms and conditions have been accepted.\n\n",
                FontFactory.getFont(FontFactory.HELVETICA, 11));
        pSubHead.setAlignment(Element.ALIGN_CENTER);
        doc.add(pSubHead);
    }
}

From source file:org.emmanet.controllers.RequestFormController.java

License:Apache License

public String createPDF(Map model, String filePath) {
    /* I really don't like this iText library.
     * Takes so much effort to figure it all out
     * to get an acceptable pdf rendition. */

    Document doc = new Document();
    try {//  ww  w.j  a  va  2s  . c o m
        System.out.println(model.get("timestamp"));

        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(filePath));
        doc.open();
        Paragraph pHead = new Paragraph(pdfTitle + "\n\n", FontFactory.getFont(FontFactory.HELVETICA, 11));
        pHead.setAlignment(Element.ALIGN_CENTER);
        doc.add(pHead);
        doc.add(new Paragraph(pdfTitle + "\nRequest ID:" + model.get("requestID") + "\n\n",
                FontFactory.getFont(FontFactory.HELVETICA_BOLD, 20)));
        Paragraph pSubHead = new Paragraph(
                "Following data have been submitted to EMMA on " + model.get("ftimestamp"),
                FontFactory.getFont(FontFactory.HELVETICA, 11));
        pSubHead.setAlignment(Element.ALIGN_CENTER);

        doc.add(pSubHead);
        doc.add(Chunk.NEWLINE);
        // Space padding underline
        Chunk underlined = new Chunk(
                "                                                                                     "
                        + "                                                                       ");
        underlined.setUnderline(new Color(0x00, 0x00, 0x00), 0.0f, 0.2f, 16.0f, 0.0f,
                PdfContentByte.LINE_CAP_BUTT);//Black line
        doc.add(underlined);
        Font font = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 11);
        // Set table cell widths equiv. to 25% and 75%
        float[] widths = { 0.25f, 0.75f };
        PdfPTable table = new PdfPTable(widths);

        table.setWidthPercentage(100);

        PdfPCell cell = new PdfPCell(new Paragraph("Scientist\n\n", font));
        cell.setColspan(2);
        cell.setBorder(0);

        table.addCell(cell);
        table.addCell("Title");
        table.addCell("" + model.get("sci_title"));
        table.addCell("Firstname");
        table.addCell("" + model.get("sci_firstname"));
        table.addCell("Surname");
        table.addCell("" + model.get("sci_surname"));
        table.addCell("E-mail");
        table.addCell("" + model.get("sci_e_mail"));
        table.addCell("Phone");
        table.addCell("" + model.get("sci_phone"));
        table.addCell("Fax");
        table.addCell("" + model.get("sci_fax"));
        PdfPCell cellShip = new PdfPCell(new Paragraph("\nShipping Contact\n\n", font));
        cellShip.setColspan(2);
        cellShip.setBorder(0);
        table.addCell(cellShip);

        table.addCell("Title");
        table.addCell("" + model.get("con_title"));
        table.addCell("Firstname");
        table.addCell("" + model.get("con_firstname"));
        table.addCell("Surname");
        table.addCell("" + model.get("con_surname"));
        table.addCell("E-mail");
        table.addCell("" + model.get("con_e_mail"));
        table.addCell("Phone");
        table.addCell("" + model.get("con_phone"));
        table.addCell("Fax");
        table.addCell("" + model.get("con_fax"));
        table.addCell("Institution");
        table.addCell("" + model.get("con_institution"));
        table.addCell("Department");
        table.addCell("" + model.get("con_dept"));
        table.addCell("Address Line 1");
        table.addCell("" + model.get("con_addr_1"));
        table.addCell("Address Line 2");
        table.addCell("" + model.get("con_addr_2"));
        table.addCell("County/province");
        table.addCell("" + model.get("con_province"));
        table.addCell("Town");
        table.addCell("" + model.get("con_town"));
        table.addCell("Postcode");
        table.addCell("" + model.get("con_postcode"));
        table.addCell("Country");
        table.addCell("" + model.get("con_country"));

        if (!model.get("ROI").equals("1")) {
            //webrequest is not a roi so these were set above so send them to pdf
            PdfPCell cellBill = new PdfPCell(new Paragraph("\nBilling Details\n\n", font));
            cellBill.setColspan(2);
            cellBill.setBorder(0);
            table.addCell(cellBill);

            table.addCell("VAT reference");
            table.addCell("" + model.get("bil_vat"));
            table.addCell("Purchase Order Number");
            table.addCell("" + model.get("PO_ref"));
            table.addCell("Title");
            table.addCell("" + model.get("bil_title"));
            table.addCell("Firstname");
            table.addCell("" + model.get("bil_firstname"));
            table.addCell("Surname");
            table.addCell("" + model.get("bil_surname"));
            table.addCell("E-mail");
            table.addCell("" + model.get("bil_e_mail"));
            table.addCell("Phone");
            table.addCell("" + model.get("bil_phone"));
            table.addCell("Fax");
            table.addCell("" + model.get("bil_fax"));
            table.addCell("Institution");
            table.addCell("" + model.get("bil_institution"));
            table.addCell("Department");
            table.addCell("" + model.get("bil_dept"));
            table.addCell("Address Line 1");
            table.addCell("" + model.get("bil_addr_1"));
            table.addCell("Address Line 2");
            table.addCell("" + model.get("bil_addr_2"));
            table.addCell("County/province");
            table.addCell("" + model.get("bil_province"));
            table.addCell("Town");
            table.addCell("" + model.get("bil_town"));
            table.addCell("Postcode");
            table.addCell("" + model.get("bil_postcode"));
            table.addCell("Country");
            table.addCell("" + model.get("bil_country"));
        }

        PdfPCell cellStrain = new PdfPCell(new Paragraph("\nStrain Details\n\n", font));
        cellStrain.setColspan(2);
        cellStrain.setBorder(0);

        table.addCell(cellStrain);
        table.addCell("Strain ID");
        table.addCell("" + model.get("strain_id"));
        table.addCell("Strain name");
        table.addCell("" + model.get("strain_name"));
        table.addCell("Common Name(s)");
        table.addCell("" + model.get("common_name_s"));

        if (model.get("req_material") != null) {
            PdfPCell cellMaterial = new PdfPCell(new Paragraph("\nRequested Material\n\n", font));
            cellMaterial.setColspan(2);
            cellMaterial.setBorder(0);

            table.addCell(cellMaterial);
            table.addCell("Material");
            table.addCell("" + model.get("req_material"));
        }

        if (model.get("live_animals") != null) {
            table.addCell("Live Animals");
            table.addCell("Selected");
        }

        if (model.get("frozen_emb") != null) {
            table.addCell("Frozen Embryos");
            table.addCell("Selected");
        }

        if (model.get("frozen_spe") != null) {
            table.addCell("Frozen Sperm");
            table.addCell("Selected");
        }

        if (pdfConditions) {
            String text = "";
            String text1 = "";
            String text2 = "";
            String header = "";
            String header1 = "";
            String header2 = "";
            if (model.get("application_type").equals("request_only")) {
                text = new StringBuilder().append(text).append(
                        "\nYou have indicated that you have read the conditions and agree to pay the transmittal fee "
                                + "plus shipping costs.")
                        .toString();

                header = new StringBuilder().append(header).append("\nStandard request\n").toString();

            } else if (!model.get("application_type").equals("request_only")) {
                header1 = new StringBuilder().append(header1)
                        .append("\nApplication for Transnational Access Activity").toString();
                if (model.get("application_type").equals("ta_only")) {
                    text1 = new StringBuilder().append(text1).append(
                            "\nYou have indicated that you have read the conditions and have applied for free of charge TA only. "
                                    + "In the case of the TA application being rejected the request process will be terminated.")
                            .toString();
                    header1 = new StringBuilder().append(header1).append(" (TA Option B)\n").toString();
                } else {
                    text1 = new StringBuilder().append(text1).append(
                            "\nYou have indicated that you have read the conditions and have applied for free of charge TA "
                                    + "and have agreed to pay the service charge plus shipping cost if the TA application is rejected.")
                            .toString();
                    header1 = new StringBuilder().append(header1).append(" (TA Option A)\n").toString();
                }

                header2 = new StringBuilder().append(header2).append(
                        "\n\nDescription of project (1/2 page) involving requested EMMA mouse mutant resource. "
                                + "The project description will be used by the Evaluation Committee for selection of applicants:")
                        .toString();
            }

            if (!model.get("application_type").equals("request_only")) {
                //  table.addCell("" + model.get("ta_proj_desc"));
                text2 = new StringBuilder().append(text2).append("\n\n " + model.get("ta_proj_desc"))
                        .toString();
            }

            if (!model.get("application_type").equals("request_only")) {
                //we have a ta header and text to add
                PdfPCell cellConditions1 = new PdfPCell(new Paragraph(header1, font));

                cellConditions1.setColspan(2);
                cellConditions1.setBorder(0);
                table.addCell(cellConditions1);

                PdfPCell cellConditions2 = new PdfPCell(new Paragraph(text1));

                cellConditions2.setColspan(2);
                cellConditions2.setBorder(0);
                table.addCell(cellConditions2);

                PdfPCell cellConditions3 = new PdfPCell(new Paragraph(header2, font));

                cellConditions3.setColspan(2);
                cellConditions3.setBorder(0);
                table.addCell(cellConditions3);

                PdfPCell cellConditions4 = new PdfPCell(new Paragraph(text2));

                cellConditions4.setColspan(2);
                cellConditions4.setBorder(0);
                table.addCell(cellConditions4);

            } else {

                PdfPCell cellConditions = new PdfPCell(new Paragraph(header, font));
                cellConditions.setColspan(2);
                cellConditions.setBorder(0);
                table.addCell(cellConditions);

                PdfPCell cellConditionsTxt = new PdfPCell(new Paragraph(text));
                cellConditionsTxt.setColspan(2);
                cellConditionsTxt.setBorder(0);
                table.addCell(cellConditionsTxt);
            }

        }
        doc.add(table);

    } catch (DocumentException de) {
        System.err.println(de.getMessage());
    } catch (IOException e) {
        System.err.println(e.getMessage());
    }

    doc.close();
    return filePath;
}

From source file:org.gtdfree.addons.PDFExportAddOn.java

License:Open Source License

@Override
public void export(GTDModel model, ActionsCollection collection, OutputStream out,
        ExportAddOn.ExportOrder order, FileFilter ff, boolean compact) throws Exception {

    fontSelector = new FontSelector();
    fontSelectorB = new FontSelector();
    fontSelectorB2 = new FontSelector();
    fontSelectorB4 = new FontSelector();

    baseFont = fontModel.getBaseFont();/* ww  w . j  a va2s .  c om*/

    for (BaseFont bf : fontModel.getFonts()) {
        fontSelector.addFont(new Font(bf, baseFontSize));
        fontSelectorB.addFont(new Font(bf, baseFontSize, Font.BOLD));
        fontSelectorB2.addFont(new Font(bf, baseFontSize + 2, Font.BOLD));
        fontSelectorB4.addFont(new Font(bf, baseFontSize + 4, Font.BOLD));
    }

    boolean emptyH2 = false;
    boolean emptyH3 = false;

    PdfPTable actionTable = null;

    Document doc = new Document();

    if (sizeSet) {
        doc.setPageSize(pageSize);
    }
    if (marginSet) {
        doc.setMargins(marginLeft, marginRight, marginTop, marginBottom);
    }

    //System.out.println("PDF size "+doc.getPageSize().toString());
    //System.out.println("PDF m "+marginLeft+" "+marginRight+" "+marginTop+" "+marginBottom);

    @SuppressWarnings("unused")
    PdfWriter pw = PdfWriter.getInstance(doc, out);

    doc.addCreationDate();
    doc.addTitle("GTD-Free PDF");
    doc.addSubject("GTD-Free data exported as PDF");

    HeaderFooter footer = new HeaderFooter(newParagraph(), true);
    footer.setAlignment(HeaderFooter.ALIGN_CENTER);
    footer.setBorder(HeaderFooter.TOP);
    doc.setFooter(footer);

    doc.open();

    Phrase ch = newTitle("GTD-Free Data");
    Paragraph p = new Paragraph(ch);
    p.setAlignment(Paragraph.ALIGN_CENTER);

    PdfPTable t = new PdfPTable(1);
    t.setWidthPercentage(100f);
    PdfPCell c = newCell(p);
    c.setBorder(Table.BOTTOM);
    c.setBorderWidth(2.5f);
    c.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    c.setPadding(5f);
    t.addCell(c);
    doc.add(t);

    Iterator<Object> it = collection.iterator(order);

    while (it.hasNext()) {
        Object o = it.next();

        if (o == ActionsCollection.ACTIONS_WITHOUT_PROJECT) {

            if (order == ExportAddOn.ExportOrder.FoldersProjectsActions) {

                doc.add(newSubSection(ActionsCollection.ACTIONS_WITHOUT_PROJECT));

                emptyH2 = false;
                emptyH3 = true;
            } else {

                doc.add(newSection(ActionsCollection.ACTIONS_WITHOUT_PROJECT));

                emptyH2 = true;
                emptyH3 = false;
            }

            continue;
        }

        if (o instanceof Folder) {

            Folder f = (Folder) o;

            if (actionTable != null) {
                doc.add(actionTable);
                actionTable = null;
            }

            if (f.isProject()) {

                if (order == ExportAddOn.ExportOrder.ProjectsActions
                        || order == ExportAddOn.ExportOrder.ProjectsFoldersActions) {

                    if (emptyH2 || emptyH3) {
                        p = newParagraph(NONE_DOT);
                        doc.add(p);
                    }

                    doc.add(newSection(f.getName()));

                    if (compact) {
                        if (f.getDescription() != null && f.getDescription().length() > 0) {
                            p = newParagraph(f.getDescription());
                            p.setIndentationLeft(10f);
                            p.setIndentationRight(10f);
                            doc.add(p);
                        }
                    } else {
                        t = new PdfPTable(2);
                        t.setKeepTogether(true);
                        t.setSpacingBefore(5f);
                        t.setWidthPercentage(66f);
                        t.setWidths(new float[] { 0.33f, 0.66f });

                        c = newCell("ID");
                        t.addCell(c);
                        c = newCell(newStrongParagraph(String.valueOf(f.getId())));
                        t.addCell(c);
                        c = newCell("Type");
                        t.addCell(c);
                        c = newCell(newStrongParagraph("Project"));
                        t.addCell(c);
                        c = newCell("Open");
                        t.addCell(c);
                        c = newCell(newStrongParagraph(String.valueOf(f.getOpenCount())));
                        t.addCell(c);
                        c = newCell("All");
                        t.addCell(c);
                        c = newCell(newStrongParagraph(String.valueOf(f.size())));
                        t.addCell(c);
                        c = newCell("Description");
                        t.addCell(c);
                        c = newDescriptionCell(f.getDescription());
                        t.addCell(c);

                        doc.add(t);
                    }

                    emptyH2 = true;
                    emptyH3 = false;

                } else {

                    if (emptyH3) {
                        p = newParagraph(NONE_DOT);
                        doc.add(p);
                    }

                    doc.add(newSubSection("Project:" + " " + f.getName()));

                    emptyH2 = false;
                    emptyH3 = true;
                }

                continue;

            }
            if (order == ExportAddOn.ExportOrder.FoldersActions
                    || order == ExportAddOn.ExportOrder.FoldersProjectsActions) {

                if (emptyH2 || emptyH3) {
                    p = newParagraph(NONE_DOT);
                    doc.add(p);
                }

                doc.add(newSection(f.getName()));

                if (compact) {
                    if (f.getDescription() != null && f.getDescription().length() > 0) {
                        p = newParagraph(f.getDescription());
                        p.setIndentationLeft(10f);
                        p.setIndentationRight(10f);
                        doc.add(p);
                    }
                } else {

                    t = new PdfPTable(2);
                    t.setKeepTogether(true);
                    t.setSpacingBefore(5f);
                    t.setWidthPercentage(66f);
                    t.setWidths(new float[] { 0.33f, 0.66f });

                    c = newCell("ID");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(String.valueOf(f.getId())));
                    t.addCell(c);

                    String type = "";
                    if (f.isAction()) {
                        type = "Action list";
                    } else if (f.isInBucket()) {
                        type = "In-Bucket";
                    } else if (f.isQueue()) {
                        type = "Next action queue";
                    } else if (f.isReference()) {
                        type = "Reference list";
                    } else if (f.isSomeday()) {
                        type = "Someday/Maybe list";
                    } else if (f.isBuildIn()) {
                        type = "Default list";
                    }

                    c = newCell("Type");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(type));
                    t.addCell(c);
                    c = newCell("Open");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(String.valueOf(f.getOpenCount())));
                    t.addCell(c);
                    c = newCell("All");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(String.valueOf(f.size())));
                    t.addCell(c);
                    c = newCell("Description");
                    t.addCell(c);
                    c = newDescriptionCell(f.getDescription());
                    t.addCell(c);

                    doc.add(t);
                }

                emptyH2 = true;
                emptyH3 = false;

            } else {

                if (emptyH3) {
                    p = newParagraph(NONE_DOT);
                    doc.add(p);
                }

                doc.add(newSubSection("List:" + " " + f.getName()));

                emptyH2 = false;
                emptyH3 = true;

            }

            continue;

        }

        if (o instanceof Action) {
            emptyH2 = false;
            emptyH3 = false;

            Action a = (Action) o;

            if (compact) {

                if (actionTable == null) {
                    actionTable = new PdfPTable(5);
                    actionTable.setWidthPercentage(100f);
                    actionTable.setHeaderRows(1);
                    actionTable.setSpacingBefore(5f);
                    c = newHeaderCell("ID");
                    actionTable.addCell(c);
                    c = newHeaderCell("Pri.");
                    actionTable.addCell(c);
                    c = newHeaderCell("Description");
                    actionTable.addCell(c);
                    c = newHeaderCell("Reminder");
                    actionTable.addCell(c);
                    c = newHeaderCell(CHECK_RESOLVED);
                    actionTable.addCell(c);

                    float width = doc.getPageSize().getWidth() - doc.getPageSize().getBorderWidthLeft()
                            - doc.getPageSize().getBorderWidthRight();
                    int i = model.getLastActionID();
                    float step = baseFontSize - 1;
                    int steps = (int) Math.floor(Math.log10(i)) + 1;
                    // ID column
                    float col1 = 8 + steps * step;
                    // Priority column
                    float col2 = 4 + 3 * (baseFontSize + 4);
                    // Reminder column
                    float col4 = 10 + step * 11;
                    // Resolved column
                    float col5 = 8 + baseFontSize;
                    // Description column
                    float col3 = width - col1 - col2 - col4 - col5;
                    actionTable.setWidths(new float[] { col1, col2, col3, col4, col5 });

                }

                addSingleActionRow(a, actionTable);

            } else {
                addSingleActionTable(model, doc, a);
            }
        }

    }

    if (actionTable != null) {
        doc.add(actionTable);
        actionTable = null;
    }
    if (emptyH2 || emptyH3) {

        p = newParagraph(NONE_DOT);
        doc.add(p);
    }

    //w.writeCharacters("Exported: "+ApplicationHelper.toISODateTimeString(new Date()));

    doc.close();
}

From source file:org.gtdfree.addons.PDFExportAddOn.java

License:Open Source License

private PdfPCell newCell(Paragraph p) throws BadElementException {
    PdfPCell c = new PdfPCell(p);
    c.setBorder(PdfPCell.BOX);
    c.setBorderWidth(0.1f);//from w ww  .  j  a  v a 2s.  c  o  m
    c.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    c.setPaddingBottom(3f);
    c.setPaddingLeft(3f);
    c.setPaddingRight(3f);
    c.setPaddingTop(0f);
    c.setUseBorderPadding(true);
    return c;
}

From source file:org.gtdfree.addons.PDFExportAddOn.java

License:Open Source License

private Element newSection(String s) throws DocumentException, IOException {
    Phrase c = fontSelectorB2.process(s);
    Paragraph p = new Paragraph(c);

    PdfPTable t = new PdfPTable(1);
    t.setSpacingBefore(15f);//from  w  w w.  j ava2s.c o  m
    t.setSpacingAfter(7f);
    t.setWidthPercentage(100f);

    PdfPCell ce = newCell(p);
    ce.setBorder(PdfPCell.BOTTOM);
    ce.setBorderWidth(1f);
    ce.setPaddingLeft(0);
    ce.setPaddingRight(0);

    t.addCell(ce);

    return t;
}

From source file:org.gtdfree.addons.PDFExportAddOn.java

License:Open Source License

private Element newSubSection(String s) throws DocumentException, IOException {
    Phrase c = fontSelectorB.process(s);
    Paragraph p = new Paragraph(c);

    PdfPTable t = new PdfPTable(1);
    t.setSpacingBefore(7f);//from   w w w  . ja  v a2  s. co m
    t.setSpacingAfter(5f);
    t.setWidthPercentage(100f);

    PdfPCell ce = newCell(p);
    ce.setBorder(PdfPCell.BOTTOM);
    ce.setBorderWidth(0.75f);
    ce.setPaddingLeft(0);
    ce.setPaddingRight(0);

    t.addCell(ce);

    return t;
}