📄 mymenucfg.java
字号:
package com.dreamtel.rightCtrl.menuright;
import com.dreamtel.db.dbresult.DBResultset;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Vector;
import com.dreamtel.db.conn.*;
/**
* Title:menuCfgnew
* Description:读写菜单配置文件(递归),不限制菜单级别
* Copyright: Copyright (c) 2004
* Company:dreamtel
* @author xiexp
* @modify: xiexp
* @date: 20040528
* @version 1.1
*/
public class myMenuCfg
{
private String strPropName="menu.prop";//配置文件明
private dbConnect DBConn=null;//数据库链接
private DBResultset rs=null;//结果集
private menu[] mStru=null;//菜单结构数组
private String defaultLink="/TaglibWebProject/no_link.jsp";//默认链接
private menu tmenu=new menu();//菜单树
private Vector vmenu;//所有的节点信息矢量集合
// private String strFilePath="config\\\\menucfg.prop"; //配置文件路径,位于1000/config中
private String strFilePath="config\\\\menucfg";
private StringBuffer retMenuscript_buffer=new StringBuffer();//返回页面的SCRIPT语句
private Vector searchtree=null;//查找的分支
private Vector vSQL=null;//返回的sql集合
// operinfo operInfo; //操作员信息
private String conn_code=null;
public myMenuCfg( String conn_code)
{
this.conn_code= conn_code;
}
public Vector getVmenu()
{
return this.vmenu;
}
/**
* 直接从数据库中读取菜单
* @ RETURN 用于显示菜单的script代码
*/
public String Lodafromdb(String operid)
{
//this.ReadData();
this.ReadMyMenuData(operid);
vmenu = new Vector();
if(mStru!=null){
for (int i = 0; i < mStru.length; i++) { //初始化矢量集合
if (mStru[i].getStrLink() == null || mStru[i].getStrLink().equals(""))
mStru[i].setStrLink(defaultLink);
vmenu.add(mStru[i]);
}
tmenu.setStrName("本地网稽核系统"); //初始化根
retMenuscript_buffer.append("foldersTree = gFld(\"<font size='2.5pt'>" + //根节点的SCRIPT
tmenu.getStrName() + "</font>\", \"\")\n");
//System.out.println("初始化树");
initMenu(tmenu, "0", vmenu); //初始化菜单树
viewMenu(tmenu.sub); //遍历菜单树,生成返回的脚本
}
else{
tmenu.setStrName("本地网稽核系统"); //初始化根
retMenuscript_buffer.append("foldersTree = gFld(\"<font size='2.5pt'>" + //根节点的SCRIPT
tmenu.getStrName() + "</font>\", \"\")\n");
}
return retMenuscript_buffer.toString();
}
/**
* 载入权限数据
* @param operid String 员工号
* @param group String 员工组
* @return String 返回显示字符串
*/
public String LoadMyMenuData(String operid, String group)
{
if(group.equalsIgnoreCase("GROUP"))
{
tmenu.setStrName("");
retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>" + //根节点的SCRIPT
tmenu.getStrName() + "</font>\", \"\")\n");
}
/*
else if(group.equalsIgnoreCase("GROUP"))
{
tmenu.setStrName("");
retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>" +
tmenu.getStrName() + "</font>\", \"\")\n");
}
else if(operid.equalsIgnoreCase("GROUP"))
{
tmenu.setStrName("");
retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>" +
tmenu.getStrName() + "</font>\", \"\")\n");
}*/
else{
int ret = this.ReadMyMenuData(operid);
if (ret == 1) {
tmenu.setStrName("员工" + operid + "没有你拥有的菜单权限"); //初始化根
retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>" + //根节点的SCRIPT
tmenu.getStrName() + "</font>\", \"\")\n");
}
else {
vmenu = new Vector();
if(mStru.length==0 || mStru==null)
{
tmenu.setStrName("员工" + operid + "没有你拥有的菜单权限"); //初始化根
retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>" + //根节点的SCRIPT
tmenu.getStrName() + "</font>\", \"\")\n");
return retMenuscript_buffer.toString();
}
for (int i = 0; i < mStru.length; i++) { //初始化矢量集合
if (mStru[i].getStrLink() == null || mStru[i].getStrLink().equals(""))
mStru[i].setStrLink(defaultLink);
vmenu.add(mStru[i]);
}
String strtmp = "员工" + operid + "菜单权限列表";
tmenu.setStrName(strtmp); //初始化根
retMenuscript_buffer.append( "foldersTree = gFld(\"<font size='2.5pt'>" + //根节点的SCRIPT
tmenu.getStrName() + "</font>\", \"\")\n");
//System.out.println("初始化树");
initMenu(tmenu, "0", vmenu); //初始化菜单树
viewMenuAll(tmenu.sub); //遍历菜单树,生成返回的脚本
}
}
return retMenuscript_buffer.toString();
}
/**
* 在配置文件中读取信息
* @param flag int 0 读取全部
* 1 读取有权限的菜单
* @param operid String 操作员编号
* @return String 显示字符串
*/
public String LoadProp(int flag,String operid)
{
try{
loadMenu(operid);
tmenu.setStrName("社区营销支撑系统");
retMenuscript_buffer.append("foldersTree = gFld(\"<font size='2.5pt'>"+ //根节点的SCRIPT
tmenu.getStrName()+"</font>\", \"\")\n");
//System.out.println("初始化树");
initMenu(tmenu,"0",vmenu);//初始化菜单树
//System.out.println("生成脚本");
// System.out.println("flag is :"+flag);
if(flag==1)//按权限生成
{
viewMenu(tmenu.sub);//遍历菜单树,生成返回的脚本
}
else//生成全部
{
viewMenuAll(tmenu.sub);//遍历菜单树,生成返回的脚本
}
/*retMenuscript=retMenuscript+"insDoc(foldersTree, gLnk(\"S\", \"页面暂存\", "+//加入其它控制菜单
"\"javascript:parent.hide.doSave(1)\"))\n"+
"insDoc(foldersTree, gLnk(\"R\", \"页面恢复\", "+
"\"/testmodle/restore/index.jsp\"))\n";
*/
//System.out.println(retMenuscript);
}catch (FileNotFoundException e){
return "";
}catch (IOException e){
System.out.println(e.toString());
return "";
}
//System.out.println(this.vmenu.size());
return retMenuscript_buffer.toString();
}
/**
* 载入菜单
* @param operid String 操作员编号
* @throws NumberFormatException
* @throws IOException
* @return Vector 菜单数组
*/
public Vector loadMenu(String operid) throws NumberFormatException,
IOException {
Properties m_MenuProps = new Properties();
String title=null;
String right=null;
String grade=null;
//String grade_id=null;
String parent_id=null;
String link = null;
// operInfo = new operinfo() ;
// operInfo.setClsOperInfo(operinfo);
// System.out.println("operid loda="+operInfo.getOperID());
//得到配置文件的绝对路径
//String strFilePath="E:\\config\\menu.prop";
//从配置文件中读取配置信息
operid.trim();
m_MenuProps.load(new FileInputStream(strFilePath+operid+".prop")) ;
// m_MenuProps.load(new FileInputStream(strFilePath+operInfo.getOperID()+".prop")) ;
// m_MenuProps.load(new FileInputStream("config\\menucfg1234.prop")) ;
// System.out.println("读取菜单配置文件:"+strFilePath+operInfo.getOperID()+".prop");
int count=Integer.parseInt(m_MenuProps.getProperty("MenuCount"));
menu menutmp=null;
vmenu = new Vector();
for(int i=0;i<count;i++)
{
menutmp = new menu();
title=m_MenuProps.getProperty("Menu"+"_title"+String.valueOf(i+1));
right=m_MenuProps.getProperty("Menu"+"_right"+String.valueOf(i+1));
grade=m_MenuProps.getProperty("Menu"+"_grade"+String.valueOf(i+1));
parent_id=m_MenuProps.getProperty("Menu"+"_parent_id"+String.valueOf(i+1));
link=m_MenuProps.getProperty("Menu"+"_link"+String.valueOf(i+1));
if(link==null||link.equals(""))
link=defaultLink;
menutmp.setStrName(title);
menutmp.setStrID(right);
menutmp.setStrGrade(grade);
menutmp.setStrParentId(parent_id);
menutmp.setStrLink(link);
vmenu.add(menutmp);//加入节点集合
}
return vmenu;
}
/**
* 获得某一个分支树
* @ id 分支的根的id
* @ staffid 员工工号
*/
public Vector getTree(String id,String staffid)
{
this.LoadProp(0,null);
this.searchTree(tmenu.sub,id);//开始查找
vSQL = new Vector();
generateSQL(searchtree,staffid);
return vSQL;
}
/**
* 生成SQL语句,遍历树
* @
*/
public void generateSQL(Vector menusub,String staffid)
{
menu temp=null;//获得节点信息的临时变量
for(int i=0;i<menusub.size();i++)
{
temp = (menu)menusub.elementAt(i);//获得一个节点
String insertsql="insert into STAFF_ROLE(STAFF_ID,ROLE_ID) values("+staffid+","+
temp.getStrID()+")";
vSQL.add(insertsql);
if(temp.sub!=null)//判断是否又子节点,如果有则递归
{
generateSQL(temp.sub,staffid);
}
}
}
/**
* 查找分支树
* @ id 分支的根的id
*/
public void searchTree(Vector menusub,String id)
{
menu temp=null;//获得节点信息的临时变量
for(int i=0;i<menusub.size();i++)
{
if(searchtree!=null)
{
return;
}
temp = (menu)menusub.elementAt(i);//获得一个节点
if(temp.getStrID().equals(id))//判断该节点是否为所查找的节点
{
searchtree=new Vector();
searchtree.add(temp);
return;
}
if(temp.sub!=null)//判断是否又子节点,如果有则递归
{
searchTree(temp.sub,id);//递归调用
}
}
}
/**
* 判断某一节点是否有子节点
* @id 节点id
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -