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 list = new ArrayList(); 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); } } }