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

📄 roleaction.java

📁 java电信经典-学习例子源代码
💻 JAVA
字号:
package netctoss.rights.actions;
/*
 * 负责角色的处理。
 * */
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import global.TimeTools;
import global.ValidatorTool;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import netctoss.dao.AdminrolesDAO;
import netctoss.dao.RightsDAO;
import netctoss.dao.RolerightsDAO;
import netctoss.dao.RolesDAO;
import netctoss.entities.Adminroles;
import netctoss.entities.Rolerights;
import netctoss.entities.Roles;
import netctoss.rights.forms.RightForm;
import netctoss.rights.forms.RoleForm;

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 org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;

public class RoleAction extends DispatchAction {
	private boolean validate(RoleForm  form,ActionMessages errors)
	{
		if(ValidatorTool.validateNull("rolename", form.getRolename(), errors, "角色名必须输入")) return true;
		if(ValidatorTool.validateIntArrayNull("rightid", form.getRightid(), errors, "至少选择一个权限")) return true;
		return false;
	}
	public ActionForward insert(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		RoleForm  fm=(RoleForm)form;
		ActionMessages errors=new ActionMessages();
		RightsDAO daoright= new RightsDAO();
		RolesDAO  daorole=new RolesDAO(); 
		if(validate(fm,errors)){//验证没有通过 			
			errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
			this.saveErrors(request, errors);
			return mapping.findForward("goaddnewrole");
		}
		//构造一个角色实体
		try
		{
			Roles role=new Roles();
			role.setId(0);
			role.setName(fm.getRolename());
			//循环得到所有权限对象
			Set rolerights=new HashSet();
			for(int i=0;i<fm.getRightid().length;i++){
				Rolerights rr=new Rolerights();
				//rr.setId(0);
				rr.setRightid(daoright.findById(fm.getRightid()[i]));
				rolerights.add(rr);				
			}			
			role.setRolerights(rolerights);
			
			daorole.save(role);
			daorole.getSession().flush();
			daorole.getSession().clear();
			form.reset(mapping, request);
			errors.add("role.insert", new ActionMessage("right.insert.success",TimeTools.getNowTime("HH:mm:ss")));
		}
		catch(Exception err){			
			errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
		}
		this.saveErrors(request, errors);
		return mapping.findForward("goaddnewrole");
	}
	public ActionForward update(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		//传递的数据进行包存
		RoleForm  fm=(RoleForm)form;
		ActionMessages errors=new ActionMessages();
		RightsDAO daoright= new RightsDAO();
		RolesDAO  daorole=new RolesDAO(); 
		RolerightsDAO daorr=new RolerightsDAO(); 
		List lstright=daoright.findAll();
		request.setAttribute("lstright", lstright);
		if(validate(fm,errors)){//验证没有通过 			
			errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
			this.saveErrors(request, errors);
			return mapping.findForward("goroleupui");
		}		
		
		//构造一个角色实体
		try
		{
			Roles role=daorole.findById(fm.getRoleid());
			role.setName(fm.getRolename());
			//循环得到所有权限对象 
			/*这段逻辑的问题,应该是roleright存在的旧直接获取, 不存在的就添加*/
			Set rolerights=new HashSet();
			for(int i=0;i<fm.getRightid().length;i++){
				//先到Rolerights查找对象是否存在,存在直接加入,不存在则产生新的。
				List listrr=daorr.findByRoleRightID(role.getId(),fm.getRightid()[i]);
				if(listrr.size()>0){
					rolerights.addAll(listrr);
				}
				else{
					Rolerights rr=new Rolerights();
					rr.setId(0);
					rr.setRightid(daoright.findById(fm.getRightid()[i]));
					rolerights.add(rr);	
				}
			}			
			role.setRolerights(rolerights);
			
			daorole.save(role);
			//把rolerights表中null数据删除
			daorr.deleteByNullRoleID();
			
			daorole.getSession().flush();
			daorole.getSession().clear();
			
			errors.add("role.insert", new ActionMessage("right.insert.success",TimeTools.getNowTime("HH:mm:ss")));
		}
		catch(Exception err){
			//err.printStackTrace();
			errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
		}
		this.saveErrors(request, errors);
		return mapping.findForward("goroleupui");
	}
	public ActionForward delete(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		RoleForm  fm=(RoleForm)form;
		//得到要删除的ID,进行角色删除
		try{
			RolesDAO dao=new RolesDAO();
			Roles role=dao.findById(fm.getRoleid());		
			dao.delete(role);
			//dao.getSession().flush();
			//dao.getSession().clear();
			//这里是级联删除的设置Rolerights实体不需要删除。
			//需要把adminroles的记录删除
			AdminrolesDAO  daoadminrole=new AdminrolesDAO();
			daoadminrole.deleteByRoleID(fm.getRoleid());
			dao.getSession().flush();
			dao.getSession().clear();
		}
		catch(Exception e){
			e.printStackTrace();
		}
		return mapping.findForward("godeleterole");
	}
	public ActionForward showUpdate(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		//根据传递过来的ID得到要修改的角色
		RoleForm  fm=(RoleForm)form;
		RolesDAO dao=new RolesDAO();
		//查询该角色的信息
		Roles role=dao.findById(fm.getRoleid());
		
		fm.setRoleid(role.getId());
		fm.setRolename(role.getName());
		int[] rr=new int[role.getRolerights().size()];
		Iterator  it=role.getRolerights().iterator();
		int i=0;
		while(it.hasNext()){
			Rolerights rs=(Rolerights)it.next();
			rr[i++]=rs.getRightid().getId();
		}
		fm.setRightid(rr);
		//查询得到该角色信息的form
		//得到所有权限备用
		RightsDAO daoright=new RightsDAO();
		List lstright=daoright.findAll();
		request.setAttribute("lstright", lstright);
		request.setAttribute("RoleForm", fm);
		
		return mapping.findForward("goroleupui");
	}
}

⌨️ 快捷键说明

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