treedataloader.java

来自「OperaMasks是一种基于J2EE的Web开发技术」· Java 代码 · 共 128 行

JAVA
128
字号
package demo.common;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class TreeDataLoader {
	private Map<String, RcdemoTreeNode> treeData;

	private static TreeDataLoader treeDataLoader;

	public static TreeDataLoader getInstance() {
		if (treeDataLoader == null)
			treeDataLoader = new TreeDataLoader();
		return treeDataLoader;
	}

	public Object[] getChildren(Object userData) {
		Set<String> keySet = treeData.keySet();
		List<String> children = new LinkedList<String>();
		if (userData == null) {
			for (String key : keySet) {
				RcdemoTreeNode treeNode = treeData.get(key);
				if (treeNode.getParent() == null)
					children.add(treeNode.getUserData());
			}
		} else {
			RcdemoTreeNode rcdemoTreeNode = treeData.get(userData.toString());
			if (rcdemoTreeNode != null && !rcdemoTreeNode.isLeaf()) {
				List<RcdemoTreeNode> childrenNodes = rcdemoTreeNode
						.getChildren();
				for (RcdemoTreeNode node : childrenNodes) {
					children.add(node.getUserData());
				}
			}
		}
		return children.toArray();
	}

	public String getText(Object userData) {
		if (userData == null)
			return null;
		return treeData.get(userData.toString()).getText();
	}

	public boolean isExpended(Object userData) {
		if (userData == null)
			return false;
		return treeData.get(userData.toString()).isExpended();
	}

	public RcdemoTreeNode getRcdemoTreeNode(Object userData) {
		return treeData.get(userData.toString());
	}

	private TreeDataLoader() {
		init();
	}

	private void init() {
		treeData = new HashMap<String, RcdemoTreeNode>();
		String path = TreeDataLoader.class.getClassLoader().getResource(
				"Tree.xml").getFile();
		Document treeDocument = XMLHelper.read(path);
		Node root = treeDocument.getFirstChild();
		nodeToRcdemoTreeNode(root);
	}

	@SuppressWarnings("unchecked")
	private RcdemoTreeNode nodeToRcdemoTreeNode(Node node) {
		if (node == null)
			return null;
		RcdemoTreeNode rcdemoTreeNode = new RcdemoTreeNode();
		NodeList children = node.getChildNodes();
		List<RcdemoTreeNode> childNodes = new LinkedList<RcdemoTreeNode>();
		List<String> mbsrcList = new LinkedList<String>();
		List<String> jspsrcList = new LinkedList<String>();
		for (int i = 0; i < children.getLength(); i++) {
			Node child = children.item(i);
			if ("userData".equals(child.getNodeName())) {
				rcdemoTreeNode.setUserData(child.getTextContent().trim());
			} else if ("text".equals(child.getNodeName())) {
				rcdemoTreeNode.setText(child.getTextContent().trim());
			} else if ("url".equals(child.getNodeName())) {
				rcdemoTreeNode.setUrl(child.getTextContent().trim());
			} else if ("expended".equals(child.getNodeName())) {
				rcdemoTreeNode.setExpended(Boolean.valueOf(child
						.getTextContent().trim()));
			} else if ("RcdemoTreeNode".equals(child.getNodeName())) {
				RcdemoTreeNode childNode = nodeToRcdemoTreeNode(child);
				childNode.setParent(rcdemoTreeNode);
				childNodes.add(childNode);
			} else if ("mbsrc".equals(child.getNodeName())) {
				mbsrcList.add(child.getTextContent().trim());
			} else if ("jspsrc".equals(child.getNodeName())) {
				jspsrcList.add(child.getTextContent().trim());
			}
		}
		rcdemoTreeNode.setChildren(childNodes);
		rcdemoTreeNode.setMbsrc(mbsrcList);

		if (jspsrcList.size() == 0) {
			jspsrcList.add(rcdemoTreeNode.getUrl());
		}

		rcdemoTreeNode.setJspsrc(jspsrcList);

		if (rcdemoTreeNode.getUserData() == null
				|| rcdemoTreeNode.getUserData().length() == 0)
			rcdemoTreeNode.setUserData(UUID.randomUUID().toString());

		treeData.put(rcdemoTreeNode.getUserData(), rcdemoTreeNode);

		return rcdemoTreeNode;
	}

	public Map<String, RcdemoTreeNode> getTreeData() {
		return treeData;
	}
}

⌨️ 快捷键说明

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