diff --git a/src/com/rjconsultores/ventaboletos/dao/PerfilDAO.java b/src/com/rjconsultores/ventaboletos/dao/PerfilDAO.java index dd41d64d5..1800edd47 100644 --- a/src/com/rjconsultores/ventaboletos/dao/PerfilDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/PerfilDAO.java @@ -12,5 +12,8 @@ import java.util.List; * @author rodrigo */ public interface PerfilDAO extends GenericDAO { + public List buscar(String dscPerfil); + + public List buscaPerfilJerarquia(Perfil perfilUsuario); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PerfilHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PerfilHibernateDAO.java index 499cd6426..d42ecb573 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/PerfilHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PerfilHibernateDAO.java @@ -4,10 +4,10 @@ */ package com.rjconsultores.ventaboletos.dao.hibernate; -import com.rjconsultores.ventaboletos.dao.PerfilDAO; -import com.rjconsultores.ventaboletos.entidad.Perfil; 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; @@ -15,32 +15,58 @@ 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 { + implements PerfilDAO { - @Autowired - public PerfilHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { - setSessionFactory(factory); - } + @Autowired + public PerfilHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } - @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")); + @Override + public List buscaPerfilJerarquia(Perfil perfilUsuario) { - return c.list(); - } + PerfilJerarquia usuarioJerarquia = perfilUsuario.getIndJerarquia() == null ? PerfilJerarquia.NORMAL : PerfilJerarquia.buscar(perfilUsuario.getIndJerarquia()); - public List buscar(String dscPerfil) { + StringBuilder sb = new StringBuilder(); + sb.append(" from Perfil p "); + sb.append(" where p.activo = 1 "); - return this.findByCriteria(Restrictions.eq("descperfil", dscPerfil.trim()),Restrictions.eq("activo", Boolean.TRUE)); - - } + 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)); + + } } diff --git a/src/com/rjconsultores/ventaboletos/service/PerfilService.java b/src/com/rjconsultores/ventaboletos/service/PerfilService.java index e505c4b56..4f5b92137 100644 --- a/src/com/rjconsultores/ventaboletos/service/PerfilService.java +++ b/src/com/rjconsultores/ventaboletos/service/PerfilService.java @@ -9,20 +9,23 @@ import java.util.List; import com.rjconsultores.ventaboletos.entidad.Perfil; /** - * + * * @author rodrigo */ -public interface PerfilService{ +public interface PerfilService { public List obtenerTodos(); - public Perfil obtenerID(Integer id); + public Perfil obtenerID(Integer id); - public Perfil suscribir(Perfil entidad); + public Perfil suscribir(Perfil entidad); - public Perfil actualizacion(Perfil entidad); + public Perfil actualizacion(Perfil entidad); + + public void borrar(Perfil entidad); + + public List buscar(String dscPerfil); + + public List buscaPerfilJerarquia(Perfil perfilUsuario); - public void borrar(Perfil entidad); - - public List buscar(String dscPerfil); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/PerfilServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/PerfilServiceImpl.java index dad4d8d08..5ce6c3a3e 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/PerfilServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/PerfilServiceImpl.java @@ -15,51 +15,55 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** - * + * * @author rodrigo */ @Service("perfilService") public class PerfilServiceImpl implements PerfilService { - @Autowired - private PerfilDAO perfilDAO; + @Autowired + private PerfilDAO perfilDAO; - public List obtenerTodos() { - return perfilDAO.obtenerTodos(); - } + public List obtenerTodos() { + return perfilDAO.obtenerTodos(); + } - public Perfil obtenerID(Integer id) { - return perfilDAO.obtenerID(id); - } + public Perfil obtenerID(Integer id) { + return perfilDAO.obtenerID(id); + } - @Transactional - public Perfil suscribir(Perfil entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); + @Transactional + public Perfil suscribir(Perfil entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); - return perfilDAO.suscribir(entidad); - } + return perfilDAO.suscribir(entidad); + } - @Transactional - public Perfil actualizacion(Perfil entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); + @Transactional + public Perfil actualizacion(Perfil entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); - return perfilDAO.actualizacion(entidad); - } + return perfilDAO.actualizacion(entidad); + } - @Transactional - public void borrar(Perfil entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.FALSE); + @Transactional + public void borrar(Perfil entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.FALSE); - perfilDAO.actualizacion(entidad); - } + perfilDAO.actualizacion(entidad); + } - public List buscar(String dscPerfil) { - return perfilDAO.buscar(dscPerfil); - } + public List buscar(String dscPerfil) { + return perfilDAO.buscar(dscPerfil); + } + + public List buscaPerfilJerarquia(Perfil perfilUsuario) { + return perfilDAO.buscaPerfilJerarquia(perfilUsuario); + } } diff --git a/src/com/rjconsultores/ventaboletos/vo/segurida/PerfilJerarquia.java b/src/com/rjconsultores/ventaboletos/vo/segurida/PerfilJerarquia.java new file mode 100644 index 000000000..522f21f1b --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/vo/segurida/PerfilJerarquia.java @@ -0,0 +1,29 @@ +package com.rjconsultores.ventaboletos.vo.segurida; + +public enum PerfilJerarquia { + + NORMAL(0), ADMIN(1), JERARQUIA_2(2), JERARQUIA_3(3), JERARQUIA_4(4); + + private Integer valor; + + private PerfilJerarquia(Integer valor) { + this.valor = valor; + } + + public Integer getValor() { + return valor; + } + + public static PerfilJerarquia buscar(Integer valor) { + + if (valor == null) + return NORMAL; + + for (PerfilJerarquia jerarquia : PerfilJerarquia.values()) { + if (jerarquia.getValor().equals(valor)) { + return jerarquia; + } + } + return null; + } +}