com.sisrni.dao.ProyectoDao.java Source code

Java tutorial

Introduction

Here is the source code for com.sisrni.dao.ProyectoDao.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.sisrni.dao;

import com.sisrni.dao.generic.GenericDao;
import com.sisrni.model.PersonaProyecto;
import com.sisrni.model.Proyecto;
import com.sisrni.pojo.rpt.PojoMapaInteractivo;
import com.sisrni.pojo.rpt.PojoProyectosByTipo;
import com.sisrni.pojo.rpt.RptProyectoPojo;
import com.sisrni.pojo.rpt.RptProyectosFinanciadosPojo;
import com.sisrni.pojo.rpt.RptProyectosPorPaisPojo;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.transform.Transformers;
import org.hibernate.type.DoubleType;
import org.hibernate.type.IntegerType;
import org.hibernate.type.StringType;
import org.springframework.stereotype.Repository;

/**
 *
 * @author Joao
 */
@Repository(value = "proyectoDao")
public class ProyectoDao extends GenericDao<Proyecto, Integer> {

    public List<PojoMapaInteractivo> getProjectListToCharts(List<String> paisSelected,
            List<String> tipoProyectoSelected, String desde, String hasta) {
        String wherePais = "";
        String whereTipoProyecto = "";
        String groupBy = " GROUP BY pr.ID_PAIS_COOPERANTE";
        String limite = "";
        List<String> paisesFinales = new ArrayList<String>();

        if (paisSelected.size() > 0) {
            wherePais = wherePais + " AND pa.ID_PAIS IN (" + String.join(",", paisSelected) + ")";
        } else {
            limite += " LIMIT 5";
        }

        if (tipoProyectoSelected.size() > 0) {
            whereTipoProyecto += " AND pr.ID_TIPO_PROYECTO IN (" + String.join(",", tipoProyectoSelected) + ")";
        }

        String query = "SELECT pa.ID_PAIS as idPais,pa.CODIGO_PAIS as codigoPais, pa.NOMBRE_PAIS as nombrePais, SUM(pr.MONTO_PROYECTO) as montoCooperacion,COUNT(pr.ID_PROYECTO) as cantidadProyectos\n"
                + " FROM PROYECTO pr INNER JOIN PAIS pa ON pr.ID_PAIS_COOPERANTE = pa.ID_PAIS\n"
                + " WHERE pr.ANIO_GESTION BETWEEN " + Integer.parseInt(desde) + " AND " + Integer.parseInt(hasta)
                + "\n" + wherePais + whereTipoProyecto + groupBy + limite;

        try {
            Query q = getSessionFactory().getCurrentSession().createSQLQuery(query)
                    .addScalar("idPais", new IntegerType()).addScalar("codigoPais", new StringType())
                    .addScalar("nombrePais", new StringType()).addScalar("montoCooperacion", new DoubleType())
                    .addScalar("cantidadProyectos", new IntegerType())
                    .setResultTransformer(Transformers.aliasToBean(PojoMapaInteractivo.class));

            List<PojoMapaInteractivo> listPojos = q.list();

            if (listPojos.size() > 0) {
                for (PojoMapaInteractivo pj : listPojos) {
                    paisesFinales.add(pj.idPais.toString().trim());
                }
                String qt = "SELECT tp.ID_TIPO_PROYECTO as idTipoProyecto,tp.NOMBRE_TIPO_PROYECTO as nombreTipoProyecto,count(pr.ID_PROYECTO) as cantidadProyectos FROM PROYECTO pr INNER JOIN TIPO_PROYECTO tp ON pr.ID_TIPO_PROYECTO = tp.ID_TIPO_PROYECTO\n"
                        + " WHERE pr.ANIO_GESTION BETWEEN " + Integer.parseInt(desde) + " AND "
                        + Integer.parseInt(hasta) + "\n" + "AND pr.ID_PAIS_COOPERANTE IN("
                        + String.join(",", paisesFinales) + ")" + whereTipoProyecto
                        + " GROUP BY tp.ID_TIPO_PROYECTO";

                Query rtp = getSessionFactory().getCurrentSession().createSQLQuery(qt)
                        .addScalar("idTipoProyecto", new IntegerType())
                        .addScalar("nombreTipoProyecto", new StringType())
                        .addScalar("cantidadProyectos", new IntegerType())
                        .setResultTransformer(Transformers.aliasToBean(PojoProyectosByTipo.class));

                List<PojoProyectosByTipo> listTipos = rtp.list();

                for (PojoMapaInteractivo pj : listPojos) {
                    String qp = "SELECT * FROM PROYECTO pr \n" + " WHERE pr.ANIO_GESTION BETWEEN "
                            + Integer.parseInt(desde) + " AND " + Integer.parseInt(hasta) + "\n"
                            + "AND pr.ID_PAIS_COOPERANTE=" + pj.getIdPais() + whereTipoProyecto;

                    //String qp = "from Proyect pr Where pr.idPaisCooperante='" + pj.getCodigoPais() + "' and pr.idTipoProyecto in (" + String.join(",", tipoProyectoSelected) + ") and pr.anioGestion between " + Integer.parseInt(desde) + " AND " + Integer.parseInt(hasta);
                    Query r = getSessionFactory().getCurrentSession().createSQLQuery(qp).addEntity(Proyecto.class);
                    pj.setProjectList(r.list());
                    pj.setSeries(listTipos);
                }
            }

            return listPojos;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public Proyecto getProyectoByID(Integer id) {
        try {
            Query q = getSessionFactory().getCurrentSession()
                    .createQuery("SELECT a FROM Proyecto a WHERE a.idProyecto =:id");
            q.setParameter("id", id);
            return (Proyecto) q.uniqueResult();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //metodo para cargar la tabla de gestion, todos los proyectos registrados

    public List<Proyecto> getAllProyecto() {
        try {
            Query q = getSessionFactory().getCurrentSession()
                    .createQuery("SELECT a FROM Proyecto a ORDER BY a.idProyecto DESC");
            return q.list();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public List<RptProyectoPojo> getDataProyectosGestionadosReportes() {
        String query = "select b.NOMBRE_PROYECTO nombre, b.OBJETIVO objetivo FROM proyecto b";
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query)
                .addScalar("nombre", new StringType()).addScalar("objetivo", new StringType())
                .setResultTransformer(Transformers.aliasToBean(RptProyectoPojo.class));
        return q.list();
    }

    public List<Proyecto> getProyectosDesdeHasta(Integer desde, Integer hasta) {
        String query = "select p from Proyecto p where p.anioGestion between :desde and :hasta";
        Query q = getSessionFactory().getCurrentSession().createQuery(query);
        q.setParameter("desde", desde);
        q.setParameter("hasta", hasta);
        return q.list();

    }

    public List<RptProyectosFinanciadosPojo> getDataProyectosFinanciadosReportes(Integer desde, Integer hasta) {
        String query = "SELECT p.ANIO_GESTION as anioGestion, sum(p.MONTO_PROYECTO) as suma from PROYECTO p where p.ANIO_GESTION BETWEEN \n"
                + desde + " AND " + hasta + " GROUP BY p.ANIO_GESTION \n" + " ORDER BY p.ANIO_GESTION asc ";
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query)
                .addScalar("anioGestion", new IntegerType()).addScalar("suma", new DoubleType())
                .setResultTransformer(Transformers.aliasToBean(RptProyectosFinanciadosPojo.class));
        return q.list();
    }

    public List<RptProyectosPorPaisPojo> getDataProyectosPorPais(Integer desde, Integer hasta) {
        String query = "SELECT pa.NOMBRE_PAIS as nombrePais, sum(p.MONTO_PROYECTO) as suma from PROYECTO p join PAIS pa on (p.ID_PAIS_COOPERANTE=pa.ID_PAIS) where p.ANIO_GESTION BETWEEN \n"
                + desde + " AND " + hasta + " GROUP BY pa.NOMBRE_PAIS \n" + " ORDER BY pa.NOMBRE_PAIS asc ";
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query)
                .addScalar("nombrePais", new StringType()).addScalar("suma", new DoubleType())
                .setResultTransformer(Transformers.aliasToBean(RptProyectosPorPaisPojo.class));
        return q.list();
    }

    public List<RptProyectosFinanciadosPojo> getDataProyectosTotales(Integer desde, Integer hasta) {
        String query = "SELECT p.ANIO_GESTION as anioGestion, count(p.ID_PROYECTO) as suma from PROYECTO p where p.ANIO_GESTION BETWEEN \n"
                + desde + " AND " + hasta + " GROUP BY p.ANIO_GESTION \n" + " ORDER BY p.ANIO_GESTION asc ";
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query)
                .addScalar("anioGestion", new IntegerType()).addScalar("suma", new DoubleType())
                .setResultTransformer(Transformers.aliasToBean(RptProyectosFinanciadosPojo.class));
        return q.list();
    }

    public void desvincularInterno(Integer proyectoId, Integer personaId) {
        try {
            String query = "Delete from PERSONA_PROYECTO WHERE ID_PERSONA=" + personaId + " AND ID_PROYECTO="
                    + proyectoId;
            Query q = getSessionFactory().getCurrentSession().createSQLQuery(query);
            q.executeUpdate();
        } catch (Exception e) {
        }

    }

    //metodo que retorna si la persona esta vinculada al proyecto

    public PersonaProyecto isVinculadoPersona(Integer idProyecto, Integer idPersona) {
        try {
            Query q = getSessionFactory().getCurrentSession().createQuery(
                    "SELECT pp  FROM PersonaProyecto pp WHERE pp.proyecto.idProyecto =:idproyecto AND pp.persona.idPersona =:idpersona ");
            q.setParameter("idproyecto", idProyecto);
            q.setParameter("idpersona", idPersona);
            return (PersonaProyecto) q.uniqueResult();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

    //Elimina todos los objetos de las intermedia persona de proyecto

    public void eliminarIntermediaPersona(Proyecto proyecto) {
        String query = "Delete from PERSONA_PROYECTO WHERE ID_PROYECTO=" + proyecto.getIdProyecto();
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query);
        q.executeUpdate();
    }

    //Elimina todos los objetos de las intermedia facultad de proyecto

    public void eliminarIntermediaFacultad(Proyecto proyecto) {
        String query = "Delete from FACULTAD_PROYECTO WHERE ID_PROYECTO=" + proyecto.getIdProyecto();
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query);
        q.executeUpdate();
    }

    //Elimina todos los objetos de las intermedia area de conocimiento de proyecto

    public void eliminarIntermediaArea(Proyecto proyecto) {
        String query = "Delete from PROYECTO_AREA WHERE ID_PROYECTO=" + proyecto.getIdProyecto();
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query);
        q.executeUpdate();
    }

    //Elimina todos los objetos de las intermedia organismo de proyecto

    public void eliminarIntermediaOrganismo(Proyecto proyecto) {
        String query = "Delete from PROYECTO_ORGANISMO WHERE ID_PROYECTO=" + proyecto.getIdProyecto();
        Query q = getSessionFactory().getCurrentSession().createSQLQuery(query);
        q.executeUpdate();
    }
}