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 + -
显示快捷键?