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