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

📄 managingroledao.java

📁 公司自己开发的工作流引擎
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * @param operationList List  操作权限列表(String...)
   * @throws SQLException
   */
  public void addRoleOperation(String roleId,String managingRoleId,
      List operationList)
      throws SQLException{
    String sql= "insert into wf_managed_operation_auth "+
        "select role_managedRole_id as role_managed_id,? as operation_id,"+
        "'1' as operation_value from wf_role_manage_role "+
        "where role_id = ? and managed_role_id = ?";

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt=conn.prepareStatement(sql);

      if(operationList!=null&&operationList.size()>0){
        for(int i=0;i<operationList.size();i++){

          ptmt.setString(1,(String)operationList.get(i));
          ptmt.setString(2,managingRoleId);
          ptmt.setString(3,roleId);
          ptmt.addBatch();
        }
        ptmt.executeBatch();
      }
    }
    catch(SQLException sqle){
      logger.debug("\n=========添加角色的操作授权失败(roleId = "+roleId+
          "\tmanagingRoleId = "+managingRoleId+")==========");

      sqle.printStackTrace();
      throw sqle;
    }
    finally{

      WorkflowDBConnectionManager.getInstance().close(rowset);
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  /**
   * 按角色类型查询所有角色
   *
   * @param areaId String  区域ID
   * @param roleType String  角色类型
   * @return List
   * @throws Exception
   */
  public List getRoleTree(String areaId,String roleType)
      throws Exception{
    List roleList=new ArrayList();
    String sql=null;
    if("oracle".equalsIgnoreCase(DB_TYPE)){
      sql = "select wf_role.*,FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children " +
        "from wf_role where role_type = ? and role_state = 1";
    }else{
      sql = "select wf_role.*,dbo.FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children " +
        "from wf_role where role_type = ? and role_state = 1";
    }

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt=conn.prepareStatement(sql);
      ptmt.setString(1,roleType);

      rowset=ptmt.executeQuery();
      rsToList(rowset,roleList);

    }
    catch(SQLException sqle){

      logger.debug("\n========="+"按角色类型查询角色失败(roleType = "+roleType+
          ")==========");
      sqle.printStackTrace();
      throw sqle;
    }
    finally{

      WorkflowDBConnectionManager.getInstance().close(rowset);
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }

    return roleList;
  }

  /**
   * 根据用户ID(用户所属的管理角色)及角色类型,查询角色
   *
   * @param areaId String
   * @param roleId String  角色ID
   * @param userId String  用户ID
   * @param isAdmin boolean  是否是管理员,管理员能见所有角色
   * @return List
   * @throws Exception
   */
  public List getRoleTree(String areaId,String roleType,String userId)
      throws Exception{
    List roleList=new ArrayList();
    String sql=null;

    if("oracle".equalsIgnoreCase(DB_TYPE)){
      sql = "select wf_role.*,FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children "+
        "from wf_role where role_type = ? and (role_id in "+
        "     (select managed_role_id from wf_role_manage_role a, "+
        "       (select role_id from wf_org_user_role where user_id = ?) b "+
        "        where a.role_id = b.role_id) or creator = ?)";
    }else{
      sql = "select wf_role.*,dbo.FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children "+
        "from wf_role where role_type = ? and (role_id in "+
        "     (select managed_role_id from wf_role_manage_role a, "+
        "       (select role_id from wf_org_user_role where user_id = ?) b "+
        "        where a.role_id = b.role_id) or creator = ?)";
    }

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt=conn.prepareStatement(sql);
      ptmt.setString(1,roleType);
      ptmt.setString(2,userId);
      ptmt.setString(3,userId);

      rowset=ptmt.executeQuery();
      rsToList(rowset,roleList);

    }
    catch(SQLException sqle){
      logger.debug("\n========="+"用户("+userId+")查询角色类型为 "+roleType+
          " 的角色失败======");
      sqle.printStackTrace();
      throw sqle;
    }finally{

      WorkflowDBConnectionManager.getInstance().close(rowset);
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }

    return roleList;
  }

  /**
   * 转换ResultSet为List
   */
  private void rsToList(ResultSet rowset,List roleList)
      throws SQLException{
    RoleNodeFormbean roleForm=null;

    if(rowset!=null){
      while(rowset.next()){
        roleForm=new RoleNodeFormbean();

        roleForm.setRoleId(rowset.getString("role_id"));
        roleForm.setRoleName(rowset.getString("role_name"));
        roleForm.setRoleCode(rowset.getString("role_code"));
        roleForm.setOrder(rowset.getString("role_order"));
        roleForm.setRoleType(rowset.getString("role_type"));
        roleForm.setRoleDesc(rowset.getString("role_desc"));
        roleForm.setHasChildren(rowset.getString("has_children"));

        roleList.add(roleForm);
      }
    }
  }

  /**
   * 保存管理角色和普通角色的管理关系
   *
   * @param managedKey String  关系主键
   * @param managingRoleId String  管理角色ID
   * @param roleId String  普通角色ID
   * @return int  成功保存标识,因为已存在的关系不需要重复写入,所以返回0,否则返回1
   * @throws Exception
   */
  public int saveManagedRole(String managedKey,String managingRoleId,String roleId)
      throws Exception{
    String sql=null;
    if("oracle".equalsIgnoreCase(DB_TYPE)){
      sql = "insert into wf_role_manage_role select ? as role_managedRole_id," +
        "? as role_id,? as managed_role_id from dual " +
        "where not exists(select role_id from wf_role_manage_role where " +
        " role_id = ? and managed_role_id = ?)";

    }else{
      sql = "insert into wf_role_manage_role select top 1 ? as role_managedRole_id," +
        "? as role_id,? as managed_role_id from sysobjects " +
        "where not exists(select role_id from wf_role_manage_role where " +
        " role_id = ? and managed_role_id = ?)";
    }

    int status = 0;

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt=conn.prepareStatement(sql);

      ptmt.setString(1,managedKey);
      ptmt.setString(2,managingRoleId);
      ptmt.setString(3,roleId);
      ptmt.setString(4,managingRoleId);
      ptmt.setObject(5,roleId);

      status = ptmt.executeUpdate();
      return status;

    }catch(Exception e){

      e.printStackTrace();
      throw e;
    }finally{

      WorkflowDBConnectionManager.getInstance().close(rowset);
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  /**
   * 保存新增管理关系(管理角色和普通角色)的操作权限
   *
   * @param managedKey String  关系主键
   * @param operationList List  操作权限列表(String...)
   * @throws SQLException
   */
  public void saveRoleAuthedOperation(String managedKey,List operationList)
      throws SQLException{
    String sql = "insert into wf_managed_operation_auth(role_managed_id," +
        "operation_id,operation_value) values(?,?,'1')";

    try{
          conn=WorkflowDBConnectionManager.getInstance().getConnection();
          ptmt=conn.prepareStatement(sql);

          for(int j=0;j<operationList.size();j++){
            ptmt.setString(1,managedKey);
            ptmt.setObject(2,operationList.get(j));

            ptmt.addBatch();
          }
          ptmt.executeBatch();

        }catch(SQLException sqle){
          logger.debug("\n=========保存角色操作授权时出错======");
          sqle.printStackTrace();
          throw sqle;
        }
        finally{

          WorkflowDBConnectionManager.getInstance().close(rowset);
          WorkflowDBConnectionManager.getInstance().close(ptmt,false);
          WorkflowDBConnectionManager.getInstance().close(conn);
        }

  }

  /**
   * 获取角色列表中所有角色的全父角色ID(即该角色的父角色ID,父角色的父角色ID,以此类推)的Set
   *
   * @param roleIdList List  角色ID列表(String...)
   * @return Set
   * @throws SQLException
   */
  public Set getRoleParentIdSet(List roleIdList)
      throws SQLException{
    String sql=null;
    if("oracle".equalsIgnoreCase(DB_TYPE)){
      sql = "select FUNC_GET_ROLE_ALL_PARENT_ROLE(?) from wf_role where rownum <2";
    }else{
      sql = "select top 1 dbo.FUNC_GET_ROLE_ALL_PARENT_ROLE(?) from wf_role";
    }

    String parentIds=null;
    StringTokenizer tokenizer=null;
    Set parentIdSet=new HashSet();

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt=conn.prepareStatement(sql);

      for(int i=0;i<roleIdList.size();i++){
        ptmt.setObject(1,roleIdList.get(i));
        rowset=ptmt.executeQuery();

        if(rowset.next()){
          parentIds=rowset.getString(1);
        }
        rowset.close();

        parentIds=parentIds==null?"":parentIds;
        tokenizer=new StringTokenizer(parentIds,",");
        while(tokenizer.hasMoreTokens()){
          parentIdSet.add(tokenizer.nextToken());
        }
      }
    }
    catch(SQLException sqle){
      logger.debug("\n=========获取角色的全上级角色ID时出错======");
      sqle.printStackTrace();
      throw sqle;
    }
    finally{

      WorkflowDBConnectionManager.getInstance().close(rowset);
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }

    return parentIdSet;
  }

  public void removeManagedRel(String managingRoleId,String roleId)throws Exception{
    String sql = "delete from wf_role_manage_role where role_id = ? and managed_role_id = ?";

    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      ptmt=conn.prepareStatement(sql);
      ptmt.setString(1,managingRoleId);
      ptmt.setString(2,roleId);

      ptmt.executeUpdate();
     }
    catch(SQLException sqle){
      logger.debug("\n=========删除角色管理关系时出错======");
      sqle.printStackTrace();
      throw sqle;
    }
    finally{

      WorkflowDBConnectionManager.getInstance().close(rowset);
      WorkflowDBConnectionManager.getInstance().close(ptmt,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }


}

⌨️ 快捷键说明

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