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

103 lines
3.5 KiB
Java
Raw Blame History

/*
* 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.RutaSecuenciaDAO;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
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 org.hibernate.criterion.Order;
/**
*
* @author Rafius
*/
@Repository("rutaSecuenciaDAO")
public class RutaSecuenciaHibernateDAO extends GenericHibernateDAO<RutaSecuencia, Integer>
implements RutaSecuenciaDAO {
@Autowired
public RutaSecuenciaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("ruta", ruta));
c.addOrder(Order.asc("numsecuencia"));
return c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
}
public int borrarSecuencias(Ruta ruta) {
Query query = this.getSession().createQuery("UPDATE RutaSecuencia SET activo = 0, fecmodif = current_timestamp(), usuarioId= :usuario where ruta = :ruta");
query.setParameter("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId());
query.setParameter("ruta", ruta);
return query.executeUpdate();
}
@Override
public boolean paradaSecuenciaValida(Ruta ruta, Parada origen, Parada destino) {
Criteria cOrigen = makeCriteria();
cOrigen.add(Restrictions.eq("activo", Boolean.TRUE));
cOrigen.add(Restrictions.eq("ruta", ruta));
cOrigen.setProjection(Projections.property("numsecuencia"));
Criteria cOrigenTramo = cOrigen.createCriteria("tramo");
cOrigenTramo.add(Restrictions.eq("origem", origen));
Short numSecOrigen = (Short) cOrigen.uniqueResult();
Criteria cDestino = makeCriteria();
cDestino.add(Restrictions.eq("activo", Boolean.TRUE));
cDestino.add(Restrictions.eq("ruta", ruta));
cDestino.setProjection(Projections.property("numsecuencia"));
Criteria cDestinoTramo = cDestino.createCriteria("tramo");
cDestinoTramo.add(Restrictions.eq("origem", destino));
Short numSecDestino = (Short) cDestino.uniqueResult();
boolean destinoFinal = false;
// destino final da ruta
if (numSecDestino == null) {
cDestino = makeCriteria();
cDestino.add(Restrictions.eq("activo", Boolean.TRUE));
cDestino.add(Restrictions.eq("ruta", ruta));
cDestino.setProjection(Projections.property("numsecuencia"));
cDestinoTramo = cDestino.createCriteria("tramo");
cDestinoTramo.add(Restrictions.eq("destino", destino));
numSecDestino = (Short) cDestino.uniqueResult();
destinoFinal = true;//quando <20> o destino final (ultima parada da secuencia), o numero da secOrigem pode ser igual ao secDestino
}
if ((numSecOrigen != null) && (numSecDestino != null)) {
return (destinoFinal)?(numSecOrigen.compareTo(numSecDestino) <= 0):(numSecOrigen.compareTo(numSecDestino) < 0);
}
return false;
}
}