/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ec.gob.mcds.seguridades.dao; import ec.gob.mcds.seguridades.generico.Generico; import ec.gob.mcds.seguridades.model.Aplicacion; import ec.gob.mcds.seguridades.model.Rol; import ec.gob.mcds.seguridades.model.Usuario; import ec.gob.mcds.seguridades.model.UsuarioRol; import java.util.List; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.NoResultException; import javax.persistence.Query; /** * * @author christian */ @LocalBean @Stateless public class UsuarioRolDao extends Generico<UsuarioRol> { public UsuarioRolDao() { super(UsuarioRol.class); } /** * método que devuelve roles por usuario y aplicación de seguridades. * * @param usuario * @param aplicacion * @throws Exception * @return List */ public List<Rol> listarPorUsuarioPorAplicacion(Usuario usuario, Aplicacion aplicacion) throws Exception { String jpaQl = "SELECT u.rol FROM UsuarioRol u" + " WHERE u.usuario = :usuario AND u.rol.aplicacion = :aplicacion"; Query query = getEntityManager().createQuery(jpaQl); query.setParameter("usuario", usuario); query.setParameter("aplicacion", aplicacion); return query.getResultList(); } /** * método que elimina usuariosRoles por usuario y aplicacion de seguridades. * * @param usuario * @param aplicacion * @throws Exception */ public void eliminarPorUsuario(Usuario usuario, Aplicacion aplicacion) throws Exception { String sql = "DELETE FROM sch_seguridades.usuario_rol" + " WHERE usu_id = " + usuario.getUsuId() + " AND rol_id IN (SELECT rol_id FROM sch_seguridades.rol" + " WHERE apl_id = " + aplicacion.getAplId() + ")"; Query query = getEntityManager().createNativeQuery(sql); query.executeUpdate(); } /** * método que devuelve usuariosRoles por usuario y nemonico sistema de * seguridades. * * @param usuario * @param sistema * @throws Exception * @return List */ public List<UsuarioRol> listarPorUsuario(Usuario usuario, String sistema) throws Exception { String jpaQl = "SELECT u FROM UsuarioRol u" + " WHERE u.usuario = :usuario AND u.usuario.estado = true" + " AND u.rol.aplicacion.nemonico = :sistema"; Query query = getEntityManager().createQuery(jpaQl); query.setParameter("usuario", usuario); query.setParameter("sistema", sistema); return query.getResultList(); } public UsuarioRol listarPorUsuarioRol(UsuarioRol usu) throws Exception { try { String jpaQl = "SELECT u FROM UsuarioRol u" + " WHERE u.usuario.login =:login" + " AND u.rol.nombre =:rol"; Query query = getEntityManager().createQuery(jpaQl); query.setParameter("login", usu.getUsuario().getLogin()); query.setParameter("rol", usu.getRol().getNombre()); return (UsuarioRol) query.getSingleResult(); } catch (NoResultException e) { return null; } } }