package org.molgenis.ui; import com.google.common.collect.Lists; import org.molgenis.security.core.MolgenisPermissionService; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @deprecated use {@link org.molgenis.ui.menu.MenuItemToMolgenisUiMenuAdapter} instead */ @Deprecated public class XmlMolgenisUiMenu implements MolgenisUiMenu { private final MenuType menuType; private final MolgenisUiMenu parentMenu; private final MolgenisPermissionService molgenisPermissionService; public XmlMolgenisUiMenu(MenuType menuType, MolgenisPermissionService molgenisPermissionService) { this(menuType, null, molgenisPermissionService); } public XmlMolgenisUiMenu(MenuType menuType, MolgenisUiMenu parentMenu, MolgenisPermissionService molgenisPermissionService) { if (menuType == null) throw new IllegalArgumentException("menu type is null"); if (molgenisPermissionService == null) throw new IllegalArgumentException("MolgenisPermissionService is null"); this.menuType = menuType; this.parentMenu = parentMenu; this.molgenisPermissionService = molgenisPermissionService; } @Override public String getId() { return menuType.getName(); } @Override public String getName() { String label = menuType.getLabel(); return label != null ? label : getId(); } @Override public String getUrl() { throw new UnsupportedOperationException(); } @Override public MolgenisUiMenuItemType getType() { return MolgenisUiMenuItemType.MENU; } @Override public boolean isAuthorized() { for (Object menuItem : menuType.getMenuOrPlugin()) { MolgenisUiMenuItem pluginMenuItem = toMenuItem(menuItem); if (pluginMenuItem.isAuthorized()) return true; } return false; } @Override public List<MolgenisUiMenuItem> getItems() { List<MolgenisUiMenuItem> pluginMenuItems = new ArrayList<MolgenisUiMenuItem>(); for (Object menuItem : menuType.getMenuOrPlugin()) { MolgenisUiMenuItem pluginMenuItem = toMenuItem(menuItem); if (pluginMenuItem.isAuthorized()) pluginMenuItems.add(pluginMenuItem); } return pluginMenuItems; } @Override public boolean containsItem(String itemId) { for (MolgenisUiMenuItem molgenisUiMenuItem : getItems()) { if (molgenisUiMenuItem.getId().equals(itemId)) return true; } return false; } @Override public MolgenisUiMenuItem getActiveItem() { MolgenisUiMenuItem activeMenuItem = null; for (Object menuItem : menuType.getMenuOrPlugin()) { MolgenisUiMenuItem pluginMenuItem = toMenuItem(menuItem); if (pluginMenuItem.getType() != MolgenisUiMenuItemType.MENU && pluginMenuItem.isAuthorized()) { activeMenuItem = pluginMenuItem; break; } } return activeMenuItem; } @Override public MolgenisUiMenu getParentMenu() { return parentMenu; } @Override public List<MolgenisUiMenu> getBreadcrumb() { if (parentMenu == null) return Collections.<MolgenisUiMenu>singletonList(this); List<MolgenisUiMenu> breadcrumb = new ArrayList<MolgenisUiMenu>(); for (MolgenisUiMenu menu = this; menu != null; menu = menu.getParentMenu()) breadcrumb.add(menu); return Lists.reverse(breadcrumb); } private MolgenisUiMenuItem toMenuItem(Object menuItem) { if (menuItem instanceof MenuType) { return new XmlMolgenisUiMenu((MenuType) menuItem, this, molgenisPermissionService); } else if (menuItem instanceof PluginType) { return new XmlMolgenisUiPlugin((PluginType) menuItem, this, molgenisPermissionService); } else throw new RuntimeException("unknown menu item type"); } }