/* * 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.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.PerfilDAO; import com.rjconsultores.ventaboletos.entidad.Perfil; import com.rjconsultores.ventaboletos.vo.segurida.PerfilJerarquia; /** * * @author rodrigo */ @Repository("perfilDAO") public class PerfilHibernateDAO extends GenericHibernateDAO implements PerfilDAO { @Autowired public PerfilHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } @Override public List buscaPerfilJerarquia(Perfil perfilUsuario) { PerfilJerarquia usuarioJerarquia = perfilUsuario.getIndJerarquia() == null ? PerfilJerarquia.NORMAL : PerfilJerarquia.buscar(perfilUsuario.getIndJerarquia()); StringBuilder sb = new StringBuilder(); sb.append(" from Perfil p "); sb.append(" where p.activo = 1 "); if (!usuarioJerarquia.equals(PerfilJerarquia.ADMIN)) { if (!usuarioJerarquia.equals(PerfilJerarquia.NORMAL)) { sb.append(" and (p.indJerarquia >= " + usuarioJerarquia.getValor() + " or p.indJerarquia <=" + PerfilJerarquia.NORMAL.getValor() + " or p.indJerarquia is null ) "); } else { sb.append(" and (p.indJerarquia is null or p.indJerarquia <=" + PerfilJerarquia.NORMAL.getValor() + " ) "); } } sb.append(" order by p.descperfil "); Query query = getSession().createQuery(sb.toString()); return query.list(); } @Override public List obtenerTodos() { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.not(Restrictions.eq("descperfil", "RJ"))); c.addOrder(Order.asc("descperfil")); return c.list(); } public List buscar(String dscPerfil) { return this.findByCriteria(Restrictions.eq("descperfil", dscPerfil.trim()), Restrictions.eq("activo", Boolean.TRUE)); } }