package com.vci.client.framework.delegate;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import com.vci.client.ClientSession;
|
import com.vci.client.common.objects.UserEntityObject;
|
import com.vci.client.framework.rightdistribution.object.RoleRightObject;
|
import com.vci.client.ui.exception.VCIException;
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.framework.data.RoleRightInfo;
|
|
public class RoleRightClientDelegate extends ClientBaseDelegate {
|
|
public RoleRightClientDelegate(UserEntityObject userEntityObject) {
|
super(userEntityObject);
|
}
|
|
public RoleRightClientDelegate() {
|
}
|
|
/**
|
* 保存角色功能模块权限表
|
*
|
* @param moduleRightObject
|
* @return
|
* @throws VCIError
|
*/
|
public boolean saveRoleRight(RoleRightObject[] roleRightObjs,String roleId,String userName) throws VCIException{
|
try{
|
RoleRightInfo[] roleRightInfos = new RoleRightInfo[roleRightObjs.length];
|
for(int i = 0;i < roleRightObjs.length;i++){
|
roleRightInfos[i] = changeRoleRightObjToInfo(roleRightObjs[i]);
|
}
|
return ClientSession.getFrameworkService().saveRoleRight(roleRightInfos,roleId,userName, userEntityInfo);
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
}
|
public boolean removeRoleRight(RoleRightObject[] roleRightObjs,String roleId,String userName) throws VCIException{
|
try{
|
RoleRightInfo[] roleRightInfos = new RoleRightInfo[roleRightObjs.length];
|
for(int i = 0;i < roleRightObjs.length;i++){
|
roleRightInfos[i] = changeRoleRightObjToInfo(roleRightObjs[i]);
|
}
|
return ClientSession.getFrameworkService().removeRoleRight(roleRightInfos,roleId,userName, userEntityInfo);
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
}
|
/**
|
* 增加角色功能模块权限表
|
*
|
* @param moduleRightObject
|
* @return
|
* @throws VCIError
|
*/
|
public boolean addRoleRight(RoleRightObject[] roleRightObjs,String roleId,String userName) throws VCIException{
|
try{
|
RoleRightInfo[] roleRightInfos = new RoleRightInfo[roleRightObjs.length];
|
for(int i = 0;i < roleRightObjs.length;i++){
|
roleRightInfos[i] = changeRoleRightObjToInfo(roleRightObjs[i]);
|
}
|
return ClientSession.getFrameworkService().addRoleRight(roleRightInfos,roleId,userName, userEntityInfo);
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
}
|
|
/**
|
* 获取角色权限,用于权限分配时加载角色权限树
|
* @param roleId
|
* @return
|
* @throws VCIException
|
*/
|
public RoleRightObject[] getRoleRightList(String roleId,String userName) throws VCIException {
|
RoleRightObject[] roleRightObjs = null;
|
try{
|
RoleRightInfo[] infos = ClientSession.getFrameworkService().getRoleRightList(roleId,userName);
|
roleRightObjs = new RoleRightObject[infos.length];
|
for(int i = 0;i < infos.length;i++){
|
roleRightObjs[i] = changeRoleRightInfoToObj(infos[i]);
|
}
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
return roleRightObjs;
|
}
|
|
/**
|
* 根据角色类型获取权限
|
* @param roleId
|
* @return
|
* @throws VCIException
|
*/
|
public RoleRightObject[] getRoleRightListByType(String[] rightType) throws VCIException {
|
RoleRightObject[] roleRightObjs = null;
|
try{
|
RoleRightInfo[] infos = ClientSession.getFrameworkService().getRoleRightListByType(rightType);
|
roleRightObjs = new RoleRightObject[infos.length];
|
for(int i = 0;i < infos.length;i++){
|
roleRightObjs[i] = changeRoleRightInfoToObj(infos[i]);
|
}
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
return roleRightObjs;
|
}
|
/**
|
* 根据模块ID和用户名获取权限
|
* @param funcId
|
* @param userName
|
* @return
|
* @throws VCIException
|
*/
|
public RoleRightObject[] getRoleRightByModule(String funcId,String userName) throws VCIException {
|
RoleRightObject[] roleRightObjs = null;
|
try{
|
RoleRightInfo[] infos = ClientSession.getFrameworkService().getRoleRightByModule(funcId,userName);
|
roleRightObjs = new RoleRightObject[infos.length];
|
for(int i = 0;i < infos.length;i++){
|
roleRightObjs[i] = changeRoleRightInfoToObj(infos[i]);
|
}
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
return roleRightObjs;
|
}
|
|
/**
|
* 从缓冲中获取当前用户对当前操作的操作权限
|
* @param funcId
|
* @param userName
|
* @param currentUserRoleRights
|
* @return
|
* @throws VCIException
|
*/
|
public RoleRightObject[] getRoleRightByModule(String funcId,String userName, RoleRightObject[] currentUserRoleRights) throws VCIException {
|
RoleRightObject[] roleRightObjs = null;
|
try{
|
if (currentUserRoleRights == null || currentUserRoleRights.length == 0) {
|
RoleRightInfo[] infos = ClientSession.getFrameworkService().getRoleRightByModule(funcId,userName);
|
roleRightObjs = new RoleRightObject[infos.length];
|
for(int i = 0;i < infos.length;i++){
|
roleRightObjs[i] = changeRoleRightInfoToObj(infos[i]);
|
}
|
} else {
|
roleRightObjs = getCurrentUserRoleRightsFromCache(funcId, currentUserRoleRights);
|
}
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
return roleRightObjs;
|
}
|
|
/**
|
* 从传入的缓冲值中获取当前用户对传入功能模块的操作权限
|
* @param funcId
|
* @param currentUserRoleRights
|
* @return
|
*/
|
private RoleRightObject[] getCurrentUserRoleRightsFromCache(String funcId, RoleRightObject[] currentUserRoleRights) {
|
if (currentUserRoleRights == null) {
|
return new RoleRightObject[0];
|
}
|
List<RoleRightObject> list = new ArrayList<RoleRightObject>();
|
for (int i = 0; i < currentUserRoleRights.length; i++) {
|
if (currentUserRoleRights[i].getFuncId().equals(funcId)) {
|
list.add(currentUserRoleRights[i]);
|
}
|
}
|
return list.toArray(new RoleRightObject[0]);
|
}
|
|
/**
|
* 根据用户名获取用户权限
|
* @param userName
|
* @return
|
* @throws VCIException
|
*/
|
public RoleRightObject[] getRoleRightByUserName(String userName) throws VCIException {
|
RoleRightObject[] roleRightObjs = null;
|
try{
|
RoleRightInfo[] infos = ClientSession.getFrameworkService().getRoleRightByUserName(userName);
|
roleRightObjs = new RoleRightObject[infos.length];
|
for(int i = 0;i < infos.length;i++){
|
roleRightObjs[i] = changeRoleRightInfoToObj(infos[i]);
|
}
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
return roleRightObjs;
|
}
|
|
/**
|
* 根据用户名获取用户具有的功能模块权限
|
* @param userName
|
* @return
|
* @throws VCIException
|
*/
|
public RoleRightObject[] getFunctionRoleRightByUserName(String userName) throws VCIException {
|
RoleRightObject[] roleRightObjs = null;
|
try{
|
RoleRightInfo[] infos = ClientSession.getFrameworkService().getFunctionRoleRightByUserName(userName);
|
roleRightObjs = new RoleRightObject[infos.length];
|
for(int i = 0;i < infos.length;i++){
|
roleRightObjs[i] = changeRoleRightInfoToObj(infos[i]);
|
}
|
}catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
return roleRightObjs;
|
}
|
|
/**
|
* ModuleRightObject转换为ModuleRightEntityInfo
|
*
|
* @param rmDataObject
|
* @return
|
*/
|
private RoleRightInfo changeRoleRightObjToInfo(RoleRightObject obj) {
|
RoleRightInfo info = new RoleRightInfo();
|
info.id = obj.getId() == null ? "" : obj.getId();
|
info.funcId = obj.getFuncId() == null ? "" : obj.getFuncId();
|
info.roleId = obj.getRoleId() == null ? "" : obj.getRoleId();
|
info.rightType = obj.getRightType();
|
info.rightValue = obj.getRightValue();
|
|
info.createTime = obj.getCreateTime().getTime();
|
info.createUser = obj.getCreateUser() == null ? "" : obj.getCreateUser();
|
info.modifyTime = obj.getModifyTime().getTime();
|
info.modifyUser = obj.getModifyUser() == null ? "" : obj.getModifyUser();
|
info.licensor = obj.getLicensor() == null ? "" : obj.getLicensor();
|
return info;
|
}
|
|
/**
|
* ModuleRightEntityInfo转换为ModuleRightObject
|
*
|
* @param info
|
* @return
|
*/
|
private RoleRightObject changeRoleRightInfoToObj(RoleRightInfo info) {
|
RoleRightObject obj = new RoleRightObject();
|
obj.setId(info.id);
|
obj.setFuncId(info.funcId);
|
obj.setRoleId(info.roleId);
|
obj.setRightValue(info.rightValue);
|
obj.setRightType(info.rightType);
|
return obj;
|
}
|
|
public boolean clearRight(String roleOid, String userName, short functionType) throws VCIException{
|
if(StringUtils.isBlank(roleOid)){
|
throw new VCIException("没有角色的主键,不能清除权限");
|
}
|
try {
|
return ClientSession.getFrameworkService().clearRoleRight(roleOid,userName, userEntityInfo,functionType);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
throw new VCIException(String.valueOf(e.code),e.messages);
|
}
|
}
|
|
|
}
|