/* * 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 implements TramoServicioDAO { @Autowired public TramoServicioHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } public List 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 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); } }