Beans.Reporte_Proyectos.java Source code

Java tutorial

Introduction

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

import Entity.Estados;
import Entity.Proyectos;
import Entity.TipoProyecto;
import Entity.Usuario;
import Entity.Versiones;
import Modelo.Carreras;
import Modelo.Conecion_postgres;
import Modelo.Conecion_postgres1;
import Modelo.Estudiante;
import Modelo.ProyectosModelo;
import Modelo.R_profesor;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.primefaces.model.DefaultStreamedContent;
import util.HibernateUtil;

/**
 *
 * @author Britt
 */
@ManagedBean
@SessionScoped
public class Reporte_Proyectos {

    /**
     * Creates a new instance of prueba
     */
    JasperPrint v_jasperPrint;
    ArrayList<ProyectosModelo> Proyectos = new ArrayList();
    ArrayList<Carreras> lista_Carrera = new ArrayList();
ArrayList<String> b_ao=new ArrayList();
    ArrayList<String> peri = new ArrayList();
    ArrayList<Estados> Lista_estados = new ArrayList();
    ArrayList<TipoProyecto> Lista_Tipo = new ArrayList();
private String ao;
    private String periodo;
    private int cod_carrera;
    private int cod_estado;
    private int tipo;
    private String carrera;
    private DefaultStreamedContent download;

    public Reporte_Proyectos() {

    }

public void cargar_aos(int condi) throws ClassNotFoundException {
    b_ao.clear();
    for (int i = 2015; i < 2030; i++) {
        b_ao.add("" + i);
    }
    if (condi == 1) {
        cargar_Periodo();
        cargarCarreras();
        cargarEstados();
        cargarTipos();
    } else if (condi == 2) {
        cargar_Periodo();
        cargarCarreras();
        cargarTipos();
    }

}

    public void cargar_Periodo() {
        peri.clear();
        for (int i = 1; i <= 2; i++) {
            peri.add("" + i);
        }
    }

    public void cargarCarreras() throws ClassNotFoundException {
        lista_Carrera.clear();
        Conecion_postgres.conectar();
        Conecion_postgres.ejecuteQuery("select * from facultad");
        try {
            while (Conecion_postgres.rs.next()) {
                lista_Carrera.add(new Carreras(Conecion_postgres.rs.getInt(1), Conecion_postgres.rs.getString(2)));
            }

        } catch (Exception ex) {
            System.out.println("Error carreras " + ex.toString());
        } finally {
            Conecion_postgres.cerrarConexion();
        }

    }

    public void cargarEstados() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = session.beginTransaction();
        Lista_estados.clear();
        try {
            Lista_estados = (ArrayList) session.createQuery("from Estados").list();
            t.commit();
        } catch (Exception ex) {
            System.out.println("Error estados " + ex.toString());
        }
    }

    public void cargarTipos() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = session.beginTransaction();
        Lista_Tipo.clear();
        try {
            Lista_Tipo = (ArrayList) session.createQuery("from TipoProyecto").list();
            t.commit();
        } catch (Exception ex) {
            System.out.println("Error estados " + ex.toString());
        }
    }

    public void buscar(int condi) throws ClassNotFoundException {
        String query = "";
        ArrayList temp = null;
        temp = TraerPege_idCArrera();
        Estudiante estu = null;
        ArrayList<Proyectos> Lista_Proyectos = new ArrayList();
        ArrayList proyec = null;
        Proyectos p = null;
        Proyectos p2 = null;
        boolean r = false;
        for (int i = 0; i < temp.size(); i++) {
            estu = (Estudiante) temp.get(i);
            proyec = Traer_proyectos(estu.getPege_id(), condi);
            for (int k = 0; k < proyec.size(); k++) {
                p = (Proyectos) proyec.get(k);
                for (int j = 0; j < Lista_Proyectos.size(); j++) {
                    p2 = (Proyectos) Lista_Proyectos.get(j);
                    if (p2.getNombre().equals(p.getNombre())) {
                        r = true;
                    }
                }
                if (r != true) {
                    Lista_Proyectos.add(p);
                } else {
                    System.out.println("ya estaba");
                }
            }
            r = false;
        }
        Proyectos = pasarDatos(Lista_Proyectos, condi);
        ProyectosModelo pro = null;
        ArrayList y = null;
        Estudiante estu2 = null;
        String integrantes = "";
        for (int i = 0; i < Proyectos.size(); i++) {
            pro = (ProyectosModelo) Proyectos.get(i);
            y = recuperarDatos("" + pro.getCodigo());

            for (int k = 0; k < y.size(); k++) {
                estu2 = (Estudiante) y.get(k);
                integrantes = integrantes + estu2.getNombre() + "\n";
            }
            pro.setIntegrantes(integrantes);

            integrantes = "";
        }

        for (int i = 0; i < Proyectos.size(); i++) {
            pro = (ProyectosModelo) Proyectos.get(i);
            System.out.println("- " + Proyectos.get(i) + "\n");
        }
        FacesContext.getCurrentInstance().getExternalContext().responseReset();
    }

    public ArrayList recuperarDatos(String cod_pro) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = session.beginTransaction();
        ArrayList<Usuario> Lista_Usuarios = new ArrayList();
        ArrayList x = null;
        try {
            Lista_Usuarios = (ArrayList) session.createQuery("select distinct U from Proyectos P INNER JOIN "
                    + "P.usuarioProyectos UP INNER JOIN UP.usuarioByEstudiante U " + "where P.codigoProyecto="
                    + cod_pro).list();
            t.commit();
            x = RecuperarNombres(Lista_Usuarios);
        } catch (Exception ex) {
            System.out.println("Error recuperarDatos " + ex.toString());
        }
        return x;
    }

    public ArrayList RecuperarNombres(ArrayList x) throws ClassNotFoundException {
        Conecion_postgres.conectar();
        Usuario temp = null;
        ArrayList<Estudiante> Nombres = new ArrayList();
        String nom = "";
        try {
            for (int i = 0; i < x.size(); i++) {
                temp = (Usuario) x.get(i);
                Conecion_postgres.ejecuteQuery("select * from estudiante where pege_id=" + temp.getPegeId());
                while (Conecion_postgres.rs.next()) {
                    nom = Conecion_postgres.rs.getString(2) + " " + Conecion_postgres.rs.getString(3);

                }
                Nombres.add(new Estudiante(nom));
            }
        } catch (Exception ex) {
            System.out.println("Error RecuperarNombres " + ex.toString());
        } finally {
            Conecion_postgres.cerrarConexion();

        }
        return Nombres;
    }

    public ArrayList pasarDatos(ArrayList x, int condi) {
        ArrayList<ProyectosModelo> proyec = new ArrayList();
        Proyectos p = null;
        for (int i = 0; i < x.size(); i++) {
            p = (Proyectos) x.get(i);
            ProyectosModelo pr = new ProyectosModelo(p.getCodigoProyecto().intValue(), p.getNombre(), "",
                    p.getFechaInicio().toString(), p.getFechaFinal().toString(),
                    Integer.parseInt(p.getPorcentaje()));
            //            if (condi == 2) {
            String ruta = TraerRutaDescarga(p.getCodigoProyecto().intValue());
            pr.setRuta(ruta);
            //            }
            proyec.add(pr);

        }
        return proyec;
    }

    public String TraerRutaDescarga(int cod) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = session.beginTransaction();
        ArrayList<Versiones> v = new ArrayList();
        try {
            v = (ArrayList) session.createQuery(
                    "select V from Versiones V INNER JOIN " + " V.proyectos P where P.codigoProyecto=" + cod + "")
                    .list();
            t.commit();
        } catch (Exception ex) {
            System.out.println("Error " + ex.toString());
        }
        return v.get(v.size() - 1).getRutaArchivo();
    }

    public ArrayList Traer_proyectos(String x, int condi) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = session.beginTransaction();
        ArrayList<Proyectos> Lista_Proyectos = new ArrayList();
        try {
            if (condi == 1) {
                Lista_Proyectos = (ArrayList) session.createQuery("select distinct P from Proyectos P INNER JOIN "
                        + "P.usuarioProyectos UP INNER JOIN UP.usuarioByEstudiante U "
                        + "INNER JOIN P.estadoProyectos EP INNER JOIN EP.estados E INNER JOIN P.tipoProyecto T "
                        + "where U.pegeId=" + x + " and E.codigoEstados=" + cod_estado + " and T.codTipo=" + tipo)
                        .list();
            } else if (condi == 2) {
                if (tipo == 1) {
                    Lista_Proyectos = (ArrayList) session
                            .createQuery("select distinct P from Proyectos P INNER JOIN "
                                    + "P.usuarioProyectos UP INNER JOIN UP.usuarioByEstudiante U "
                                    + "INNER JOIN P.estadoProyectos EP INNER JOIN EP.estados E INNER JOIN P.tipoProyecto T "
                                    + "where U.pegeId=" + x + " and E.codigoEstados=" + 6 + " and T.codTipo="
                                    + tipo)
                            .list();
                } else if (tipo == 2) {
                    Lista_Proyectos = (ArrayList) session
                            .createQuery("select distinct P from Proyectos P INNER JOIN "
                                    + "P.usuarioProyectos UP INNER JOIN UP.usuarioByEstudiante U "
                                    + "INNER JOIN P.tipoProyecto T " + "where U.pegeId=" + x + " and T.codTipo="
                                    + tipo)
                            .list();
                }

            }
            t.commit();

        } catch (Exception ex) {

        }
        return Lista_Proyectos;
    }

    public void prepDownload(String date) throws Exception {
        File file = new File(date);
        InputStream input = new FileInputStream(file);
        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
        setDownload(new DefaultStreamedContent(input, externalContext.getMimeType(file.getName()), file.getName()));
    }

    public ArrayList TraerPege_idCArrera() throws ClassNotFoundException {
        Conecion_postgres.conectar();
        Conecion_postgres.ejecuteQuery("select * from estudiante where facultad='" + carrera + "'");
        ArrayList<Estudiante> lista_pege_id = new ArrayList();
        try {
            while (Conecion_postgres.rs.next()) {
                lista_pege_id.add(
                        new Estudiante(false, Conecion_postgres.rs.getString(2), Conecion_postgres.rs.getString(3),
                                Conecion_postgres.rs.getString(4), Conecion_postgres.rs.getString(1)));
            }
        } catch (Exception ex) {
            System.out.println("Error Lista pege_id " + ex.toString());
        } finally {
            Conecion_postgres.cerrarConexion();

        }
        return lista_pege_id;
    }

    //    public void report() {
    //        try {
    //            System.out.println("entro");
    //            Connection con = null;
    //            con = Conecion_postgres1.conectar();
    //            JasperPrint jasperPrint = JasperFillManager.fillReport("C:\\Users\\Britt\\Desktop\\Apsi.git\\trunk\\Apsi.Gipep\\web\\Reportes\\report1.jasper", null, con);
    //            JRExporter exporter = new JRPdfExporter();
    //            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    //            String user = System.getProperty("user.name");
    //            File f = new File("C:\\Users\\" + user + "\\Downloads\\reportePDF.pdf");
    //            exporter.setParameter(JRExporterParameter.OUTPUT_FILE, f);
    //            exporter.exportReport();
    //            Conecion_postgres1.cerrarConexion();
    //        } catch (Exception ex) {
    //            System.out.println("ERROR " + ex.toString());
    //        }
    //    }
    public R_profesor TraerInfo(String pege_id) throws ClassNotFoundException {
        Conecion_postgres.conectar();
        Conecion_postgres.ejecuteQuery("select * from profesor where pege_id=" + pege_id);
        R_profesor p = new R_profesor();

        try {
            while (Conecion_postgres.rs.next()) {
                p.setCedula(Conecion_postgres.rs.getString(5));
                p.setNombre(Conecion_postgres.rs.getString(2));
                p.setApellido(Conecion_postgres.rs.getString(3));

            }
        } catch (Exception ex) {

        } finally {
            Conecion_postgres.cerrarConexion();

        }
        return p;

    }

public void reporteHorasProfePDf() throws JRException, ClassNotFoundException {
    Report_Proyecto datasource = new Report_Proyecto();
    ProyectosModelo temp = null;
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    Transaction t = session.beginTransaction();
    System.out.println("proyectos size " + Proyectos.size());
    try {
        for (int i = 0; i < Proyectos.size(); i++) {
            temp = (ProyectosModelo) Proyectos.get(i);
            datasource.addObjecto(temp);
        }
        Map<String, Object> parametros = new HashMap<String, Object>();
        parametros.put("Ao", ao);
        parametros.put("Carrera", carrera);
        TipoProyecto tip=(TipoProyecto)session.load(TipoProyecto.class, new Long(tipo));
        parametros.put("Tipo", tip.getDescripcion());

        JasperPrint jasperPrint = JasperFillManager.fillReport("d:\\Users\\USR_Toshiba\\Desktop\\Apsi\\Apsi\\Apsi.Gipep\\web\\Reportes\\Proyectos.jasper", parametros, datasource);
        JRExporter exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        String user = System.getProperty("user.name");
        File f = new File("C:\\Users\\" + user + "\\Downloads\\reportePDFProyectos.pdf");
        exporter.setParameter(JRExporterParameter.OUTPUT_FILE, f);
        exporter.exportReport();
        t.commit();
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Descarga Pdf Exitosa", ""));

    } catch (Exception ex) {
        System.out.println("Error : " + ex.toString());
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error Pdf Descarga ", ""));

    }

}
    //

    public void reporteHorasProfeXml() throws JRException {
        System.out.println("--------- size " + Proyectos.size());
        Report_Proyecto datasource = new Report_Proyecto();
        ProyectosModelo temp = null;
        for (int i = 0; i < Proyectos.size(); i++) {
            temp = (ProyectosModelo) Proyectos.get(i);
            System.out.println("-");
            datasource.addObjecto(temp);
        }
        try {
            JasperPrint jasperPrint = JasperFillManager.fillReport(
                    "d:\\Users\\USR_Toshiba\\Desktop\\Apsi\\Apsi\\Apsi.Gipep\\web\\Reportes\\Proyectos.jasper",
                    null, datasource);
            JRExporter exporter = new JRXlsxExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            String user = System.getProperty("user.name");
            File f = new File("C:\\Users\\" + user + "\\Downloads\\reporteExcel.xlsx");
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE, f);
            exporter.exportReport();
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "Descarga Excel Exitosa", ""));

        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error Excel Descarga ", ""));

        }

    }

    public JasperPrint getV_jasperPrint() {
        return v_jasperPrint;
    }

    public void setV_jasperPrint(JasperPrint v_jasperPrint) {
        this.v_jasperPrint = v_jasperPrint;
    }

    public ArrayList<ProyectosModelo> getProyectos() {
        return Proyectos;
    }

    public void setProyectos(ArrayList<ProyectosModelo> Proyectos) {
        this.Proyectos = Proyectos;
    }

    //   
public ArrayList<String> getB_ao() {
    return b_ao;
}

public void setB_ao(ArrayList<String> b_ao) {
    this.b_ao = b_ao;
}

    public ArrayList<String> getPeri() {
        return peri;
    }

    public void setPeri(ArrayList<String> peri) {
        this.peri = peri;
    }

public String getAo() {
    return ao;
}

public void setAo(String ao) {
    this.ao = ao;
}

    public String getPeriodo() {
        return periodo;
    }

    public void setPeriodo(String periodo) {
        this.periodo = periodo;
    }

    public ArrayList<Carreras> getLista_Carrera() {
        return lista_Carrera;
    }

    public void setLista_Carrera(ArrayList<Carreras> lista_Carrera) {
        this.lista_Carrera = lista_Carrera;
    }

    public int getCod_carrera() {
        return cod_carrera;
    }

    public void setCod_carrera(int cod_carrera) {
        this.cod_carrera = cod_carrera;
    }

    public ArrayList<Estados> getLista_estados() {
        return Lista_estados;
    }

    public void setLista_estados(ArrayList<Estados> Lista_estados) {
        this.Lista_estados = Lista_estados;
    }

    public int getCod_estado() {
        return cod_estado;
    }

    public void setCod_estado(int cod_estado) {
        this.cod_estado = cod_estado;
    }

    public ArrayList<TipoProyecto> getLista_Tipo() {
        return Lista_Tipo;
    }

    public void setLista_Tipo(ArrayList<TipoProyecto> Lista_Tipo) {
        this.Lista_Tipo = Lista_Tipo;
    }

    public int getTipo() {
        return tipo;
    }

    public void setTipo(int tipo) {
        this.tipo = tipo;
    }

    public DefaultStreamedContent getDownload() {
        return download;
    }

    public void setDownload(DefaultStreamedContent download) {
        this.download = download;
    }

    public String getCarrera() {
        return carrera;
    }

    public void setCarrera(String carrera) {
        this.carrera = carrera;
    }

}