com.multixsoft.hospitapp.utilities.ReportGenerator.java Source code

Java tutorial

Introduction

Here is the source code for com.multixsoft.hospitapp.utilities.ReportGenerator.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.multixsoft.hospitapp.utilities;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import com.multixsoft.hospitapp.entities.Report;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.util.Calendar;

/**
 *
 * @author Yonathan Alexander Martnez Padilla
 */
public class ReportGenerator {
    private String pathPDF = "";
    private Document reporte;
    private DateFormat formatter = DateFormat.getDateInstance(DateFormat.MEDIUM);

    /**
     * Constructor de la clase ReportGenerator
     * @param path representa la ruta donde se guardara el reporte generado
     */
    public ReportGenerator(String path) {
        pathPDF = path;
    }

    public void setPath(String path) {
        pathPDF = path;
    }

    /**
     * Metodo que crea el reporte, lo inicializa y manda llamar a un metodo que lo llene de informacin
     * @param r representa al reporte que ser generado
     * @return una variable booleana que indica si el reporte se pudo crear con xito o no
     */
    public boolean createReport(Report r) {
        boolean resultado = false;
        try {
            reporte = new Document();
            PdfWriter.getInstance(reporte, new FileOutputStream(pathPDF));
            resultado = addInformation(r.getIdAppointment().getPatientNss().getFirstName(),
                    r.getIdAppointment().getPatientNss().getLastName(),
                    r.getIdAppointment().getDoctorUsername().getFirstName(), r.getIdAppointment().getDate(),
                    r.getDescription(), r.getMedicine(), r.getIndications());
        } catch (FileNotFoundException fnfe) {
            fnfe.printStackTrace();
        } catch (DocumentException de) {
            de.printStackTrace();
        }
        return resultado;
    }

    /**
     * Este metodo aade la informacin al reporte que se generar
     * @param firstName contiene el nombre del paciente de la cita del reporte
     * @param lastName contiene el apellido del paciente de la cita del reporte
     * @param username contiene el nombre del doctor de la cita del reporte
     * @param date contiene la fecha de la cita del reporte
     * @param description contiene la descripcin de la cita del reporte
     * @param medicine contiene los medicamentos de la cita del reporte
     * @param indications contiene las indicaciones de la cita del reporte
     * @return 
     */
    private boolean addInformation(String firstName, String lastName, String username, Date date,
            String description, String medicine, String indications) {
        boolean resultado = false;
        Paragraph parrafo;
        try {
            reporte.open();
            parrafo = new Paragraph("REPORTE DE CITA");
            parrafo.setAlignment(parrafo.ALIGN_CENTER);
            reporte.add(parrafo);
            reporte.addProducer();
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph("Fecha de consulta: " + obtainFormatedDate(date));
            parrafo.setAlignment(parrafo.ALIGN_LEFT);
            reporte.add(parrafo);
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph("Doctor: " + username);
            parrafo.setAlignment(parrafo.ALIGN_LEFT);
            reporte.add(parrafo);
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph("Paciente: " + firstName + " " + lastName);
            parrafo.setAlignment(parrafo.ALIGN_LEFT);
            reporte.add(parrafo);
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph("Descripcin: " + description);
            parrafo.setAlignment(parrafo.ALIGN_LEFT);
            reporte.add(parrafo);
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph("Medicina: " + medicine);
            parrafo.setAlignment(parrafo.ALIGN_LEFT);
            reporte.add(parrafo);
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph("Indicaciones: " + indications);
            reporte.add(parrafo);
            parrafo = new Paragraph(" ");
            reporte.add(parrafo);
            parrafo = new Paragraph(
                    "Generado por HospitApp el " + formatter.format(Calendar.getInstance().getTime()) + " a las "
                            + Calendar.getInstance().getTime().getHours() + ":"
                            + Calendar.getInstance().getTime().getMinutes());
            reporte.add(parrafo);
            reporte.close();
            resultado = true;
        } catch (DocumentException de) {
            de.printStackTrace();
        }
        return resultado;
    }

    /**
     * Est metodo formatea una variable de tipo Date a un String descrito en el SDS
     * @param date contiene la fecha a formatear
     * @return un String con la fecha ya formateada
     */
    private String obtainFormatedDate(Date date) {
        String day = "";
        String month = "";
        if (date.getDia() <= 9) {
            day = "0" + date.getDia();
        } else {
            day = date.getDia() + "";
        }
        if (date.getMes() <= 9) {
            month = "0" + date.getMes();
        } else {
            month = date.getMes() + "";
        }
        return day + "/" + month + "/" + date.getYear();
    }
}