de.schneefisch.fruas.transactions.DeliveryNotePDFCreator.java Source code

Java tutorial

Introduction

Here is the source code for de.schneefisch.fruas.transactions.DeliveryNotePDFCreator.java

Source

package de.schneefisch.fruas.transactions;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import de.schneefisch.fruas.database.CustomerDAO;
import de.schneefisch.fruas.database.DeliveryNotePositionDAO;
import de.schneefisch.fruas.database.FiCustomerDAO;
import de.schneefisch.fruas.database.LicenseDAO;
import de.schneefisch.fruas.database.LocationDAO;
import de.schneefisch.fruas.database.MaintenanceDAO;
import de.schneefisch.fruas.database.ProductDAO;
import de.schneefisch.fruas.model.Customer;
import de.schneefisch.fruas.model.DeliveryNote;
import de.schneefisch.fruas.model.DeliveryNotePosition;
import de.schneefisch.fruas.model.FiCustomer;
import de.schneefisch.fruas.model.License;
import de.schneefisch.fruas.model.Location;
import de.schneefisch.fruas.model.Maintenance;
import de.schneefisch.fruas.model.Product;

public class DeliveryNotePDFCreator {

    private DeliveryNote deliveryNote;
    private Customer customer;
    private FiCustomer fiCustomer;
    private Location location;
    private List<DeliveryNotePosition> deliveryNotePositions;

    public DeliveryNotePDFCreator(DeliveryNote dn) {
        this.deliveryNote = dn;

        DeliveryNotePositionDAO dnpDAO = new DeliveryNotePositionDAO();
        LicenseDAO lDAO = new LicenseDAO();

        CustomerDAO cDAO = new CustomerDAO();
        FiCustomerDAO fDAO = new FiCustomerDAO();
        LocationDAO locDAO = new LocationDAO();

        try {
            this.deliveryNotePositions = dnpDAO.selectAllPositionsForDeliveryNote(deliveryNote.getId());
            License license = lDAO.selectLicenseById(deliveryNotePositions.get(0).getLicenseId());

            this.customer = cDAO.searchCustomerById(license.getCustomerId());
            this.fiCustomer = fDAO.selectFiCustomer(customer.getFiKuId());
            this.location = locDAO.findLocationByFiCustomerId(fiCustomer.getId());

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void createPDF() {

        String filename = "Lieferschein-" + deliveryNote.getId() + ".pdf";

        try {
            PDDocument doc = new PDDocument();
            PDPage page = new PDPage();
            doc.addPage(page);

            PDPageContentStream content = new PDPageContentStream(doc, page);

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 14);
            content.newLineAtOffset(70, 750);
            content.showText("Schneefisch GmbH");
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 13);
            content.newLineAtOffset(70, 725);
            content.showText("Nibelungenplatz 1");
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 14);
            content.newLineAtOffset(70, 700);
            content.showText("D-60318 Frankfurt am Main");
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, 640);
            content.showText(fiCustomer.getName());
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, 620);
            content.showText("Wareneingang");
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, 600);
            content.showText(location.getStreet() + " " + location.getHouseNumber());
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, 580);
            content.showText(location.getPostalCode() + " " + location.getCity());
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(300, 540);
            content.showText("Lieferschein " + deliveryNote.getId() + " fuer KN " + fiCustomer.getId());
            content.endText();

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(75, 500);
            content.showText("POS");
            content.endText();
            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(120, 500);
            content.showText("Bezeichnung");
            content.endText();

            int count = 1;
            float yoffset = 460;
            for (DeliveryNotePosition dnp : deliveryNotePositions) {
                LicenseDAO licDAO = new LicenseDAO();
                License license = licDAO.selectLicenseById(dnp.getLicenseId());
                ProductDAO pDAO = new ProductDAO();
                Product product = pDAO.searchProductById(license.getProductId());

                content.beginText();
                content.setFont(PDType1Font.HELVETICA, 12);
                content.newLineAtOffset(75, yoffset);
                content.showText(Integer.toString(count));
                content.endText();
                content.beginText();
                content.setFont(PDType1Font.HELVETICA, 12);
                content.newLineAtOffset(120, yoffset);
                content.showText(product.getName());
                content.endText();
                content.beginText();
                content.setFont(PDType1Font.HELVETICA, 12);
                content.newLineAtOffset(120, yoffset - 20);
                content.showText("Lizenz: " + license.getId() + " von " + license.getSoldDate() + " bis "
                        + license.getEndDate() + ".");
                content.endText();
                if (license.getMaintenanceId() == 0) {
                    content.beginText();
                    content.setFont(PDType1Font.HELVETICA, 12);
                    content.newLineAtOffset(120, yoffset - 40);
                    content.showText("Ohne Maintenance-Vertrag.");
                    content.endText();
                } else {
                    MaintenanceDAO mDAO = new MaintenanceDAO();
                    Maintenance maintenance = mDAO.searchMaintenanceById(license.getMaintenanceId());
                    content.beginText();
                    content.setFont(PDType1Font.HELVETICA, 12);
                    content.newLineAtOffset(120, yoffset - 40);
                    content.showText("Mit " + maintenance.getInfo() + " als Maintenance-Vertrag.");
                    content.endText();
                }
                count++;
                yoffset -= 100;
            }

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, yoffset);
            content.showText("Rechnungslegung erfolgt separat.");
            content.endText();
            yoffset -= 20;

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, yoffset);
            content.showText("Das Produkt bleibt bis zur vollstndigen Bezahlung unser Eigentum.");
            content.endText();
            yoffset -= 20;

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, yoffset);
            content.showText("Mit freundlichen Gruessen");
            content.endText();
            yoffset -= 20;

            content.beginText();
            content.setFont(PDType1Font.HELVETICA, 12);
            content.newLineAtOffset(70, yoffset);
            content.showText("Schneefisch GmbH");
            content.endText();
            content.close();

            doc.save(filename);
            doc.close();
            System.out.println(filename + " erstellt in: " + System.getProperty("user.dir"));
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}