📄 menumanager.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 + -