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

📄 rightcfg.java

📁 通过java语音实现灵活的权限控制功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -