📄 rightcfg.java
字号:
package com.dreamtel.rightCtrl.dataright;
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.*;
import java.util.*;
import java.text.*;
import com.dreamtel.global.ComFuns;
import com.dreamtel.rightCtrl.menuright.*;
/**
* Title:menuCfgnew
* Description:读写菜单配置文件(递归),不限制菜单级别
* Copyright: Copyright (c) 2004
* Company:dreamtel
* @author weij
* @modify: weij
* @date: 20040528
* @version 1.1
*/
public class rightCfg
{
private String strPropName="menu.prop";//配置文件明
private dbConnect DBConn=null;//数据库链接
private DBResultset rs=null;//结果集
private menu[] mStru=null;//菜单结构数组
private menu[] mStru1=null;//菜单结构数组
private menu[] mStru2=null;//菜单结构数组
private menu[] mStru3=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 retMenuscript="";//返回页面的SCRIPT语句
private Vector searchtree=null;//查找的分支
private Vector vSQL=null;//返回的sql集合
private StringBuffer retMenuscript_buffer=new StringBuffer();
private String conn_code=null;
public rightCfg(String conn_code)
{
this.conn_code = conn_code;
}
public Vector getVmenu()
{
return this.vmenu;
}
/**
* 直接从数据库中读取菜单
* @ RETURN 用于显示菜单的script代码
*/
public String Lodafromdb()
{
dbConnect dbconn= new dbConnect(conn_code);
try {
dbconn.runProc("EXEC PR_CREATE_DATATREE", null);
}
catch (Exception ex) {
ex.printStackTrace();
}
// createAllRightItem(conn_code);
// long t5=ComFuns.getDoTime();
this.ReadData();
// long t6=ComFuns.getDoTime();
// System.out.println("getData time: "+(t6-t5));
vmenu = new Vector();
// long t7=ComFuns.getDoTime();
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]);
}
// long t8=ComFuns.getDoTime();
// System.out.println("vmenuinit time: "+(t8-t7));
// long t9=ComFuns.getDoTime();
tmenu.setStrName("所有数据权限列表");//初始化根
retMenuscript_buffer.append("foldersTree = gFld(\"<font size='2.5pt'>"+ //根节点的SCRIPT
tmenu.getStrName()+"</font>\", \"\")\n");
// long t10=ComFuns.getDoTime();
// System.out.println("getData time: "+(t10-t9));
// System.out.println("初始化数据权限树");
// long t1=ComFuns.getDoTime();
initMenu(tmenu,"0",vmenu);//初始化菜单树
// long t2=ComFuns.getDoTime();
// System.out.println("initMenu time="+(t2-t1));
// long t3=ComFuns.getDoTime();
viewMenuAll(tmenu.sub);//遍历菜单树,生成返回的脚本
// long t4=ComFuns.getDoTime();
// System.out.println("viewMenuAll time="+(t4-t3));
return retMenuscript_buffer.toString();
}
/**
* 生成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
*/
public boolean isHaveLeaf(String id)
{
menu tmp=null;
for(int i=0;i<vmenu.size();i++)
{
tmp=(menu)vmenu.elementAt(i);
if(tmp.getStrParentId().equals(id))
{
return true;
}
}
return false;
}
/**
* 初始化menu
* 递归算法,为树型菜单初始化,为其添加叶子
* @menuIn 被初始化的节点
* @parent_id 被初始化的节点的id
* @vmenuIn 未被初始化的节点
*/
public void initMenu(menu menuIn,String id,Vector vmenuIn)
{
menu temp=null;//获得节点信息的临时变量
for(int i=0;i<vmenuIn.size();i++)
{
temp=(menu)vmenuIn.elementAt(i);//获得一个未被初始化的节点
if(menuIn.sub==null) //如果该节点的叶子未初始化
{
menuIn.initSub();
}
if(temp.getStrParentId().equals(id))//如果获得的未被初始化的节点是叶子节点
{
menuIn.sub.add(temp);//添加叶子节点
vmenuIn.remove(i); //去掉处理过的节点
if(isHaveLeaf(temp.getStrID()))//判断节点是否有叶子节点
{
initMenu(temp,temp.getStrID(),vmenuIn);//递归,初始化其叶子
}
i--;//去掉节点后,计数器-1
}
}
}
/**
* 菜单遍历
* 递归程序
* @menusub 子节点的集合
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -