180 lines
5.3 KiB
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;
|
|
}
|
|
}
|