⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menurepository.java

📁 Struts Menu这是为基于JSP和Struts的应用程序提供的Web菜单框架。菜单可以在一个XML文件中定义
💻 JAVA
字号:
/* * MenuRepository.java * * Created on January 29, 2001, 9:51 AM */package net.sf.navigator.menu;import java.io.InputStream;import java.util.*;import javax.servlet.ServletContext;import net.sf.navigator.displayer.MenuDisplayerMapping;import net.sf.navigator.util.LoadableResource;import net.sf.navigator.util.LoadableResourceException;import org.apache.commons.collections.FastHashMap;import org.apache.commons.digester.Digester;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * * @author  ssayles, mraible * @version */public class MenuRepository implements LoadableResource {    //~ Static fields/initializers =============================================    public static final String MENU_REPOSITORY_KEY =        "net.sf.navigator.menu.MENU_REPOSITORY";    private static Log log = LogFactory.getLog(MenuRepository.class);    //~ Instance fields ========================================================    protected String config = null;    protected String name = null;    protected ServletContext servletContext = null;    protected FastHashMap menus = new FastHashMap();    protected FastHashMap displayers = new FastHashMap();    protected FastHashMap templates = new FastHashMap();        //~ Methods ================================================================    public Set getMenuNames() {        return menus.keySet();    }    /**     * Convenience method for dynamic menus - returns the top-level menus     * only.     * @return     */    public List getTopMenus() {        List topMenus = new ArrayList();        if (menus == null) {            log.warn("No menus found in repository!");            return topMenus;        }        for (Iterator it = menus.keySet().iterator(); it.hasNext();) {            String name = (String) it.next();            MenuComponent menu = getMenu(name);            if (menu.getParent() == null) {                topMenus.add(menu);            }        }        return topMenus;    }    public MenuComponent getMenu(String menuName) {        return (MenuComponent) menus.get(menuName);    }    public MenuDisplayerMapping getMenuDisplayerMapping(String displayerName) {        MenuDisplayerMapping mapping =            (MenuDisplayerMapping) displayers.get(displayerName);        return mapping;    }    protected Digester initDigester() {        Digester digester = new Digester();        digester.setClassLoader(Thread.currentThread().getContextClassLoader());        digester.push(this);        //digester.setDebug(getDebug());        // 1        digester.addObjectCreate("MenuConfig/Menus/Menu",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu");        digester.addSetNext("MenuConfig/Menus/Menu", "addMenu");        // 2        digester.addObjectCreate("MenuConfig/Menus/Menu/Item",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu/Item");        digester.addSetNext("MenuConfig/Menus/Menu/Item", "addMenuComponent",            "net.sf.navigator.menu.MenuComponent");        // 3                digester.addObjectCreate("MenuConfig/Menus/Menu/Item/Item",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu/Item/Item");        digester.addSetNext("MenuConfig/Menus/Menu/Item/Item",            "addMenuComponent", "net.sf.navigator.menu.MenuComponent");        // 4        digester.addObjectCreate("MenuConfig/Menus/Menu/Item/Item/Item",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu/Item/Item/Item");        digester.addSetNext("MenuConfig/Menus/Menu/Item/Item/Item",            "addMenuComponent", "net.sf.navigator.menu.MenuComponent");        // 5        digester.addObjectCreate("MenuConfig/Menus/Menu/Item/Item/Item/Item",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu/Item/Item/Item/Item");        digester.addSetNext("MenuConfig/Menus/Menu/Item/Item/Item/Item",            "addMenuComponent", "net.sf.navigator.menu.MenuComponent");        // 6        digester.addObjectCreate("MenuConfig/Menus/Menu/Item/Item/Item/Item",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu/Item/Item/Item/Item");        digester.addSetNext("MenuConfig/Menus/Menu/Item/Item/Item/Item",            "addMenuComponent", "net.sf.navigator.menu.MenuComponent");        // 7        digester.addObjectCreate("MenuConfig/Menus/Menu/Item/Item/Item/Item",            "net.sf.navigator.menu.MenuComponent", "type");        digester.addSetProperties("MenuConfig/Menus/Menu/Item/Item/Item/Item");        digester.addSetNext("MenuConfig/Menus/Menu/Item/Item/Item/Item",            "addMenuComponent", "net.sf.navigator.menu.MenuComponent");        digester.addObjectCreate("MenuConfig/Displayers/Displayer",            "net.sf.navigator.displayer.MenuDisplayerMapping", "mapping");        digester.addSetProperties("MenuConfig/Displayers/Displayer");        digester.addSetNext("MenuConfig/Displayers/Displayer",            "addMenuDisplayerMapping",            "net.sf.navigator.displayer.MenuDisplayerMapping");        digester.addSetProperty("MenuConfig/Displayers/Displayer/SetProperty",            "property", "value");                    return digester;    }    /**     * Adds a new menu.  This is called when parsing the menu xml definition.     *     * @param menu The menu component to add.     */    public void addMenu(MenuComponent menu) {        if (menus.containsKey(menu.getName())) {            if (log.isDebugEnabled()) {                log.warn("Menu '" + menu.getName()                        + "' already exists in repository");            }            List children = getMenu(menu.getName()).getComponents();            if (children != null && menu.getComponents() != null) {                for (Iterator it = children.iterator();it.hasNext();) {                    MenuComponent child = (MenuComponent) it.next();                    menu.addMenuComponent(child);                }            }        }        menus.put(menu.getName(), menu);    }    public void addMenuDisplayerMapping(MenuDisplayerMapping displayerMapping) {        displayers.put(displayerMapping.getName(), displayerMapping);    }    /**     * This method is so menu repositories can retrieve displayers from the     * default repository specified in menu-config.xml     * @return the displayers specified in this repository     */    public FastHashMap getDisplayers() {        return displayers;    }    /**     * Allow the displayers to be set as a whole.  This should only be used     * when copying the displayers from the default repository to a newly     * created repository.     * @param displayers     */    public void setDisplayers(FastHashMap displayers) {        this.displayers = displayers;    }    public void load() throws LoadableResourceException {        if (getServletContext() == null) {            throw new LoadableResourceException("no reference to servlet context found");        }        InputStream input = null;        Digester digester = initDigester();        try {            input = getServletContext().getResourceAsStream(config);            digester.parse(input);            menus.setFast(true);        } catch (Exception e) {            e.printStackTrace();            throw new LoadableResourceException("Error parsing resource file: " +                config + " nested exception is: " + e.getMessage());        } finally {            try {                input.close();            } catch (Exception e) {}        }    }    public void reload() throws LoadableResourceException {        menus.setFast(false);        menus.clear();        displayers.setFast(false);        displayers.clear();        load();    }    public void setLoadParam(String loadParam) {        config = loadParam;    }    public String getLoadParam() {        return config;    }    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }    public ServletContext getServletContext() {        return servletContext;    }    public void setServletContext(ServletContext context) {        this.servletContext = context;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -