menucreator.java

来自「java实现的可配置的工作流引擎,采用jsp+javabean实现」· Java 代码 · 共 94 行

JAVA
94
字号
package com.hongsoft.res.menu;

import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

import com.hongsoft.agile.Global;
import com.hongsoft.res.formbean.UserSessionBean;
import com.hongsoft.res.util.PrivMap;
import com.hongsoft.res.util.UserSessionUtil;

public class MenuCreator {

    private static MenuCreator instance;

    private static final Object lock = new Object();

    private static final String className = "com.hongsoft.res.menu.MenuCreator";

    // private static Document document;
    private MenuCreator() {
    }

    public static MenuCreator getInstance() {
        if (instance == null) {
            synchronized (lock) {
                if (instance == null) {
                    try {
                        Class c = Class.forName(className);
                        instance = (MenuCreator) c.newInstance();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return instance;
    }

    /**
     * 按UserSessionBean中的权限获取XML对象
     *
     * @return jdom的Document对象
     */
    public Document getXmlDocument(UserSessionBean userSessionBean) {
        Document doc = getXmlDocument();
        Element tree = doc.getRootElement();
        List branchList = tree.getChildren("branch");
        for (int j = 0; j < branchList.size(); j++) {
            Element branchElement = (Element) branchList.get(j);
            if ("res".equals(branchElement.getAttributeValue("id"))) { // 系统管理
                Element systemManagement = branchElement;
                if (!thereIsPriv(userSessionBean, PrivMap.RES_MANAGEMENT))
                    tree.removeContent(systemManagement);
            }
        }
        return doc;
    }

    /**
     * 判断userSessionBean中的权限中有无privType类型的权限
     *
     * @param userSessionBean
     * @param privType
     * @return
     */
    public boolean thereIsPriv(UserSessionBean userSessionBean, int privTypeID) {
        return UserSessionUtil.thereIsPriv(userSessionBean, privTypeID);
    }

    /**
     * 获取最大的XML对象
     *
     * @return jdom的Document对象
     */
    public Document getXmlDocument() {
        Document doc = null;
        try {
            SAXBuilder builder = new SAXBuilder();
            doc = builder.build(Global.getMenuXmlLocation());
        } catch (JDOMException ex) {
        }
        return doc;
    }

    public static void main(String args[]) {

    }

}

⌨️ 快捷键说明

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