AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/TramoServicioHibernateDAO.java

96 lines
3.3 KiB
Java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.TramoServicioDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.Via;
/**
*
* @author Rafius
*/
@Repository("tramoServicioDAO")
public class TramoServicioHibernateDAO extends GenericHibernateDAO<TramoServicio, Integer>
implements TramoServicioDAO {
@Autowired
public TramoServicioHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
public List<TramoServicio> buscarPorTramo(Tramo tramo) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("tramo", tramo));
return c.list();
}
public List<TramoServicio> buscarPorTramo(Tramo tramo, ClaseServicio clase) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("tramo", tramo));
c.add(Restrictions.eq("claseServicio", clase));
return c.list();
}
@Override
public TramoServicio buscar(Parada origen, Parada destino, Via via, ClaseServicio clase) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
Criteria cTramo = c.createCriteria("tramo");
cTramo.add(Restrictions.eq("origem", origen));
cTramo.add(Restrictions.eq("destino", destino));
cTramo.add(Restrictions.eq("via", via));
cTramo.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("claseServicio", clase));
return (TramoServicio) c.uniqueResult();
}
@Override
public boolean existenTiemposTramosEsquema(Integer esquemaCorridaId) {
Query query = getSession().createQuery("select count(*) from EsquemaTramo ct where ct.activo = 1 and ct.esquemaCorrida.esquemacorridaId = :esquemaCorrida");
query.setParameter("esquemaCorrida", esquemaCorridaId);
Long cantTramos = HibernateFix.count(query.uniqueResult());
StringBuilder sb = new StringBuilder("");
sb.append("select count(*) ");
sb.append("from ");
sb.append("esquema_corrida ec ");
sb.append("inner join esquema_tramo et on et.esquemacorrida_id = ec.esquemacorrida_id ");
sb.append("inner join tramo_servicio ts on ts.tramo_id = et.tramo_id and ts.CLASESERVICIO_ID = ec.CLASESERVICIO_ID ");
sb.append("where ");
sb.append("et.activo = 1 ");
sb.append("and ts.activo = 1 ");
sb.append("and ec.esquemacorrida_id = :esquemaCorrida");
Query query2 = getSession().createSQLQuery(sb.toString());
query2.setParameter("esquemaCorrida", esquemaCorridaId);
Long cantTramosTiempos = HibernateFix.count(query2.uniqueResult());
return cantTramos.equals(cantTramosTiempos);
}
}