Example usage for com.lowagie.text Image getInstance

List of usage examples for com.lowagie.text Image getInstance

Introduction

In this page you can find the example usage for com.lowagie.text Image getInstance.

Prototype

public static Image getInstance(Image image) 

Source Link

Document

gets an instance of an Image

Usage

From source file:org.dgl.imgstopdf.Main.java

public static void main(String[] args) {
    Document document = new Document();
    ArrayList<String> input;
    String output = ".\\out.pdf";
    try {/*from w  w  w . j ava  2  s  . c  o m*/
        FileOutputStream fos = new FileOutputStream(output);
        PdfWriter pdfWriter = PdfWriter.getInstance(document, fos);
        Image image;
        JFileChooser fc = new JFileChooser(".\\");
        fc.setMultiSelectionEnabled(true);
        FileNameExtensionFilter filter = new FileNameExtensionFilter("IMAGES", "jpg", "jpeg", "gif", "png",
                "bmp");
        fc.setFileFilter(filter);
        int userOption = fc.showOpenDialog(null);
        if (userOption == JFileChooser.APPROVE_OPTION) {
            input = new ArrayList<String>();
            for (File f : fc.getSelectedFiles()) {
                input.add(f.getAbsolutePath());
            }
            if (fc.getSelectedFile() != null) {
                input.add(fc.getSelectedFile().getAbsolutePath());
            }
        } else {
            return;
        }
        if (input.size() == 0) {
            return;
        }
        pdfWriter.open();
        document.open();
        for (Object fileName : input.toArray()) {
            image = Image.getInstance((String) fileName);
            float scaler = ((document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin())
                    / image.getWidth()) * 100;
            image.scalePercent(scaler);
            document.add(image);
        }
        document.close();
        pdfWriter.close();
        JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);
    } catch (Exception ex) {
        ex.printStackTrace();
        JOptionPane.showMessageDialog(null, ex.toString(), "", JOptionPane.ERROR_MESSAGE);
    }
}

From source file:org.drools.verifier.doc.DroolsDocsComponentFactory.java

License:Apache License

public void onEndPage(PdfWriter writer, Document document) {

    try {//from   ww  w  . j  av  a 2  s .  com
        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.eclipse.birt.report.engine.emitter.EmitterUtil.java

License:Open Source License

public static Image getImage(IImageContent content) {
    Image image = null;//from   ww w  .j  ava  2 s .c  om
    try {
        String uri = content.getURI();
        String mimeType = content.getMIMEType();
        String extension = content.getExtension();
        switch (content.getImageSource()) {
        case IImageContent.IMAGE_FILE:
            ResourceLocatorWrapper rl = null;
            ExecutionContext exeContext = ((ReportContent) content.getReportContent()).getExecutionContext();
            if (exeContext != null) {
                rl = exeContext.getResourceLocator();
            }
            ReportDesignHandle design = content.getReportContent().getDesign().getReportDesign();
            byte[] buffer = null;
            if (rl == null) {
                URL url = design.findResource(uri, IResourceLocator.IMAGE,
                        content.getReportContent().getReportContext() == null ? null
                                : content.getReportContent().getReportContext().getAppContext());
                buffer = getImageByteArray(url.openStream());
            } else {
                buffer = rl.findResource(design, uri, IResourceLocator.IMAGE,
                        content.getReportContent().getReportContext() == null ? null
                                : content.getReportContent().getReportContext().getAppContext());
            }

            if (buffer != null) {
                if (SvgFile.isSvg(content.getURI())) {
                    buffer = SvgFile.transSvgToArray(new ByteArrayInputStream(buffer));
                }
                image = Image.getInstance(buffer);
            }
            break;
        case IImageContent.IMAGE_NAME:
        case IImageContent.IMAGE_EXPRESSION:
            byte[] data = content.getData();
            ByteArrayInputStream in = new ByteArrayInputStream(data);
            if (SvgFile.isSvg(mimeType, uri, extension))
                data = SvgFile.transSvgToArray(in);
            in.close();
            image = Image.getInstance(data);
            break;

        case IImageContent.IMAGE_URL:
            if (SvgFile.isSvg(uri)) {
                image = Image.getInstance(SvgFile.transSvgToArray(uri));
            } else {
                image = Image.getInstance(new URL(content.getURI()));
            }

            break;
        default:
            assert (false);
        }
    } catch (Exception e) {
        logger.log(Level.SEVERE, e.getLocalizedMessage());
    }
    return image;
}

From source file:org.eclipse.birt.report.engine.emitter.pdf.PDFPage.java

License:Open Source License

protected void drawBackgroundImage(float x, float y, float width, float height, float imageWidth,
        float imageHeight, int repeat, String imageUrl, byte[] imageData, float offsetX, float offsetY)
        throws Exception {
    contentByte.saveState();//from  w w w  .  j  av a  2s  .  c o m
    clip(x, y, width, height);

    PdfTemplate image = null;
    if (imageUrl != null) {
        if (pageDevice.getImageCache().containsKey(imageUrl)) {
            image = pageDevice.getImageCache().get(imageUrl);
        }
    }
    if (image == null) {
        Image img = Image.getInstance(imageData);
        if (imageHeight == 0 || imageWidth == 0) {
            int resolutionX = img.getDpiX();
            int resolutionY = img.getDpiY();
            if (0 == resolutionX || 0 == resolutionY) {
                resolutionX = 96;
                resolutionY = 96;
            }
            imageWidth = img.getPlainWidth() / resolutionX * 72;
            imageHeight = img.getPlainHeight() / resolutionY * 72;
        }

        image = contentByte.createTemplate(imageWidth, imageHeight);
        image.addImage(img, imageWidth, 0, 0, imageHeight, 0, 0);

        if (imageUrl != null && image != null) {
            pageDevice.getImageCache().put(imageUrl, image);
        }
    }

    boolean xExtended = (repeat & BackgroundImageInfo.REPEAT_X) == BackgroundImageInfo.REPEAT_X;
    boolean yExtended = (repeat & BackgroundImageInfo.REPEAT_Y) == BackgroundImageInfo.REPEAT_Y;
    imageWidth = image.getWidth();
    imageHeight = image.getHeight();

    float originalX = offsetX;
    float originalY = offsetY;
    if (xExtended) {
        while (originalX > 0)
            originalX -= imageWidth;
    }
    if (yExtended) {
        while (originalY > 0)
            originalY -= imageHeight;
    }

    float startY = originalY;
    do {
        float startX = originalX;
        do {
            drawImage(image, x + startX, y + startY, imageWidth, imageHeight);
            startX += imageWidth;
        } while (startX < width && xExtended);
        startY += imageHeight;
    } while (startY < height && yExtended);
    contentByte.restoreState();
}

From source file:org.eclipse.birt.report.engine.emitter.pdf.PDFPage.java

License:Open Source License

protected void drawImage(String imageId, byte[] imageData, String extension, float imageX, float imageY,
        float height, float width, String helpText, Map params) throws Exception {
    // Flash//from   w w w  .j  ava2 s  . c o  m
    if (FlashFile.isFlash(null, null, extension)) {
        embedFlash(null, imageData, imageX, imageY, height, width, helpText, params);
        return;
    }

    // Cached Image
    PdfTemplate template = null;
    if (imageId != null) {
        if (pageDevice.getImageCache().containsKey(imageId)) {
            template = pageDevice.getImageCache().get(imageId);
        }
        if (template != null) {
            drawImage(template, imageX, imageY, height, width, helpText);
            return;
        }
    }

    // Not cached yet
    if (SvgFile.isSvg(null, null, extension)) {
        template = generateTemplateFromSVG(null, imageData, imageX, imageY, height, width, helpText);
    } else {
        // PNG/JPG/BMP... images:
        Image image = Image.getInstance(imageData);
        if (imageId == null) {
            // image without imageId, not able to cache.
            drawImage(image, imageX, imageY, height, width, helpText);
            return;
        }
        template = contentByte.createTemplate(width, height);
        template.addImage(image, width, 0, 0, height, 0, 0);
    }
    // Cache the image
    if (imageId != null && template != null) {
        pageDevice.getImageCache().put(imageId, template);
    }
    if (template != null) {
        drawImage(template, imageX, imageY, height, width, helpText);
    }
}

From source file:org.eclipse.birt.report.engine.layout.pdf.PDFImageLM.java

License:Open Source License

/**
 * get intrinsic dimension of image in pixels. Now only support png, bmp,
 * jpg, gif./*  www.j a va  2 s . c o m*/
 * 
 * @param in
 * @return
 * @throws IOException
 * @throws MalformedURLException
 * @throws BadElementException
 */
protected Dimension getIntrinsicDimension(IImageContent content)
        throws BadElementException, MalformedURLException, IOException {
    Image image = null;
    switch (content.getImageSource()) {
    case IImageContent.IMAGE_FILE:
        ReportDesignHandle design = content.getReportContent().getDesign().getReportDesign();
        URL url = design.findResource(content.getURI(), IResourceLocator.IMAGE,
                content.getReportContent().getReportContext() == null ? null
                        : content.getReportContent().getReportContext().getAppContext());
        InputStream in = url.openStream();
        try {
            byte[] buffer = new byte[in.available()];
            in.read(buffer);
            image = Image.getInstance(buffer);
        } catch (Exception ex) {
            logger.log(Level.WARNING, ex.getMessage(), ex);
        } finally {
            in.close();
        }
        break;
    case IImageContent.IMAGE_NAME:
    case IImageContent.IMAGE_EXPRESSION:
        image = Image.getInstance(content.getData());
        break;

    case IImageContent.IMAGE_URL:
        image = Image.getInstance(new URL(content.getURI()));
        break;
    default:
        assert (false);
    }
    if (image != null) {
        int resolution = 96;
        int contentResolution = content.getResolution();
        if (contentResolution != 0) {
            resolution = contentResolution;
        }
        return new Dimension((int) (image.getPlainWidth() * 1000 / resolution * 72),
                (int) (image.getPlainHeight() * 1000 / resolution * 72));
    }
    return null;
}

From source file:org.eclipse.birt.report.engine.nLayout.area.impl.ImageAreaLayout.java

License:Open Source License

protected void initialize() throws BirtException {
    // choose the layout manager
    reader = new ImageReader(content, context.getSupportedImageFormats());
    int result = reader.read();
    switch (result) {
    case ImageReader.RESOURCE_UNREACHABLE:
        // display the alt text or prompt object not accessible.
        layout = createAltTextLayout(ImageReader.RESOURCE_UNREACHABLE);
        break;//from www .ja va  2 s  . c om
    case ImageReader.UNSUPPORTED_OBJECTS:
        // display the alt text or prompt unsupported objects.
        layout = createAltTextLayout(ImageReader.UNSUPPORTED_OBJECTS);
        break;
    case ImageReader.OBJECT_LOADED_SUCCESSFULLY:
        //the object is accessible.
        if (reader.getType() == ImageReader.TYPE_IMAGE_OBJECT
                || reader.getType() == ImageReader.TYPE_CONVERTED_SVG_OBJECT) {
            try {
                imageObject = Image.getInstance(reader.getByteArray());
            } catch (Exception e) {
                logger.log(Level.WARNING, e.getLocalizedMessage());
            }
            // unrecognized image formats.
            if (imageObject == null) {
                layout = createAltTextLayout(ImageReader.UNSUPPORTED_OBJECTS);
                break;
            }
        }
        layout = new ConcreteImageLayout(context, parent, content, reader.getByteArray());
        break;
    }
}

From source file:org.eclipse.birt.report.engine.nLayout.area.style.BackgroundImageInfo.java

License:Open Source License

private void prepareImageByteArray() {
    if (rl == null) {
        InputStream in = null;//from w  w  w .j  a  v  a  2  s . co  m
        try {
            in = new URL(url).openStream();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int size = in.read(buffer);
            while (size != -1) {
                out.write(buffer, 0, size);
                size = in.read(buffer);
            }
            imageData = out.toByteArray();
            out.close();
        } catch (IOException ioe) {
            imageData = null;
            image = null;
            return;
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                }
            }
        }
    } else {
        try {
            imageData = rl.findResource(new URL(url));
        } catch (MalformedURLException mue) {
            imageData = null;
            image = null;
            return;
        }
    }

    try {

        image = Image.getInstance(imageData);
    } catch (Exception e) {
        try {
            imageData = SvgFile.transSvgToArray(new ByteArrayInputStream(imageData));
            image = Image.getInstance(imageData);
        } catch (Exception te) {
            imageData = null;
            image = null;
        }
    }

}

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;//from  w w  w. j  av  a 2s.co  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.endeavour.mgmt.controller.servlet.CreateProjectPlan.java

License:Open Source License

private void createReportPage(Document aDocument, TaskSeries aTaskSeries, Date aStartDate, Date aEndDate,
        String aDescription) throws Exception {

    TaskSeriesCollection theDataset = new TaskSeriesCollection();
    theDataset.add(aTaskSeries);/*  w ww. j a v  a  2s.c o m*/

    DateAxis theDateRange = new DateAxis(TIMELINE);
    theDateRange.setMinimumDate(aStartDate);
    theDateRange.setMaximumDate(aEndDate);

    JFreeChart theChart = ChartFactory.createGanttChart(aDescription, ARTIFACTS, null, theDataset, true, false,
            false);
    CategoryPlot theCategoryPlot = theChart.getCategoryPlot();
    theCategoryPlot.setRangeAxis(theDateRange);

    BufferedImage theChartImage = theChart.createBufferedImage(780, 520);
    ByteArrayOutputStream theOutputStream = new ByteArrayOutputStream();
    ImageIO.write(theChartImage, "png", theOutputStream);
    Image theDocumentImage = Image.getInstance(theOutputStream.toByteArray());
    aDocument.add(theDocumentImage);
}