Java tutorial
/* * 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 simtra.simtraadmin.dao; import java.util.Date; import java.util.List; import org.hibernate.SQLQuery; import simtra.simtraadmin.modelo.Reporte; /** * * @author Usuario */ public class ReporteDao extends SimtraDao { public ReporteDao() { super(); secuencia = "seq_repId"; } public Reporte crear(Reporte reporte) { sesionActual(); if (reporte.getRepId() == null) { reporte.setRepId(getNumeroSecuencia()); } sesion.save(reporte); return reporte; } public void eliminar(Reporte reporte) { sesionActual(); sesion.delete(reporte); } public void actualizar(Reporte reporte) { sesionActual(); sesion.update(reporte); } public Reporte buscar(Integer id) { sesionActual(); Reporte objeto = (Reporte) sesion.get("simtra.simtraadmin.modelo.Reporte", id); return objeto; } public List<Reporte> listar() { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT * "); sql.append("FROM reporte "); SQLQuery query = sesion.createSQLQuery(sql.toString()).addEntity(Reporte.class); List<Reporte> objeto = (List<Reporte>) query.list(); return objeto; } public List<Reporte> listarReporteIncidencia(String fechaActual) { sesionActual(); StringBuilder sql = new StringBuilder(); String nombreIncidencia = "Delito, Emergencia y Trafico"; sql.append("SELECT reporte.* "); sql.append("FROM reporte, incidencia "); sql.append("WHERE reporte.incId = incidencia.incId "); sql.append("AND to_char(reporte.repFecha,'dd/MM/yyyy') = :fechaActual "); sql.append("AND incidencia.incNombre = :nombreIncidencia "); sql.append("ORDER BY reporte.repFecha DESC"); SQLQuery query = sesion.createSQLQuery(sql.toString()).addEntity(Reporte.class); query.setString("fechaActual", fechaActual); query.setString("nombreIncidencia", nombreIncidencia); List<Reporte> objeto = (List<Reporte>) query.list(); return objeto; } public Reporte buscarPorIncidencia(Integer idIncidencia) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT reporte.* "); sql.append("FROM reporte, incidencia "); sql.append("WHERE reporte.incId = incidencia.incId "); sql.append("AND reporte.incId = :idIncidencia "); SQLQuery query = sesion.createSQLQuery(sql.toString()).addEntity(Reporte.class); query.setInteger("idIncidencia", idIncidencia); Reporte objeto = (Reporte) query.uniqueResult(); return objeto; } public List<String> delitosMasComunes() { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') "); sql.append("GROUP BY incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> emergenciasMasComunes() { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append( "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') "); sql.append("GROUP BY incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> delitosPorRuta(Integer idRuta) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') "); sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%') "); sql.append("GROUP BY incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setInteger("idRuta", idRuta); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> emergenciasPorRuta(Integer idRuta) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append( "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') "); sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%') "); sql.append("GROUP BY incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setInteger("idRuta", idRuta); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> delitosPorFecha(Date fechaInicio, Date fechaFin) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append( "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') "); sql.append("AND reporte.repfecha between :fechaInicio and :fechaFin "); sql.append("GROUP BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') "); sql.append( "ORDER BY incidencia.incTipo,COUNT(incidencia.incTipo) DESC,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setDate("fechaInicio", fechaInicio); query.setDate("fechaFin", fechaFin); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> emergenciasPorFecha(Date fechaInicio, Date fechaFin) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append( "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append( "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') "); sql.append("AND reporte.repfecha between :fechaInicio and :fechaFin "); sql.append("GROUP BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') "); sql.append( "ORDER BY incidencia.incTipo,COUNT(incidencia.incTipo) DESC,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setDate("fechaInicio", fechaInicio); query.setDate("fechaFin", fechaFin); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> delitosPorRutaFecha(Integer idRuta, Date fechaInicio, Date fechaFin) { sesionActual(); System.out.println(idRuta); StringBuilder sql = new StringBuilder(); sql.append( "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') "); sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%')"); sql.append("AND reporte.repfecha between :fechaInicio AND :fechaFin "); sql.append("GROUP BY incidencia.incTipo, TO_CHAR(reporte.repFecha,'yyyy-mm-dd') "); sql.append( "ORDER BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd'), COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setString("idRuta", idRuta.toString()); query.setDate("fechaInicio", fechaInicio); query.setDate("fechaFin", fechaFin); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> emergenciasPorRutaFecha(Integer idRuta, Date fechaInicio, Date fechaFin) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append( "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append( "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') "); sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%') "); sql.append("AND reporte.repfecha between :fechaInicio AND :fechaFin "); sql.append("GROUP BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') "); sql.append( "ORDER incidencia.incTipo,BY TO_CHAR(reporte.repFecha,'yyyy-mm-dd'),COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setInteger("idRuta", idRuta); query.setDate("fechaInicio", fechaInicio); query.setDate("fechaFin", fechaFin); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> fallasMasComunes() { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) "); sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("WHERE incidencia.incNombre = 'Falla o Desperfecto' "); sql.append("GROUP BY incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> fallasMasComunesPorUnidad(Integer idUnidad) { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',unidad.uniId) "); sql.append("FROM incidencia "); sql.append("INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("INNER JOIN servicio ON servicio.serId = reporte.serId "); sql.append("INNER JOIN unidad ON servicio.uniId = unidad.uniId "); sql.append("WHERE incidencia.incNombre = 'Falla o Desperfecto' "); sql.append("AND unidad.uniId = :idUnidad "); sql.append("GROUP BY incidencia.incTipo,unidad.uniId "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); query.setInteger("idUnidad", idUnidad); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> unidadesConMasDelitos() { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',unidad.uniId) "); sql.append("FROM incidencia "); sql.append("INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("INNER JOIN servicio ON servicio.serId = reporte.serId "); sql.append("INNER JOIN unidad ON servicio.uniId = unidad.uniId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') "); sql.append("GROUP BY unidad.uniId, incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); List<String> objeto = (List<String>) query.list(); return objeto; } public List<String> unidadesConMasEmergencias() { sesionActual(); StringBuilder sql = new StringBuilder(); sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',unidad.uniId) "); sql.append("FROM incidencia "); sql.append("INNER JOIN reporte ON incidencia.incId = reporte.incId "); sql.append("INNER JOIN servicio ON servicio.serId = reporte.serId "); sql.append("INNER JOIN unidad ON servicio.uniId = unidad.uniId "); sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' "); sql.append( "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') "); sql.append("GROUP BY unidad.uniId, incidencia.incTipo "); sql.append("ORDER BY COUNT(incidencia.incTipo) DESC "); SQLQuery query = sesion.createSQLQuery(sql.toString()); List<String> objeto = (List<String>) query.list(); return objeto; } }