treexmlservlet.java

来自「管理公司合同」· Java 代码 · 共 173 行

JAVA
173
字号
/*
 * Created on 2006-7-6 12:49:04
 *
 * By SinoBest
 * Copyright hnisi.com.cn, 2005-2006, All rights reserved.
 */

package cn.com.juneng.system.common.taglib.tree;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;

import cn.com.juneng.system.common.COMMON;

/**
 * @author yehailong
 * 
 */

public class TreeXmlServlet extends HttpServlet {

	// Process the HTTP Get request
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	private String checkedId = "";

	private boolean lazy = false;

	private String contextPath = "";

	HttpSession session = null;

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		try {
			response.setContentType("text/xml; charset=GBK");
			this.session = request.getSession();
			contextPath = request.getContextPath();

			ITreeService treeService = (ITreeService) session
					.getAttribute("TreeService");
			checkedId = request.getParameter("checkedId");
			if (checkedId == null) {
				checkedId = "";
			}
			ITreeNode parentNode = null;
			lazy = "true".equals(request.getParameter("lazy"));
			String nodeId = request.getParameter("nodeId");
			if (lazy && nodeId != null) {
				parentNode = treeService.findByNodeId(nodeId);
			} else {
				parentNode = (ITreeNode) session.getAttribute("ParentNode");
				// parentNode = treeService.findByNodeId("0");
			}
			Element rootElement = new Element("TreeNode");
			treeTable = getTreeTable(treeService);
			if (parentNode != null && nodeId==null) {
				Element parentElement = getElement(parentNode);
				rootElement.addContent(parentElement);
				if(!lazy){
					createElement(parentElement, parentNode);
				}
			} else {
				createElement(rootElement, parentNode);
			}
			Document myDocument = new Document(rootElement);

			XMLOutputter xmlOut = new XMLOutputter("", true);
			xmlOut.setEncoding("gb2312");
			xmlOut.output(myDocument, response.getOutputStream());

			xmlOut.output(myDocument, new FileOutputStream(new File(
					"c:\\sysorg.xml")));

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private Element getElement(ITreeNode node) {
		Element ele = new Element("TreeNode");
		ele.setAttribute("text", node.getNodeName() == null ? "" : node
				.getNodeName());
		ele.setAttribute("value", node.getNodeId());
		if (("," + checkedId + ",").indexOf("," + node.getNodeId() + ",") != -1) {
			ele.setAttribute("checked", "true");
		}
		if (this.lazy) {
			List nodeList = (List) treeTable.get(node.getNodeId());
			if (!COMMON.isEmpty(nodeList)) {
				ele.setAttribute("src", this.contextPath + "/treexml?time="
						+ System.currentTimeMillis() + "&lazy=" + this.lazy
						+ "&checkedId=" + this.checkedId + "&nodeId="
						+ node.getNodeId());
			}
		}
		return ele;
	}

	private Hashtable treeTable;

	private void createElement(Element parentElement, ITreeNode node) {
		String parentNodeId = "0";
		if (node != null) {
			parentNodeId = node.getNodeId();
		}
		if (parentNodeId != null) {
			List nodeList = (List) treeTable.get(parentNodeId);

			if (nodeList != null && nodeList.size() != 0) {
				for (int i = 0; i < nodeList.size(); i++) {
					ITreeNode childNode = (ITreeNode) nodeList.get(i);
					if (childNode.getNodeId() != null) {
						if (treeTable.get(childNode.getNodeId()) == null) {
							// 无子节点
							Element childElement = getElement(childNode);
							parentElement.addContent(childElement);
						} else {
							// 有子节点
							Element childElement = getElement(childNode);
							parentElement.addContent(childElement);
							if (!this.lazy) {
								createElement(childElement, childNode);
							}
						}
					}
				}
			}
		}
	}

	public Hashtable getTreeTable(ITreeService treeService) {
		ITreeNode treeNode = null;
		List list = treeService.findAllRecords();
		Hashtable treeHash = new Hashtable();
		List tempList = null;
		for (int i = 0; i < list.size(); i++) {
			treeNode = (ITreeNode) list.get(i);
			if (treeNode.getParentId() == null
					|| treeNode.getParentId().equals(treeNode.getNodeId())) {
				continue;
			}

			tempList = (List) treeHash.get(treeNode.getParentId());
			if (tempList == null) {
				tempList = new ArrayList();
				tempList.add(treeNode);
				treeHash.put(treeNode.getParentId(), tempList);
			} else {
				tempList.add(treeNode);
			}
		}
		return treeHash;
	}
}

⌨️ 快捷键说明

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