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

📄 staffcfg.java

📁 通过java语音实现灵活的权限控制功能
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
package com.dreamtel.rightCtrl.staff;


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 com.dreamtel.rightCtrl.menuright.*;

/**
 * Title:menuCfgnew
 * Description:读写菜单配置文件(递归),不限制菜单级别
 * Copyright:    Copyright (c) 2004
 * Company:dreamtel
 * @author weij
 * @modify: weij
 * @date: 20040528
 * @version 1.1
 */


public class staffCfg
{

    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 StringBuffer retMenuscript_buffer=new StringBuffer();//返回页面的SCRIPT语句
    private Vector searchtree=null;//查找的分支
    private Vector vSQL=null;//返回的sql集合


    private String conn_code=null;


    public staffCfg(String conn_code)
    {
      this.conn_code = conn_code;
    }

    public Vector getVmenu()
    {
      return this.vmenu;
    }

/** @todo 从员工列表中所有数据 ALL_STAFF_RIGHTITEM */
    public String LoadAllStaffData()
    {
      dbConnect dbconn=  new dbConnect(conn_code);
     try {
       dbconn.runProc("EXEC PR_CREATE_STAFF", null);
     }
     catch (Exception ex) {
       ex.printStackTrace();
     }


        int ret=this.ReadAllStaffData();
        if(ret==1)
        {
          tmenu.setStrName("没有员工信息"); //初始化根
          retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>");
          retMenuscript_buffer.append(tmenu.getStrName());
          retMenuscript_buffer.append("</font>\", \"\")\n");
        }
        else
        {
          vmenu = new Vector();
          vmenu = new Vector();

          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 = "所有员工列表";
          tmenu.setStrName(strtmp); //初始化根
          retMenuscript_buffer.append("foldersTree = gFld(\"<font size='2.5pt'>");
          retMenuscript_buffer.append(tmenu.getStrName());
          retMenuscript_buffer.append("</font>\", \"\")\n");

          //System.out.println("初始化树");
          initMenu(tmenu, "0", vmenu); //初始化菜单树
          viewMenuAll(tmenu.sub); //遍历菜单树,生成返回的脚本
        }

        return retMenuscript_buffer.toString();
    }

    /**
     * 读取所有数据权限
     * @return int 成功为1,不成功为0
     */
    public int ReadAllStaffData()
    {
        int ret=0;
        String sql="select * from ALL_STAFF_RIGHTITEM order by INTID";
        dbConnect dbconn0 = new dbConnect(conn_code);
        try{
            rs=dbconn0.runQuery(sql);
            int iRow=rs.getRowSize();
            if(iRow==0) return ret=1;
            int i=0;
            mStru=new menu[iRow];
            while(rs.moveNext()){

                mStru[i]=new menu();
                mStru[i].setStrName(rs.fieldByName("STRNAME"));
                mStru[i].setStrID(rs.fieldByName("INTID"));
                mStru[i].setStrGrade(rs.fieldByName("GRADE"));
                mStru[i].setStrParentId(rs.fieldByName("PARENT_ID"));
                mStru[i].setStrLink("");
                mStru[i].setStrType(rs.fieldByName("INTKEY"));
                mStru[i].setStrMem(rs.fieldByName("STRMEM"));
                i++;
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return ret;
    }

    /**
     * 菜单遍历(无权限判断)
     * 递归程序
     * @menusub 子节点的集合
     */
    public void viewMenuAll(Vector menusub)
    {
        menu temp=null;//获得节点信息的临时变量

        for(int i=0;i<menusub.size();i++)
        {
            temp = (menu)menusub.elementAt(i);//获得一个节点


            if(temp.sub!=null)//判断是否又子节点,如果有则递归
            {
                if(temp.getStrParentId().equals("0"))//如果是第一级菜单节点
                {
                    retMenuscript_buffer.append("id_");
                    retMenuscript_buffer.append(temp.getStrID());
                    retMenuscript_buffer.append("=insFld(foldersTree, gFld(\"");
                    retMenuscript_buffer.append(temp.getStrName());
                    retMenuscript_buffer.append("\",\"javascript:parent.basefrm.basefrm.initValue(");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrMem());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrTpye());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrGrade());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrID());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrParentId());
                    retMenuscript_buffer.append("\\\")");
                    retMenuscript_buffer.append("\"))\n");;
                }
                else
                {
                    retMenuscript_buffer.append("id_");
                    retMenuscript_buffer.append(temp.getStrID());
                    retMenuscript_buffer.append("=insFld(id_");
                    retMenuscript_buffer.append(temp.getStrParentId());
                    retMenuscript_buffer.append(", gFld(\"");
                    retMenuscript_buffer.append(temp.getStrName());
                    retMenuscript_buffer.append("\",\"javascript:parent.basefrm.basefrm.initValue(");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrMem());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrTpye());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrGrade());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrID());
                    retMenuscript_buffer.append("\\\",");
                    retMenuscript_buffer.append("\\\"");
                    retMenuscript_buffer.append(temp.getStrParentId());
                    retMenuscript_buffer.append("\\\")");
                    retMenuscript_buffer.append("\"))\n");                     //去掉注释即调试用
                }
                viewMenuAll(temp.sub);
            }
            else//无子节点
            {
                if(temp.getStrParentId().equals("0"))//如果是第一级菜单节点
                {
                  retMenuscript_buffer.append("id_");
                                      retMenuscript_buffer.append(temp.getStrID());
                                      retMenuscript_buffer.append("=insFld(foldersTree, gFld(\"");
                                      retMenuscript_buffer.append(temp.getStrName());
                                      retMenuscript_buffer.append("\",\"javascript:parent.basefrm.basefrm.initValue(");
                                      retMenuscript_buffer.append("\\\"");
                                      retMenuscript_buffer.append(temp.getStrMem());
                                      retMenuscript_buffer.append("\\\",");
                                      retMenuscript_buffer.append("\\\"");
                                      retMenuscript_buffer.append(temp.getStrTpye());
                                      retMenuscript_buffer.append("\\\",");
                                      retMenuscript_buffer.append("\\\"");
                                      retMenuscript_buffer.append(temp.getStrGrade());
                                      retMenuscript_buffer.append("\\\",");
                                      retMenuscript_buffer.append("\\\"");
                                      retMenuscript_buffer.append(temp.getStrID());
                                      retMenuscript_buffer.append("\\\",");
                                      retMenuscript_buffer.append("\\\"");
                                      retMenuscript_buffer.append(temp.getStrParentId());
                                      retMenuscript_buffer.append("\\\")");
                                      retMenuscript_buffer.append("\"))\n");;

                  /*
                    retMenuscript_buffer.append("id_");
                    retMenuscript_buffer.append(temp.getStrID());
                    retMenuscript_buffer.append("=insDoc(foldersTree, gLnk(\"S\",\"");
                    retMenuscript_buffer.append(temp.getStrName());
                    retMenuscript_buffer.append("\",\"javascript:parent.basefrm.initValue(");
                    retMenuscript_buffer.append("\\\\\\'");
                    retMenuscript_buffer.append(temp.getStrMem());
                    retMenuscript_buffer.append("\\\\\\',");
                    retMenuscript_buffer.append("\\\\\\'");
                    retMenuscript_buffer.append(temp.getStrTpye());
                    retMenuscript_buffer.append("\\\\\\',");
                    retMenuscript_buffer.append("\\\\\\'");
                    retMenuscript_buffer.append(temp.getStrGrade());
                    retMenuscript_buffer.append("\\\\\\',");
                    retMenuscript_buffer.append("\\\\\\'");
                    retMenuscript_buffer.append(temp.getStrID());
                    retMenuscript_buffer.append("\\\\\\',");
                    retMenuscript_buffer.append("\\\\\\'");
                    retMenuscript_buffer.append(temp.getStrParentId());
                    retMenuscript_buffer.append("\\\\\\')");
                    retMenuscript_buffer.append("\"))\n"); */
                }
               else{
                 if (!temp.getStrMem().equalsIgnoreCase("44") &&
                     !temp.getStrMem().equalsIgnoreCase("11") &&
                     !temp.getStrMem().equalsIgnoreCase("22") &&
                     !temp.getStrMem().equalsIgnoreCase("99")
                     ) {
                   retMenuscript_buffer.append("id_");
                   retMenuscript_buffer.append(temp.getStrID());
                   retMenuscript_buffer.append("=insFld(id_");
                   retMenuscript_buffer.append(temp.getStrParentId());
                   retMenuscript_buffer.append(", gFld(\"");
                   retMenuscript_buffer.append(temp.getStrName());
                   retMenuscript_buffer.append(
                       "\",\"javascript:parent.basefrm.basefrm.initValue(");
                   retMenuscript_buffer.append("\\\"");
                   retMenuscript_buffer.append(temp.getStrMem());
                   retMenuscript_buffer.append("\\\",");
                   retMenuscript_buffer.append("\\\"");
                   retMenuscript_buffer.append(temp.getStrTpye());
                   retMenuscript_buffer.append("\\\",");
                   retMenuscript_buffer.append("\\\"");
                   retMenuscript_buffer.append(temp.getStrGrade());
                   retMenuscript_buffer.append("\\\",");
                   retMenuscript_buffer.append("\\\"");
                   retMenuscript_buffer.append(temp.getStrID());
                   retMenuscript_buffer.append("\\\",");
                   retMenuscript_buffer.append("\\\"");
                   retMenuscript_buffer.append(temp.getStrParentId());
                   retMenuscript_buffer.append("\\\")");
                   retMenuscript_buffer.append("\"))\n"); //去掉注释即调试用

                 }
                 else {
                   retMenuscript_buffer.append("id_");
                   retMenuscript_buffer.append(temp.getStrID());
                   retMenuscript_buffer.append("=insDoc(id_");
                   retMenuscript_buffer.append(temp.getStrParentId());
                   retMenuscript_buffer.append(", gLnk(\"S\",\"");
                   retMenuscript_buffer.append(temp.getStrName());
                   retMenuscript_buffer.append(
                       "\",\"javascript:parent.basefrm.initValue(");
                   retMenuscript_buffer.append("\\\\\\'");
                   retMenuscript_buffer.append(temp.getStrMem());
                   retMenuscript_buffer.append("\\\\\\',");
                   retMenuscript_buffer.append("\\\\\\'");
                   retMenuscript_buffer.append(temp.getStrTpye());
                   retMenuscript_buffer.append("\\\\\\',");
                   retMenuscript_buffer.append("\\\\\\'");
                   retMenuscript_buffer.append(temp.getStrGrade());
                   retMenuscript_buffer.append("\\\\\\',");
                   retMenuscript_buffer.append("\\\\\\'");
                   retMenuscript_buffer.append(temp.getStrID());
                   retMenuscript_buffer.append("\\\\\\',");
                   retMenuscript_buffer.append("\\\\\\'");
                   retMenuscript_buffer.append(temp.getStrParentId());
                   retMenuscript_buffer.append("\\\\\\')");
                   retMenuscript_buffer.append("\"))\n");

                 }
               }
            }
        }
    }




    /**
     * 读取员工权限
     * @return String
     */
    public String LoadStaffData()
    {
      createAllRightItem(conn_code);

        int ret=this.ReadStaffData();
        if(ret==1)
        {
          tmenu.setStrName("没有员工信息"); //初始化根
          retMenuscript_buffer.append("foldersTree = gFld(\"<font color='red' size='2.5pt'>" + //根节点的SCRIPT
              tmenu.getStrName() + "</font>\", \"\")\n");
        }
        else
        {
          vmenu = new Vector();

          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="所有员工列表";
          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();
    }


    /**
     * 查找分支树
     * @ 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
            }



        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -