/* * 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.Query; import org.hibernate.SessionFactory; 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.RutaDAO; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.Tramo; /** * * @author Rafius */ @Repository("rutaDAO") public class RutaHibernateDAO extends GenericHibernateDAO implements RutaDAO { @Autowired public RutaHibernateDAO(@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("descruta")); return c.list(); } public List buscarPorTramo(Tramo tramo) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); Criteria cTipoPuntoVenta = c.createCriteria("rutaCombinacionList"); cTipoPuntoVenta.add(Restrictions.eq("tramo", tramo)); return c.list(); } public List buscarPorRutaPorEmpresa(Ruta ruta, Empresa empresa) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("rutaId", ruta.getRutaId())); c.add(Restrictions.eq("activo", Boolean.TRUE)); Criteria cEmpresa = null; if (empresa != null) { cEmpresa = c.createCriteria("lsRutaEmpresa"); cEmpresa.add(Restrictions.eq("empresa", empresa)); cEmpresa.add(Restrictions.eq("activo", Boolean.TRUE)); } c.addOrder(Order.asc("descruta")); return c.list(); } public List buscarPorClaseServicio(ClaseServicio claseServicio) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("claseServicio", claseServicio)); c.addOrder(Order.asc("descruta")); return c.list(); } public List buscar(String nomeRuta, ClaseServicio claseServicio, Boolean nomeObrigatorio) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); // c.add(Restrictions.eq("descruta", nomeRuta)); c.add(Restrictions.eq("claseServicio", claseServicio)); c.add(Restrictions.eq("indNombreObligatorio", nomeObrigatorio)); return c.list(); } public List obtenerPorEmpresa(Empresa empresa) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.ne("rutaId", -1)); if (empresa.getEmpresaId() != -1) { c.createCriteria("lsRutaEmpresa").add(Restrictions.eq("empresa", empresa)); } c.addOrder(Order.asc("descruta")); return c.list(); } @Override public Parada buscarOrigen(Ruta ruta) { Criteria c = this.getSession().createCriteria(RutaSecuencia.class); c.add(Restrictions.eq("activo", true)); c.add(Restrictions.eq("ruta", ruta)); c.addOrder(Order.asc("numsecuencia")); c.createAlias("tramo", "tramo") .setProjection(Projections.property("tramo.origem")); c.setMaxResults(1); return (Parada) c.uniqueResult(); } @Override public Parada buscarDestino(Ruta ruta) { Criteria c = this.getSession().createCriteria(RutaSecuencia.class); c.add(Restrictions.eq("activo", true)); c.add(Restrictions.eq("ruta", ruta)); c.addOrder(Order.desc("numsecuencia")); c.createAlias("tramo", "tramo") .setProjection(Projections.property("tramo.destino")); c.setMaxResults(1); return (Parada) c.uniqueResult(); } public List buscarTodosExceto(Integer... idRuta) { Criteria c = this.makeCriteria(); for (Integer id : idRuta) { c.add(Restrictions.ne("rutaId", id)); } c.add(Restrictions.eq("activo", Boolean.TRUE)); c.addOrder(Order.asc("descruta")); return c.list(); } public List buscarTodosEstos(Integer[] idRutas) { Criteria c = this.makeCriteria(); c.add(Restrictions.in("rutaId", idRutas)); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.addOrder(Order.asc("descruta")); return c.list(); } public List buscarNumRuta(String numRuta) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", true)); c.add(Restrictions.eq("numRuta", numRuta)); return c.list(); } public List buscaRuta(String palavraPesquisaRuta) { StringBuffer hql = new StringBuffer(); hql.append(" FROM Ruta "); hql.append(" WHERE descruta like :palavraPesquisaRuta "); hql.append(" OR prefixo like :palavraPesquisaRuta "); hql.append(" OR str(numRuta) like :palavraPesquisaRuta "); Query sq = getSession().createQuery(hql.toString()); sq.setParameter("palavraPesquisaRuta", palavraPesquisaRuta + '%'); List lsRuta = sq.list(); return lsRuta; } public List buscaRutasFromOrgao(OrgaoConcedente orgao){ StringBuffer hql = new StringBuffer(); hql.append("select distinct r FROM Ruta r inner join r.rutaSecuenciaList rSeqList "); hql.append(" inner join rSeqList.lsCasetaPeaje casPeajList "); hql.append(" WHERE r.orgaoConcedente.orgaoConcedenteId = :orgaoId "); Query sq = getSession().createQuery(hql.toString()); sq.setParameter("orgaoId", orgao.getOrgaoConcedenteId()); List lsRuta = sq.list(); return lsRuta; } }