/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ec.gob.mcds.seguridades.servicio;
import ec.gob.mcds.seguridades.comparator.EntityMenuComparator;
import ec.gob.mcds.seguridades.dao.MenuDao;
import ec.gob.mcds.seguridades.dto.EntityMenu;
import ec.gob.mcds.seguridades.model.Aplicacion;
import ec.gob.mcds.seguridades.model.Menu;
import ec.gob.mcds.seguridades.model.Rol;
import ec.gob.mcds.seguridades.model.UsuarioRol;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
/**
*
* @author ishmael
*/
@LocalBean
@Stateless
public class MenuServicio {
@EJB
private MenuDao menuDao;
/**
* método que guarda un menú.
*
* @param menu
* @throws Exception
*/
public void guardarMenu(Menu menu) throws Exception {
this.menuDao.create(menu);
}
/**
* método que actualiza un menú.
*
* @param menu
* @throws Exception
*/
public void actualizarMenu(Menu menu) throws Exception {
this.menuDao.edit(menu);
}
/**
* @see MenuDao.listarPorAplicacion(aplicacion)
* @param aplicacion
* @throws Exception
* @return List
*/
public List<Menu> listarPorAplicacion(Aplicacion aplicacion) throws Exception {
return this.menuDao.listarPorAplicacion(aplicacion);
}
/**
* @see MenuDao.listarPorMenuPadre(menu)
* @param menu
* @throws Exception
* @return List
*/
public List<Menu> listarPorMenuPadre(Menu menu) throws Exception {
return this.menuDao.listarPorMenuPadre(menu);
}
/**
* @see MenuDao.listarPorMenuPadre(menu,nodoFinal)
* @param menu
* @param nodoFinal
* @throws Exception
* @return List
*/
public List<Menu> listarPorMenuPadreNodoFinal(Menu menu, boolean nodoFinal) throws Exception {
return this.menuDao.listarPorMenuPadre(menu);
}
/**
* método que devuelve Menus procesados por lista de usuarios roles de seguridades.
*
* @param listaUsuarioRol
* @throws Exception
* @return List
*/
public List<EntityMenu> listarPorUsuarioRol(List<UsuarioRol> listaUsuarioRol) throws Exception {
List<EntityMenu> listaDatos = new ArrayList<EntityMenu>();
Long estadoUsuario = null;
Long idUsuario = null;
Long padre = null;
List<Rol> listaRoles = new ArrayList<Rol>();
for (UsuarioRol u : listaUsuarioRol) {
idUsuario = 0l;
estadoUsuario = 0l;
listaRoles.add(u.getRol());
}
List<Menu> listaAcceso = menuDao.listarPorRol(listaRoles);
for (Menu ac : listaAcceso) {
padre = ac.getPadreMenu();
listaDatos.add(new EntityMenu(ac.getMenId(), ac.getNombre(), ac.getActionPagina(), padre, estadoUsuario, idUsuario, ac.getNodoFinal(), ac.getOrden()));
}
Set<EntityMenu> listaNoRepetidos = new HashSet<EntityMenu>(listaDatos);
List<EntityMenu> listaDatosRetorno = new ArrayList<EntityMenu>(listaNoRepetidos);
Collections.sort(listaDatosRetorno, new EntityMenuComparator());
return listaDatosRetorno;
}
/**
* método que devuelve Menu por nemonico de seguridades.
*
* @param nemonico
* @return Menu
*/
public Menu obtenerPorNemonico(String nemonico) {
return menuDao.obtenerPorNemonico(nemonico);
}
}