package com.fp.frontend.controller.security; import java.util.List; import java.util.Map; import javax.faces.context.FacesContext; import org.primefaces.model.menu.DefaultMenuItem; import org.primefaces.model.menu.DefaultMenuModel; import org.primefaces.model.menu.DefaultSubMenu; import org.primefaces.model.menu.MenuModel; import org.primefaces.model.menu.Submenu; import com.fp.frontend.helper.MessageHelper; public class MaiaMenu { private MenuModel menuModel; private String maiaMenuJson; private String contextPath = ""; /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ public MaiaMenu() { try { maiaMenuJson = ""; contextPath = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath(); } catch (Exception e) { MessageHelper.setMessageError(e); } } @SuppressWarnings("unchecked") public void buildMenu(List> lmenu) throws Exception { menuModel = new DefaultMenuModel(); for (Map menu : lmenu) { String label = (String) menu.get("t"); DefaultSubMenu submenu = new DefaultSubMenu(); submenu.setLabel(label); menuModel.addElement(submenu); if (menu.get("items") instanceof Map) { this.addMenuItem(submenu, (Map) menu.get("items")); } else { this.addSubmenu(submenu, (List>) menu.get("items")); } } } @SuppressWarnings("unchecked") private void addSubmenu(Submenu submenupadre, List> lsubmenu) throws Exception { for (Map menu : lsubmenu) { Object obj = menu.get("items"); if (obj == null) { this.addMenuItem(submenupadre, menu); } else { String label = (String) menu.get("t"); DefaultSubMenu submenu = new DefaultSubMenu(); submenu.setLabel(label); submenupadre.getElements().add(submenu); this.addSubmenu(submenu, (List>) menu.get("items")); } } } @SuppressWarnings("unchecked") private void addMenuItem(Submenu submenu, Map mdata) throws Exception { String tname = (String) mdata.get("t"); String modulo = (String) mdata.get("m"); Integer transaccion = (Integer) mdata.get("tr"); Integer version = (Integer) mdata.get("v"); String pagina = (String) mdata.get("jsfp"); String autoconsulta = (String) mdata.get("a"); String url = pagina + "?" + "m=" + modulo + "&t=" + transaccion + "&v=" + version + "&autoquery=" + autoconsulta; String key = modulo + "-" + transaccion + "-" + version; String nameMenu = tname + " (" + modulo + "-" + transaccion + ")"; DefaultMenuItem menuItem = new DefaultMenuItem(); menuItem.setValue(nameMenu); menuItem.setUrl("javascript:Maiaworkspace.loadPage('" + url + "','" + nameMenu + "')"); menuItem.setIcon("ui-icon-document"); menuItem.setStyleClass("m-menuitem"); submenu.getElements().add(menuItem); maiaMenuJson = maiaMenuJson + "'" + key + "': {'url':'" + url + "','name':'" + nameMenu + "'},"; } /** * Entrega el valor de: menuModel * * @return MenuModel */ public MenuModel getMenuModel() { return menuModel; } /** * Fija el valor de: menuModel * * @param Valor a fijar en el atributo. */ public void setMenuModel(MenuModel menuModel) { this.menuModel = menuModel; } /** * Entrega el valor de: maiaMenuJson * * @return String */ public String getMaiaMenuJson() { return maiaMenuJson; } /** * Fija el valor de: maiaMenuJson * * @param maiaMenuJson Valor a fijar en el atributo */ public void setMaiaMenuJson(String maiaMenuJson) { this.maiaMenuJson = maiaMenuJson; } }