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

📄 mymenucfg.java

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