powerusereditaction.java

来自「Struts_Spring_Hibernate实现的基于RBAC的权限管理系统」· Java 代码 · 共 98 行

JAVA
98
字号
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.xaccp.struts.action;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.xaccp.biz.po.Power;
import com.xaccp.biz.po.Role;
import com.xaccp.biz.po.User;
import com.xaccp.biz.po.UserPower;
import com.xaccp.biz.po.UserRole;
import com.xaccp.biz.service.PowerService;
import com.xaccp.biz.service.UserService;
import com.xaccp.struts.form.PowerUserEditForm;
import com.xaccp.util.PowerConstants;
import com.xaccp.util.PowerUtil;


public class PowerUserEditAction extends Action {
	private UserService userService;
	private PowerService powerService;
	
	public PowerService getPowerService() {
		return powerService;
	}

	public void setPowerService(PowerService powerService) {
		this.powerService = powerService;
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		PowerUtil.assertUserInPower(request, PowerConstants.POWER_EDIT_USERS_POWER);
		
		PowerUserEditForm f = (PowerUserEditForm) form;
		
		User user = editUserByForm(f);
		
		userService.saveUser(user);
		
		return mapping.findForward("ok");
	}
	
	private User editUserByForm(PowerUserEditForm f) {

		//查出旧的user对象
		User user = userService.findUserById(f.getUserId());
		//修改计算策略
		user.setStrategy(f.getStrategy());
		
		//构建新的角色集合
		Set userRoles = new HashSet();
		for (int i = 0; i < f.getRoleIds().length; i++) {
			Role role = powerService.findRoleById(f.getRoleIds()[i]);
			UserRole userRole = new UserRole(role, user);
			userRoles.add(userRole);
		}
		//clear()方法用来删除旧的角色
		//addAll()方法添加新的角色
		user.getTblUserRoles().clear();
		user.getTblUserRoles().addAll(userRoles);
		
		//构建新的权限集合
		Set userPowers = new HashSet();
		for (int i = 0; f.getPowerStates()!=null && i < f.getPowerStates().length; i++) {
			//如果权限的状态为2,即默认状态则不处理
			if (f.getPowerStates()[i]!=2) {
				Power power = powerService.findPowerById(f.getPowerIds()[i]);
				UserPower userPower = new UserPower(power, user, f.getPowerStates()[i]);
				userPowers.add(userPower);
			}
		}
		user.getTblUserPowers().clear();
		user.getTblUserPowers().addAll(userPowers);
		
		return user;
	}
}

⌨️ 快捷键说明

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