📄 resassociatecommand.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 + -