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

📄 xmltreefactory.java

📁 jsp + xml实现treeview
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            throw new TreeFactoryException("There are no tree decriptions.");
        }
        for (int k = 0; k < a_element.getChildNodes().getLength(); k++) {
            Node a_node = a_element.getChildNodes().item(k);

            if (a_node.getNodeType() == Node.ELEMENT_NODE && a_node.getNodeName().equalsIgnoreCase(XMLTreeConstant.TREE)) {
                Wrapper a_wrapper = generateTree((Element) a_node);
                a_map.put(a_wrapper.getStructureModel().getName(), a_wrapper);
            }
        }
        return a_map;
    }

    private Wrapper generateTree(Element p_element) throws TreeFactoryException {
        if (p_element.getChildNodes().getLength() == 0) {
            LOG.error("TreeModel can not be empty.");
            throw new TreeFactoryException("TreeModel can not be empty.");
        }
        TreeModel a_treeStructure = new TreeModel();
        String a_treeName = p_element.getAttribute(XMLTreeConstant.TREE_NAME);
        a_treeStructure.setName(a_treeName);

        List a_openNodes = null;
        for (int k = 0; k < p_element.getChildNodes().getLength(); k++) {
            Node a_node = p_element.getChildNodes().item(k);

            if (a_node.getNodeType() != Node.ELEMENT_NODE) {
                continue;
            }

            if (a_node.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE)) {
                Element a_rootNode = (Element) a_node;
                DefaultTreeNode a_rootTreeNode = getTreeNode(a_rootNode);
                if (a_rootTreeNode != null) {
                    a_treeStructure.setRootNode(a_rootTreeNode);
                }
            }
            if (a_node.getNodeName().equalsIgnoreCase(XMLTreeConstant.OPEN_NODE)) {

                a_openNodes = getOpenNodes((Element) a_node);

            }
        }
        DefaultTreeStateModel a_stateModel = new DefaultTreeStateModel();
        if (a_openNodes != null) {
            for (Iterator a_it = a_openNodes.iterator(); a_it.hasNext();) {
                JSPTreeNodeImpl a_treeNode = (JSPTreeNodeImpl) a_it.next();
                a_stateModel.addOpened(a_treeNode.hashCode());
            }
        }
        Wrapper a_wrapper = new Wrapper(a_treeStructure, a_stateModel);
        return a_wrapper;
    }

    private DefaultTreeNode getTreeNode(Element p_element) throws TreeFactoryException {
        DefaultTreeNode a_treenode = new DefaultTreeNode();
        JSPTreeNodeImpl a_jspTreeNode = getJSPTreeNode(p_element);
        a_treenode.setData(a_jspTreeNode);
        fillNode(a_treenode, p_element);
        return a_treenode;
    }

    private void fillNode(DefaultTreeNode treenode, Node node) throws TreeFactoryException {
        NodeList nodelist = node.getChildNodes();
        if (nodelist != null && nodelist.getLength() > 0) {
            for (int i = 0; i < nodelist.getLength(); i++) {
                Node node1 = nodelist.item(i);
                if (node1.getNodeType() == Node.ELEMENT_NODE && node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE)) {
                    DefaultTreeNode treenode1 = new DefaultTreeNode();
                    JSPTreeNodeImpl jsptreenodeimpl = getJSPTreeNode(node1);
                    if (jsptreenodeimpl != null) {
                        treenode1.setData(jsptreenodeimpl);
                        if (LOG.isDebugEnabled()) {
                            LOG.debug("adding new node " + jsptreenodeimpl.getId() + " to tree");
                        }
                    }
                    treenode.addChild(treenode1);
                    fillNode(treenode1, node1);
                }
            }

        }
    }

    private JSPTreeNodeImpl getJSPTreeNode(Node node) throws TreeFactoryException {

        NamedNodeMap a_attributeMap = node.getAttributes();
        if (a_attributeMap == null) {
            throw new TreeFactoryException("Node does not have id");
        }
        JSPTreeNodeImpl a_jspTreeNode = new JSPTreeNodeImpl();
        for (int i = 0; i < a_attributeMap.getLength(); i++) {
            Node node1 = a_attributeMap.item(i);
            if (node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE_ID)) {
                a_jspTreeNode.setId(node1.getNodeValue());
            } else if (node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE_LABEL)) {
                a_jspTreeNode.setLabel(node1.getNodeValue());
            } else if (node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE_HREF)) {
                a_jspTreeNode.setHref(node1.getNodeValue());
            } else if (node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE_CONTEXT_RELATIVE)) {
                String a_nodeValue = node1.getNodeValue();
                if (a_nodeValue.equals("false")) {
                    a_jspTreeNode.setContextRelative(false);
                }
            } else if (node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE_TARGET)) {
                a_jspTreeNode.setTarget(node1.getNodeValue());
            } else if (node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE_SKIN)) {
                a_jspTreeNode.setSkinName(node1.getNodeValue());
            } else {
                a_jspTreeNode.addProperty(node1.getNodeName(), node1.getNodeValue());
            }
        }

        if (a_jspTreeNode.getId() == null) {
            throw new TreeFactoryException("Node does not have id");
        }
        return a_jspTreeNode;
    }

    private List getOpenNodes(Element p_element) {
        List a_list = new ArrayList();
        NodeList nodelist = p_element.getChildNodes();
        if (nodelist != null && nodelist.getLength() > 0) {
            for (int i = 0; i < nodelist.getLength(); i++) {
                Node node1 = nodelist.item(i);
                if (node1.getNodeType() == Node.ELEMENT_NODE
                        && node1.getNodeName().equalsIgnoreCase(XMLTreeConstant.NODE)) {

                    String a_id = ((Element) node1).getAttribute(XMLTreeConstant.NODE_ID);

                    JSPTreeNodeImpl jsptreenodeimpl = new JSPTreeNodeImpl(a_id);
                    a_list.add(jsptreenodeimpl);
                }
            }

        }
        return a_list;
    }

    private Document getDocument() throws TreeFactoryException {
        InputStream a_inputStream = null;

        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        if (classLoader == null) {
            classLoader = this.getClass().getClassLoader();
        }
        a_inputStream = classLoader.getResourceAsStream(m_pathToXMLTree);
        if (LOG.isInfoEnabled()) {
            LOG.info("XML tree path: " + m_pathToXMLTree);
        }

        if (a_inputStream == null) {
            throw new TreeFactoryException("XML file with path: " + m_pathToXMLTree + " was not found.");
        }

        try {
            DocumentBuilderFactory a_builderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder a_documentBuilder = a_builderFactory.newDocumentBuilder();
            return a_documentBuilder.parse(a_inputStream);
        } catch (FileNotFoundException e) {
            LOG.error("XML file with path: " + m_pathToXMLTree + " was not found.");
            throw new TreeFactoryException("XML file with path: " + m_pathToXMLTree + " was not found.", e);
        } catch (FactoryConfigurationError e) {
            throw new TreeFactoryException("", e);
        } catch (ParserConfigurationException e) {
            throw new TreeFactoryException("", e);
        } catch (SAXException e) {
            throw new TreeFactoryException("", e);
        } catch (IOException e) {
            throw new TreeFactoryException("", e);
        } finally {
            if (a_inputStream != null) {
                try {
                    a_inputStream.close();
                } catch (IOException ignored) {
                }
            }
        }
    }

    private class Wrapper {

        private TreeStructureModel structureModel = null;

        private TreeStateModel stateModel = null;

        public Wrapper(TreeStructureModel structureModel, TreeStateModel stateModel) {
            this.structureModel = structureModel;
            this.stateModel = stateModel;
        }

        public TreeStructureModel getStructureModel() {
            return structureModel;
        }

        public TreeStateModel getStateModel() {
            return stateModel;
        }

    }

}

⌨️ 快捷键说明

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