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

📄 menumanager.java

📁 EOS的一个很好的例子.包括页面构件、展现构件
💻 JAVA
字号:
package com.primeton.eos.fbframe.fbrole.bizlet;

import org.w3c.dom.*;
import java.sql.*;
import java.util.*;

import com.primeton.tp.core.api.*;
import com.primeton.eos.bizlets.util.*;
import com.primeton.tp.core.bizservice.EOSParameter;
import com.primeton.tp.core.bizservice.ProcessException;
import com.primeton.tp.core.dataservice.DBManagerException;

/**
 * @author PengYuanlin
 * @version 1.0
 * @date 2007-2-7
 * @class_displayName MenuManager
 */

public class MenuManager {

	/**
	 * 更新菜单数据 <br>
	 * 返回值:
	 * <li>1 - 成功
	 * <li>-2 - 移动菜单序号为空
	 * <li>-3 - 菜单编号不存在
	 * <li>-4 - 移动菜单的目标菜单是源菜单的子菜单
	 * 
	 * @param doc
	 *            type: Document, DOM;
	 * @param param
	 *            type: BizContext;
	 * @return: int ,运算逻辑返回值,成功返回1,不成功返回0
	 * @throws Exception
	 * <p>** bizlet 的显示名称 **
	 * @bizlet_displayName BL_refreshMenuTree
	 */
	public static int BL_refreshMenuTree(Document doc, BizContext param)
			throws Exception {
		PersistenceBroker broker = getOrgBroker(param.getRequestID());
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		HashMap menu = new HashMap();
		try {
			Connection conn = broker.getConnection();
			String sql = "select menuID, menuLevel, parentsID from EOSMenu order by menuLevel ";
			pstmt = conn.prepareStatement(sql);
			for (rs = pstmt.executeQuery(); rs.next();) {
				String id = rs.getString(1);
				int level = rs.getInt(2);
				String pid = rs.getString(3);
				String seq = null;
				if (level == 0 || level == 1) {
					seq = id.concat(".");
				} else {
					String s = (String) menu.get(pid);
					if (s != null) {
						seq = s.concat(id).concat(".");
					} else {
						seq = id.concat(".");
					}
				}
				PreparedStatement pupdate = null;
				try {
					String updateSql = "update EOSMenu set menuSEQ=? where menuID=?";
					pupdate = conn.prepareStatement(updateSql);
					pupdate.setString(1, seq);
					pupdate.setString(2, id);
					pupdate.executeUpdate();
				} finally {
					if (pupdate != null)
						pupdate.close();
				}
				menu.put(id, seq);
			}
		} finally {
			if (rs != null)
				rs.close();
			if (pstmt != null)
				pstmt.close();
			if (broker != null)
				broker.close();
		}
		return 1;
	}

	/**
	 * 移动一个菜单到另外一个菜单下,并且将这个菜单下所有菜单都转到目标菜单 <br>
	 * 返回值:
	 * <li>1 - 成功
	 * <li>-2 - 移动菜单序号为空
	 * <li>-3 - 菜单编号不存在
	 * <li>-4 - 移动菜单的目标菜单是源菜单的子菜单
	 * 
	 * @param doc
	 *            type: Document, DOM;
	 * @param param
	 *            type: BizContext;
	 * @return: int ,运算逻辑返回值,成功返回1
	 * @throws Exception
	 *             <p>** bizlet 的显示名称 **
	 * @bizlet_displayName BL_moveMenu
	 * @bizlet_param passing="in" type="variable" value="" name=""
	 *               desc="移动菜单的源菜单编号"
	 * @bizlet_param passing="in" type="variable" value="" name=""
	 *               desc="移动菜单的目标菜单编号"
	 */
	public static int BL_moveMenu(Document doc, BizContext param)
			throws Exception {
		String srcID = (String) param.getParaObjectAt(0);
		String destID = (String) param.getParaObjectAt(1);

		if (srcID == null || srcID.equals(""))
			return -1;
		if (destID == null || destID.equals(""))
			return -1;

		PersistenceBroker broker = getOrgBroker(param.getRequestID());
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			Element srcMenu = doc.createElement("EOSMenu");
			Element destMenu = doc.createElement("EOSMenu");
			srcMenu.setAttribute("criteria", "=");
			destMenu.setAttribute("criteria", "=");
			BNXmlUtil.setNodeValue(srcMenu, "menuID", srcID);
			BNXmlUtil.setNodeValue(destMenu, "menuID", destID);

			// 查询源菜单信息
			broker.expandAll(srcMenu);
			String srcSEQ = BNXmlUtil.getNodeValue(srcMenu, "menuSEQ");
			if (srcSEQ == null || srcSEQ.equals(""))
				return -2;
			int srcLevel = Integer.parseInt(BNXmlUtil.getNodeValue(srcMenu,
					"menuLevel"));

			// 查询目标菜单信息
			broker.expandAll(destMenu);
			String destSEQ = BNXmlUtil.getNodeValue(destMenu, "menuSEQ");
			String destLeaf = BNXmlUtil.getNodeValue(destMenu, "isLeaf");
			if (destSEQ == null || destSEQ.equals(""))
				return -2;
			int destLevel = Integer.parseInt(BNXmlUtil.getNodeValue(destMenu,
					"menuLevel"));

			if (destSEQ.startsWith(srcSEQ)) {
				return -3; //移动菜单的目标菜单是源菜单的子菜单
			}

			String str;
			// 查询源菜单下的所有菜单,修改移动引起的level seq 数据
			Connection conn = broker.getConnection();
			String sql = "select menuID, menuLevel, menuSEQ from EOSMenu where menuSEQ like ? ";
			pstmt = conn.prepareStatement(sql);
			str = srcSEQ.concat("%");
			pstmt.setString(1, str);
			for (rs = pstmt.executeQuery(); rs.next();) {
				String id = rs.getString(1);
				int level = rs.getInt(2);
				String seq = rs.getString(3);
				PreparedStatement pupdate = null;
				try {
					if (srcSEQ.equals(seq)) {
						String updateSql = "update EOSMenu set menuSEQ=? , menuLevel=? , parentsID=? where menuID=?";
						pupdate = conn.prepareStatement(updateSql);
						str = destSEQ.concat(String.valueOf(srcID) + ".");
						pupdate.setString(1, str);
						pupdate.setInt(2, destLevel + 1);
						pupdate.setString(3, destID);
						pupdate.setString(4, id);
						pupdate.executeUpdate();
					} else {
						StringBuffer newSeq = new StringBuffer(destSEQ);
						newSeq.append(srcID);
						newSeq.append(".");
						newSeq.append(seq.substring(srcSEQ.length()));
						String updateSql = "update EOSMenu set menuSEQ=? , menuLevel=? where menuID=?";
						pupdate = conn.prepareStatement(updateSql);
						pupdate.setString(1, newSeq.toString());
						pupdate.setInt(2, level - srcLevel + destLevel + 1);
						pupdate.setString(3, id);
						pupdate.executeUpdate();
					}
				} finally {
					if (pupdate != null)
						pupdate.close();
				}
			}
			if (destLeaf == null || destLeaf.equalsIgnoreCase("Y")) { // 如目标菜单是叶子菜单,将菜单改成非叶子菜单
				PreparedStatement pupdate = null;
				try {
					String updateSql = "update EOSMenu set isLeaf='N', menuAction='' where menuID=?";
					pupdate = conn.prepareStatement(updateSql);
					pupdate.setString(1, destID);
					pupdate.executeUpdate();
				} finally {
					if (pupdate != null)
						pupdate.close();
				}
			}

		} finally {
			if (rs != null)
				rs.close();
			if (pstmt != null)
				pstmt.close();
			if (broker != null)
				broker.close();
		}
		return 1;
	}

	/**
	 * 移动一个菜单到根节点下,并且将这个菜单下所有菜单都转到目标菜单 <br>
	 * 返回值:
	 * <li>1 - 成功
	 * <li>-2 - 移动菜单序号为空
	 * <li>-3 - 菜单编号不存在
	 * 
	 * @param doc
	 *            type: Document, DOM;
	 * @param param
	 *            type: BizContext;
	 * @return: int ,运算逻辑返回值,成功返回1
	 * @throws Exception
	 *             <p>** bizlet 的显示名称 **
	 * @bizlet_displayName BL_moveMenuRoot
	 * @bizlet_param passing="in" type="variable" value="" name=""
	 *               desc="移动菜单的源菜单编号"
	 */

	public static int BL_moveMenuRoot(Document doc, BizContext param)
			throws Exception {
		String srcID = (String) param.getParaObjectAt(0);
		if (srcID == null || srcID.equals(""))
			return -1;

		PersistenceBroker broker = getOrgBroker(param.getRequestID());
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			Element srcMenu = doc.createElement("EOSMenu");
			srcMenu.setAttribute("criteria", "=");
			BNXmlUtil.setNodeValue(srcMenu, "menuID", srcID);

			// 查询源菜单信息
			broker.expandAll(srcMenu);
			String srcSEQ = BNXmlUtil.getNodeValue(srcMenu, "menuSEQ");
			String isLeaf = BNXmlUtil.getNodeValue(srcMenu, "isLeaf");
			if (srcSEQ == null || srcSEQ.equals(""))
				return -2;
			int srcLevel = Integer.parseInt(BNXmlUtil.getNodeValue(srcMenu,
					"menuLevel"));

			String str;
			String strseq;
			// 查询源菜单下的所有菜单,修改移动引起的level seq 数据
			Connection conn = broker.getConnection();
			String sql = "select menuID, menuLevel, menuSEQ from EOSMenu where menuSEQ like ? ";
			pstmt = conn.prepareStatement(sql);
			str = srcSEQ.concat("%");
			pstmt.setString(1, str);
			for (rs = pstmt.executeQuery(); rs.next();) {
				String id = rs.getString(1);
				int level = rs.getInt(2);
				String seq = rs.getString(3);
				PreparedStatement pupdate = null;
				try {
					if (srcSEQ.equals(seq)) {
						String updateSql = "update EOSMenu set menuSEQ=? , menuLevel=? , parentsID=? where menuID=?";
						pupdate = conn.prepareStatement(updateSql);
						strseq = srcID + ".";
						pupdate.setString(1, strseq);
						pupdate.setInt(2, 1);
						pupdate.setString(3, "0");
						pupdate.setString(4, id);
						pupdate.executeUpdate();
					} else {
						StringBuffer newSeq = new StringBuffer(srcID);
						newSeq.append(".");
						newSeq.append(seq.substring(srcSEQ.length()));
						String updateSql = "update EOSMenu set menuSEQ=? , menuLevel=? where menuID=?";
						pupdate = conn.prepareStatement(updateSql);
						pupdate.setString(1, newSeq.toString());
						pupdate.setInt(2, level - srcLevel + 1);
						pupdate.setString(3, id);
						pupdate.executeUpdate();
					}

				} finally {
					if (pupdate != null)
						pupdate.close();
				}

			}
			/*
			 * if (isLeaf == null || isLeaf.equalsIgnoreCase("Y")) { //
			 * 如源菜单是叶子菜单,将菜单改成非叶子菜单 PreparedStatement pupdate = null; try {
			 * String updateSql = "update EOSMenu set isLeaf='N', menuAction=''
			 * where menuID=?"; pupdate = conn.prepareStatement(updateSql);
			 * pupdate.setString(1, srcID); pupdate.executeUpdate(); } finally {
			 * if (pupdate != null) pupdate.close(); } }
			 */

		} finally {
			if (rs != null)
				rs.close();
			if (pstmt != null)
				pstmt.close();
			if (broker != null)
				broker.close();
		}
		return 1;
	}

	private static PersistenceBroker getOrgBroker(String requestID)
			throws DBManagerException, ProcessException {
		EOSParameter para = new EOSParameter();
		para.setUnitId("fbrole");
		para.setUnitId("0");
		para.setRequestID(requestID);
		return para.getDBBroker();
	}

	private static BizContext getOrgBizContext(String requestID) {
		EOSParameter para = new EOSParameter();
		para.setUnitId("fbrole");
		para.setUnitId("0");
		para.setRequestID(requestID);
		return para;
	}
}

⌨️ 快捷键说明

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