managedBeans.RelatorioGeralBean.java Source code

Java tutorial

Introduction

Here is the source code for managedBeans.RelatorioGeralBean.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 managedBeans;

import DAO.AlunoDAO;
import DAO.ExerciciosDAO;
import DAO.FichaDAO;
import DAO.ProfessorDAO;
import Entidades.Aluno;
import Entidades.Exercicios;
import Entidades.Ficha;
import Entidades.Professor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.primefaces.model.chart.Axis;
import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.BarChartModel;
import org.primefaces.model.chart.ChartSeries;
import others.pdfWriter;

/**
 *
 * @author Yuri
 */
public class RelatorioGeralBean extends BeanChecadorProfessor implements Serializable {
    private List<Aluno> listaAlunos;
    private List<Professor> listaProfessores;
    private List<Exercicios> listaExercicios;
    private List<Ficha> listaFichas;

    private BarChartModel barModel;

    public RelatorioGeralBean() {
        super();
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        Professor professor = (Professor) request.getSession().getAttribute("user");
        listaAlunos = AlunoDAO.read();
        listaProfessores = ProfessorDAO.read();
        listaFichas = FichaDAO.read();
        listaExercicios = ExerciciosDAO.read();

        createBarModel();
    }

    public BarChartModel getBarModel() {
        return barModel;
    }

    public void setBarModel(BarChartModel barModel) {
        this.barModel = barModel;
    }

    public List<Aluno> getListaAlunos() {
        return listaAlunos;
    }

    public void setListaAlunos(List<Aluno> listaAlunos) {
        this.listaAlunos = listaAlunos;
    }

    public void printToPDF() {
        System.out.println("criando relatorio geral");
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) context.getRequest();
        Professor professor = (Professor) request.getSession().getAttribute("user");
        DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");
        Date date = new Date();
        String filePath = System.getProperty("user.home") + "\\Desktop\\RelatorioGeral" + dateFormat.format(date)
                + ".pdf";
        try {
            Document document = new Document();
            PdfWriter.getInstance(document, new FileOutputStream(filePath));
            document.open();
            pdfWriter.addTitlePageProfessor(document, "Relatorio Geral", professor.getNome());
            document.add(Chunk.NEWLINE);
            pdfWriter.createTableGeral(document, listaAlunos);
            pdfWriter.addNumbers(document, listaAlunos.size(), listaProfessores.size(), listaExercicios.size(),
                    listaFichas.size());
            document.close();

            File file = new File(filePath);
            HttpServletResponse response = (HttpServletResponse) context.getResponse();

            response.reset();
            response.setHeader("Content-Disposition", "attachment;filename=RelatorioGeral.pdf");
            response.setContentLength((int) file.length());
            ServletOutputStream out = null;
            try {
                FileInputStream input = new FileInputStream(file);
                byte[] buffer = new byte[1024];
                out = response.getOutputStream();
                int i = 0;
                while ((i = input.read(buffer)) != -1) {
                    out.write(buffer);
                    out.flush();
                }
                FacesContext.getCurrentInstance().getResponseComplete();
            } catch (IOException err) {
                err.printStackTrace();
            } finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                } catch (IOException err) {
                    err.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private BarChartModel initBarModel() {
        BarChartModel model = new BarChartModel();
        model.setAnimate(true);

        ChartSeries alunos = new ChartSeries();
        alunos.setLabel("Alunos");
        alunos.set("Atual", listaAlunos.size());

        ChartSeries professores = new ChartSeries();
        professores.setLabel("Professores");
        professores.set("Atual", listaProfessores.size());

        ChartSeries exercicios = new ChartSeries();
        exercicios.setLabel("Exercicios");
        exercicios.set("Atual", listaExercicios.size());

        ChartSeries fichas = new ChartSeries();
        fichas.setLabel("Fichas");
        fichas.set("Atual", listaFichas.size());

        model.addSeries(alunos);
        model.addSeries(professores);
        model.addSeries(exercicios);
        model.addSeries(fichas);

        return model;
    }

    private int getMaxNum() {
        int maxNum = listaAlunos.size();
        if (maxNum < listaExercicios.size()) {
            maxNum = listaExercicios.size();
        }
        if (maxNum < listaFichas.size()) {
            maxNum = listaFichas.size();
        }
        if (maxNum < listaProfessores.size()) {
            maxNum = listaProfessores.size();
        }
        return maxNum;
    }

    private void createBarModel() {
        barModel = initBarModel();

        barModel.setTitle("Grfico do Relatrio");
        barModel.setLegendPosition("ne");

        Axis xAxis = barModel.getAxis(AxisType.X);

        Axis yAxis = barModel.getAxis(AxisType.Y);
        yAxis.setLabel("Valor");
        yAxis.setMin(0);
        yAxis.setMax(getMaxNum() + 5);
    }
}