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

180 lines
5.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.SessionFactory;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
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 com.rjconsultores.ventaboletos.dao.ParadaDAO;
import com.rjconsultores.ventaboletos.entidad.AgrupamentoParada;
import com.rjconsultores.ventaboletos.entidad.Ciudad;
import com.rjconsultores.ventaboletos.entidad.Nodo;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.RegionMetropolitana;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.TipoParada;
/**
*
* @author Administrador
*/
@SuppressWarnings("unchecked")
@Repository("paradaDAO")
public class ParadaHibernateDAO extends GenericHibernateDAO<Parada, Integer> implements ParadaDAO {
@Autowired
public ParadaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@Override
public List<Parada> obtenerTodos() {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.addOrder(Order.asc("descparada"));
return c.list();
}
public List<Parada> buscar(String descparada, String cveparada, Ciudad ciudad, TipoParada tipoParada, Nodo nodo) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("descparada", descparada));
c.add(Restrictions.eq("cveparada", cveparada));
c.add(Restrictions.eq("ciudad", ciudad));
c.add(Restrictions.eq("tipoParada", tipoParada));
c.add(Restrictions.eq("nodo", nodo));
return c.list();
}
public List<Parada> buscar(String descparada) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("descparada", descparada));
return c.list();
}
public List<Parada> buscarCVE(String cveparada) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("cveparada", cveparada));
return c.list();
}
public List<Parada> buscaLike(String descparada) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.like("descparada", descparada, MatchMode.START));
c.addOrder(Order.asc("descparada"));
return c.list();
}
public Long count(TipoParada tipoParada) {
Criteria c = this.makeCriteria();
c.add(Restrictions.eq("tipoParada", tipoParada));
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.setProjection(Projections.rowCount());
return HibernateFix.count(c.list());
}
@Override
public List<Parada> buscar(Integer codAntt) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("codantt", codAntt));
return c.list();
}
@Override
public List<Parada> obtenerOrigenPorRuta(Ruta ruta) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.createAlias("tramoOrigemList", "tramo");
c.createAlias("tramo.rutaCombinacionList", "rutaCombinacion");
c.createAlias("rutaCombinacion.ruta", "ruta");
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("ruta.rutaId", ruta.getRutaId()));
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
return c.list();
}
@Override
public List<Parada> obterPossiveisDestinos(Parada origem) {
if (origem == null) {
return null;
}
String sql = "SELECT DISTINCT "
+ "d "
+ "FROM Tramo t "
+ "JOIN t.destino d "
+ "WHERE t.origem = :origem "
+ "ORDER BY d.descparada";
return getSession().createQuery(sql).setEntity("origem", origem).list();
}
public List<Parada> buscaParadaRegionMetropolitana(RegionMetropolitana regionMetropolitana) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("regionMetropolitana.regionMetropolitanaId", regionMetropolitana.getRegionMetropolitanaId()));
return c.list();
}
@Override
public List<Parada> buscarListaPorIds(List<Integer> paradaIds) {
Criteria c = this.makeCriteria();
c.add(Restrictions.in("paradaId", paradaIds));
c.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
@Override
public Parada buscarPorId(Integer paradaId) {
Criteria c = this.makeCriteria();
c.add(Restrictions.eq("paradaId", paradaId));
c.add(Restrictions.eq("activo", Boolean.TRUE));
return (Parada) c.uniqueResult();
}
@Override
public List<Parada> buscarPorAgrupamentoParadaId(AgrupamentoParada agrupamentoParada) {
if(agrupamentoParada !=null && agrupamentoParada.getAgrupamentoParadaId() !=null) {
Criteria c = this.makeCriteria();
c.add(Restrictions.eq("agrupamentoParada", agrupamentoParada));
c.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
return null;
}
}