/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.rjconsultores.ventaboletos.dao.hibernate; import com.rjconsultores.ventaboletos.dao.TramoTiempoDAO; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.TramoTiempo; import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import java.util.Calendar; import java.util.Date; import java.util.List; import org.hibernate.Criteria; 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; /** * * @author Administrador */ @Repository("tramoTiempoDAO") public class TramoTiempoHibernateDAO extends GenericHibernateDAO implements TramoTiempoDAO { @Autowired public TramoTiempoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } @Override public List obtenerTodos() { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); return c.list(); } 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 List buscar(Tramo tramo, ClaseServicio clase, Date horaIni, Date horaFin) { Criteria c = this.makeCriteria(); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("tramo", tramo)); c.add(Restrictions.eq("claseServicio", clase)); Calendar tmpIni = Calendar.getInstance(); tmpIni.setTime(horaIni); Calendar tmpFin = Calendar.getInstance(); tmpFin.setTime(horaFin); Calendar fecInicio = DateUtil.getFecInicio(); fecInicio.set(Calendar.HOUR_OF_DAY, tmpIni.get(Calendar.HOUR_OF_DAY)); fecInicio.set(Calendar.MINUTE, tmpIni.get(Calendar.MINUTE)); Calendar fecFin = DateUtil.getFecInicio(); fecFin.set(Calendar.HOUR_OF_DAY, tmpFin.get(Calendar.HOUR_OF_DAY)); fecFin.set(Calendar.MINUTE, tmpFin.get(Calendar.MINUTE)); if (fecFin.compareTo(fecInicio) < 0){// se a data fin é menor que a data inicio (considerando a hora), é porque é no dia seguinte. Ex.: Intervalo 23:00 e 00:00 fecFin.add(Calendar.DATE, 1); } c.add(Restrictions.ge("horafin",fecInicio.getTime())); c.add(Restrictions.le("horainicio",fecFin.getTime())); return c.list(); } }