/*
* 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;
}
}
}