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

📄 resassociatecommand.java

📁 java实现的可配置的工作流引擎,采用jsp+javabean实现
💻 JAVA
字号:
package com.hongsoft.res.command;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.Session;

import com.hongsoft.agile.Agile;
import com.hongsoft.agile.AgileConnection;
import com.hongsoft.res.database.PrivilegeTypeCache;
import com.hongsoft.res.dispatcher.BaseCommand;
import com.hongsoft.res.formbean.ResAssociateFormBean;
import com.hongsoft.res.pojo.OrgUnit;
import com.hongsoft.res.pojo.ResManager;
import com.hongsoft.res.pojo.ResObjectElement;
import com.hongsoft.res.pojo.ResType;
import com.hongsoft.res.pojo.Role;
import com.hongsoft.res.pojo.User;


public class ResAssociateCommand
    extends BaseCommand {
  /**
   * 具体的处理过程
   * @throws com.hongsoft.res.exception.BaseException
   */
  public void command() throws Exception {
    //To do 执行修改资源对象关系
    ResAssociateFormBean bean = (ResAssociateFormBean) request.getAttribute(
        ResParamName.RES_ASSOCIATE_FORM_BEAN);
    String returnView = request.getReturnView();
    StringBuffer sb = new StringBuffer("res.associate.");
    String cmdType = request.getCommandType();
    //实现具体的业务逻辑处理    
    AgileConnection ac=Agile.connectToServer();
    if ("loadUserRole".equals(cmdType)) {
      loadUserRole(ac.getHibernateSession(),bean);
    }
    else if ("loadOrgUser".equals(cmdType)) {
      loadOrgUser(ac.getHibernateSession(),bean);
    }
    else if ("loadUserPrivilege".equals(cmdType)) {
      loadPrivilege(ac.getHibernateSession(),bean, true);
    }
    else if ("loadRolePrivilege".equals(cmdType)) {
      loadPrivilege(ac.getHibernateSession(),bean, false);
    }
    else if ("modify".equals(cmdType)) { //修改Role,Org,User的关系
    	ResManager.modifyResObjectAssociate(ac.getHibernateSession(),bean.getResID(),
                bean.getSelectedResIDs());
      request.setAttribute(ResParamName.TIP_PARAM, "操作成功!");
    }
    else if ("modifypri".equals(cmdType)) {
      modifyResPrivAssociate(ac.getHibernateSession(),bean); //cmdType为修改权限标识
    }
    Agile.disConnectServer(ac,true);	
    sb.append(returnView);
    //forward页面参见pmes_view.map配置文件
    this.forward(sb.toString(), request, response);
  }

  /**
   * 获取指定ID的资源对象(用户包含的角色),最多只有两层关系
   * @param bean,包含用户ID的Bean
   */
  private void loadOrgUser(Session session,ResAssociateFormBean bean) throws Exception {    
      ResObjectElement resObjElement = ResManager.getResObjectElment(session,bean.
          getResID());
      OrgUnit orgUnit = ResManager.getOrgUnit(session,bean.getResID());
      bean.setResName(orgUnit.getName());
      //List 包括用户,也可能包括组织信息(先不考虑),以resObjElement的type来区分user=1,org=2,如果是ORG,可能会包括多层,在此只需考虑它的第一个子层 by zgk
      List list = resObjElement.getChildren();
      if (list != null && list.size() != 0) {
        long[] selectedID = new long[list.size()]; //已选择中的用户ID,不包括组织
        for (int i = 0; i < list.size(); i++) {
          ResObjectElement selectedObj = (ResObjectElement) list.get(i);
          if (selectedObj.getType() == ResType.USER) {
            selectedID[i] = selectedObj.getID();
          }
          else {
            selectedID[i] = -1;
          }
        }
        bean.setSelectedResIDs(selectedID);
      }
      //获取所有用户ID
      List allList = ResManager.searchUser(session,"", "", true, true, 0,
                                           ResManager.searchUserCount(session,"", "", true, true));
      bean.setAllResObj(allList.iterator());
      request.setAttribute(ResParamName.RES_ASSOCIATE_FORM_BEAN, bean);   
  }

  /**
   * 获取指定ID的资源对象(用户包含的角色),最多只有两层关系
   * @param bean,包含用户ID的Bean
   */
  private void loadUserRole(Session session,ResAssociateFormBean bean) throws Exception {    
      ResObjectElement resObjElement = ResManager.getResObjectElment(session,bean.
          getResID());
      User user = ResManager.getUser(session,bean.getResID());
      bean.setResName(user.getName());
      List list = resObjElement.getChildren();
      //获取已指定的角色
      if (list != null && list.size() != 0) {
        long[] selectedID = new long[list.size()];
        for (int i = 0; i < list.size(); i++) {
          ResObjectElement selectedObj = (ResObjectElement) list.get(i);
          selectedID[i] = selectedObj.getID();
        }
        bean.setSelectedResIDs(selectedID);
      }
      //获取所有角色
      List allList = ResManager.searchRole(session,"", true);
      bean.setAllResObj(allList.iterator());
      request.setAttribute(ResParamName.RES_ASSOCIATE_FORM_BEAN, bean);    
  }

  /**
   * 获取指定ID的资源对象(用户包含的角色),最多只有两层关系
   * @param bean,包含用户ID的Bean
   * @param isUserPrivilege,是否加载用户的权限,false时为加载角色的权限
   * 此方法同时也用于加载Role的权限(于2003-12-12日更新此方法)
   */
  private void loadPrivilege(Session session,ResAssociateFormBean bean, boolean isUserPrivilege) throws
      Exception {    
      if (isUserPrivilege) {
        User user = ResManager.getUser(session,bean.getResID());
        bean.setResName(user.getName());
      }
      else {
        Role role = ResManager.getRole(session,bean.getResID());
        bean.setResName(role.getName());
      }
      Set setSelected = ResManager.getResPriv(session,bean.getResID());
      if (setSelected != null && setSelected.size() > 0) { //此资源赋有权限
        Iterator itr = setSelected.iterator();       
        long[] selectedIDs10 = new long[setSelected.size()]; //选中的权限类型ID
        for (int i = 0; itr.hasNext(); i++) {
            String resPriv = (String) itr.next();
            selectedIDs10[i] = Integer.parseInt(resPriv);                   
        }      
        bean.setSelectedResIDs10(selectedIDs10);
      }
      bean.setAllResObj(PrivilegeTypeCache.getAllType(session).iterator());
      request.setAttribute(ResParamName.RES_ASSOCIATE_FORM_BEAN, bean);    
  }

  /**
   * 处理修改权限
   * @param bean
   * @throws BaseException
   */
  private void modifyResPrivAssociate(Session session,ResAssociateFormBean bean)throws Exception{
    	long[] selectedPriv10=bean.getSelectedResIDs10();
    	ArrayList alSelected=new ArrayList(10);
          for (int i = 0; i < selectedPriv10.length; i++) { //权限
            alSelected.add(String.valueOf((int)selectedPriv10[i]));
          }        
        ResManager.modifyPriv(session,bean.getResID(),alSelected);    
  }
}

⌨️ 快捷键说明

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