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