/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations under * the License. * * The Original Code is OpenELIS code. * * Copyright (C) ITECH, University of Washington, Seattle WA. All Rights Reserved. */ package us.mn.state.health.lims.common.services; import us.mn.state.health.lims.menu.dao.MenuDAO; import us.mn.state.health.lims.menu.daoimpl.MenuDAOImpl; import us.mn.state.health.lims.menu.util.MenuUtil; import us.mn.state.health.lims.menu.valueholder.Menu; import java.util.HashMap; import java.util.Map; public class PluginMenuService { private final Map<String, Menu > elementToMenuMap = new HashMap<String, Menu>(); private final Map<String, Map<String, String>> menuLabelMap = new HashMap<String, Map<String, String>>(); private final Map<String, String> actionToKeyMap = new HashMap<String, String>(); private final MenuDAO menuDAO = new MenuDAOImpl(); public enum KnownMenu{ ANALYZER("menu_results_analyzer"); private final String elementId; KnownMenu(String elementId){ this.elementId = elementId; } public String getElementId(){ return elementId; } } static class SingletonHolder { static final PluginMenuService INSTANCE = new PluginMenuService(); } private PluginMenuService(){} public static PluginMenuService getInstance() { return SingletonHolder.INSTANCE; } public Menu getKnownMenu(KnownMenu knownMenu, String defaultKnownMenuParentId){ return knownMenu == null ? null : getMenuByElementId( knownMenu.getElementId(), defaultKnownMenuParentId); } public Menu getMenuByElementId(String elementId, String defaultKnownMenuParentId) { Menu menu = elementToMenuMap.get(elementId); if( menu != null){ return menu; } menu = menuDAO.getMenuByElementId(elementId); if( menu != null){ elementToMenuMap.put(elementId, menu); return menu; } menu = new Menu(); Menu parent = new MenuDAOImpl().getMenuByElementId(defaultKnownMenuParentId); menu.setParent(parent); menu.setPresentationOrder(5); menu.setElementId("menu_results_analyzer"); menu.setDisplayKey("banner.menu.results.analyzer"); MenuUtil.addMenu(menu); elementToMenuMap.put(elementId, menu); return menu; } public void insertLanguageKeyValue(String key, String value, String locale){ Map<String, String> localSpecificMap = menuLabelMap.get(locale); if( localSpecificMap == null){ localSpecificMap = new HashMap<String, String>(); menuLabelMap.put(locale, localSpecificMap); } localSpecificMap.put(key,value); } public String getMenuLabel(String locale, String key){ Map<String, String> localSpecificMap = menuLabelMap.get(locale); if (localSpecificMap == null){ return key; } String value = localSpecificMap.get(key); if( value == null){ return key; } return value; } public void addMenu(Menu menu){ MenuUtil.addMenu(menu); actionToKeyMap.put( menu.getActionURL(), menu.getDisplayKey()); } public String getKeyForAction( String action){ return actionToKeyMap.get(action); } }