/*
* 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.Menu;
import ec.gob.mcds.seguridades.model.Rol;
import java.util.List;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.Query;
/**
*
* @author christian
*/
@LocalBean
@Stateless
public class MenuDao extends Generico<Menu> {
public MenuDao() {
super(Menu.class);
}
/**
* método que devuelve menús por aplicación
*
* @param aplicacion
* @throws Exception
* @return List
*/
public List<Menu> listarPorAplicacion(Aplicacion aplicacion) throws Exception {
String jpaQl = "SELECT m FROM Menu m"
+ " WHERE m.menu IS NULL AND m.aplicacion = :aplicacion ORDER BY m.orden";
Query query = getEntityManager().createQuery(jpaQl);
query.setParameter("aplicacion", aplicacion);
return query.getResultList();
}
/**
* método que devuelve hijos por menú
*
* @param menu
* @throws Exception
* @return List
*/
public List<Menu> listarPorMenuPadre(Menu menu) throws Exception {
String jpaQl = "SELECT m FROM Menu m"
+ " WHERE m.menu = :menu ORDER BY m.orden";
Query query = getEntityManager().createQuery(jpaQl);
query.setParameter("menu", menu);
return query.getResultList();
}
/**
* método que devuelve hijos por menú y si son nodos finales oredenados por
* el campo orden
*
* @param menu
* @param nodoFinal
* @throws Exception
* @return List
*/
public List<Menu> listarPorMenuPadreNodoFinal(Menu menu, boolean nodoFinal) throws Exception {
String jpaQl = "SELECT m FROM Menu m"
+ " WHERE m.menu = :menu AND m.nodoFinal = :nodoFinal ORDER BY m.orden";
Query query = getEntityManager().createQuery(jpaQl);
query.setParameter("menu", menu);
query.setParameter("nodoFinal", nodoFinal);
return query.getResultList();
}
/**
* método que devuelve menús por una lista de roles oredenados por el campo
* orden
*
* @param listaRol
* @throws Exception
* @return List
*/
public List<Menu> listarPorRol(List<Rol> listaRol) throws Exception {
int i = 1;
String concatena = "";
for (Rol l : listaRol) {
if (i != listaRol.size()) {
concatena = concatena.concat(l.getRolId().toString().concat(","));
} else {
concatena = concatena.concat(l.getRolId().toString() + "");
}
i++;
}
String jpaQl = "SELECT ac FROM Menu ac, RolMenu ar"
+ " WHERE ac.aplicacion = :sistema AND ac.menId = ar.menu.menId"
+ " AND ar.rol.rolId in (" + concatena + ") AND ac.estado = true"
+ " ORDER BY ac.orden";
Query query = getEntityManager().createQuery(jpaQl);
if (listaRol != null) {
query.setParameter("sistema", listaRol.get(0).getAplicacion());
} else {
query.setParameter("sistema", null);
}
return query.getResultList();
}
/**
* método que devuelve menú por nemónico
*
* @param nemonico
* @return Menu
*/
public Menu obtenerPorNemonico(String nemonico) {
try {
String jpaQl = "SELECT m FROM Menu m"
+ " WHERE m.nemonico = :nemonico";
Query query = getEntityManager().createQuery(jpaQl);
query.setParameter("nemonico", nemonico);
return (Menu) query.getSingleResult();
} catch (Exception e) {
return null;
}
}
}