package org.molgenis.ui.menu; import org.molgenis.ui.MolgenisUi; import org.molgenis.ui.MolgenisUiMenu; import org.springframework.beans.factory.annotation.Autowired; import static java.util.Objects.requireNonNull; public class MenuMolgenisUi implements MolgenisUi { private final MenuReaderService menuReaderService; @Autowired public MenuMolgenisUi(MenuReaderService menuReaderService) { this.menuReaderService = requireNonNull(menuReaderService); } @Override public MolgenisUiMenu getMenu() { Menu menu = menuReaderService.getMenu(); return new MenuItemToMolgenisUiMenuAdapter(menu, menu); } @Override public MolgenisUiMenu getMenu(String menuId) { Menu rootMenu = menuReaderService.getMenu(); MenuItem menu = findMenu(rootMenu, menuId); return menu != null ? new MenuItemToMolgenisUiMenuAdapter(menu, rootMenu) : null; } private MenuItem findMenu(MenuItem menu, String menuId) { if (menuId.equals(menu.getId())) return menu; for (MenuItem menuItem : menu.getItems()) { if (menuItem.getType() == MenuItemType.MENU) { MenuItem submenu = findMenu(menuItem, menuId); if (submenu != null) { return submenu; } } } return null; } }