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

96 lines
3.1 KiB
Java

/*
* 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<TramoTiempo, Integer> implements TramoTiempoDAO {
@Autowired
public TramoTiempoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@Override
public List<TramoTiempo> obtenerTodos() {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
public List<TramoTiempo> 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<TramoTiempo> 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<TramoTiempo> 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();
}
}