package edu.sjtu.infosec.ismp.manager.BSAM.web.actions; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import org.infosec.ismp.manager.rmi.comm.model.SystemModelInfo; import org.infosec.ismp.manager.rmi.lm.pfLog.model.SystemLog; import edu.sjtu.infosec.ismp.manager.BSAM.model.MachineCabinet; import edu.sjtu.infosec.ismp.manager.BSAM.model.MachineRoom; import edu.sjtu.infosec.ismp.manager.BSAM.service.MachineCabinetService; import edu.sjtu.infosec.ismp.manager.BSAM.service.MachineRoomService; import edu.sjtu.infosec.ismp.manager.BSAM.web.form.MachineCabinetForm; import edu.sjtu.infosec.ismp.manager.LM.pfLog.service.SystemLogService; import edu.sjtu.infosec.ismp.manager.SYSM.user.self.comm.SecurityUserHolder; import edu.sjtu.infosec.ismp.security.Domain; import edu.sjtu.infosec.ismp.security.OperatorDetails; import edu.sjtu.infosec.ismp.security.Role; public class MachineCabinetAction extends DispatchAction { private static Logger logger = Logger.getLogger(MachineCabinetAction.class); /** * 注入 service 接口 */ private MachineCabinetService machineCabinetService; public MachineCabinetService getMachineCabinetService() { return machineCabinetService; } public void setMachineCabinetService(MachineCabinetService machineCabinetService) { this.machineCabinetService = machineCabinetService; } private MachineRoomService machineRoomService; public MachineRoomService getMachineRoomService() { return machineRoomService; } public void setMachineRoomService(MachineRoomService machineRoomService) { this.machineRoomService = machineRoomService; } private SystemLogService systemLogService; public SystemLogService getSystemLogService() { return systemLogService; } public void setSystemLogService(SystemLogService systemLogService) { this.systemLogService = systemLogService; } ///获取机柜列表 public ActionForward getMachineCabinetList(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { int currPage = 1; Double totalPage = 0d; int totalNum = 0; int startResult = 0; int maxResult = 5; try { String isAll = (request.getParameter("isAll") == null) ? "0" : request.getParameter("isAll"); OperatorDetails user = SecurityUserHolder.getCurrentUser(); List<Domain> userDomainList = new ArrayList<Domain>(); if(null != user){ userDomainList = user.getDomainList(); }else{ userDomainList = null; } //分页定义的相关的基本信息 String cp = (request.getParameter("currPage") == null) ? "1" : request.getParameter("currPage"); if (cp != null && !cp.equals("")) { currPage = Integer.parseInt(cp); } startResult = (currPage - 1) * maxResult; if(startResult < 0){ startResult = 0; } //数据相关的基本信息 List<MachineCabinet> machineCabinetList = new ArrayList<MachineCabinet>(); //分页定义的相关的基本信息 if(isAll.equals("1")){ totalNum = machineCabinetService.getCount(); }else{ totalNum = machineCabinetService.getCountByDomain(userDomainList); } totalPage = Math.ceil((double) totalNum / maxResult); if (totalPage > 0 && currPage <= 0) { currPage = 1; } ///当前页没有数据之后返回到上一页(删除当前页全部记录的时候) if (currPage > totalPage) { currPage = totalPage.intValue(); startResult = (currPage - 1) * maxResult; if (startResult < 0) { startResult = 0; } } if (isAll.equals("1")) { request.setAttribute("isAll", isAll); machineCabinetList = machineCabinetService.getMachineCabinetList(startResult, maxResult); } else { machineCabinetList = machineCabinetService.getMachineCabinetListByDomain(userDomainList,startResult, maxResult); } request.setAttribute("machineCabinetList", machineCabinetList); } catch (Exception e) { logger.debug("机柜列表出错啦!"); e.printStackTrace(); } request.setAttribute("currPage", currPage); request.setAttribute("totalPage", totalPage.intValue()); request.setAttribute("situationMenu", "config"); return mapping.findForward("machineCabinetList"); } //删除机柜 public ActionForward machineCabinetDelete(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.setAttribute("isAll", request.getParameter("isAll")); request.setAttribute("currPage", request.getParameter("currPage")); String id = request.getParameter("id"); MachineCabinet machineCabinet = machineCabinetService.getMachineCabinetById(Integer.parseInt(id)); if(null != machineCabinet){///用此种方法解决重复提交问题 machineCabinetService.deleteMachineCabinetById(Integer.parseInt(id)); /** 添加日志开始 **/ SystemLog systemLog = new SystemLog(); systemLog.setUsername(SecurityUserHolder.getCurrentUser().getUsername()); List<Role> roleList = SecurityUserHolder.getCurrentUser().getRoleList(); StringBuffer roles = new StringBuffer(""); for(Role role:roleList){ roles.append(role.getName()); roles.append(","); } systemLog.setRoleName(roles.substring(0,roles.length()-1)); systemLog.setTime(new Timestamp(new Date().getTime())); systemLog.setModuleName(SystemModelInfo.MOD_BSAM); systemLog.setOperationDesc("态势感知模块:删除机柜。机柜ID:" + id); systemLog.setControl("成功"); systemLogService.saveSystemLog(systemLog); /** 添加日志结束 **/ } return getMachineCabinetList(mapping, form, request, response); } ///录入 @SuppressWarnings("unchecked") public ActionForward machineCabinetInput(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { saveToken(request);///创建一个新的令牌值,将其保存在当前的会话(session)范围内 String isAll = request.getParameter("isAll"); String currPage = request.getParameter("currPage"); String id = request.getParameter("id"); if(null != id){ MachineCabinet machineCabinet = machineCabinetService.getMachineCabinetById(new Integer(id)); request.setAttribute("machineCabinet", machineCabinet); } OperatorDetails user = SecurityUserHolder.getCurrentUser(); List<Domain> userDomainList = new ArrayList<Domain>(); if(null != user){ userDomainList = user.getDomainList(); }else{ userDomainList = null; } // List machineRoomList = machineRoomService.getMachineRoomList(); List machineRoomList = machineRoomService.getMachineRoomListByDomain(userDomainList); request.setAttribute("machineRoomList", machineRoomList); request.setAttribute("isAll", isAll); request.setAttribute("currPage", currPage); request.setAttribute("situationMenu", "config"); return mapping.findForward("machineCabinetInput"); } ///更新或增加机柜 public ActionForward machineCabinetSaveOrUpdate(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { request.setAttribute("isAll", request.getParameter("isAll")); request.setAttribute("currPage", request.getParameter("currPage")); if(isTokenValid(request, true)){///检查令牌,防止重复提交 MachineCabinet machineCabinet = new MachineCabinet(); BeanUtils.copyProperties(machineCabinet, (MachineCabinetForm)form); MachineCabinetForm machineCabinetForm = (MachineCabinetForm)form; if(null != machineCabinetForm.getMachineRoomId() && !"".equals(machineCabinetForm.getMachineRoomId())){ MachineRoom machineRoom = machineRoomService.getMachineRoomById(machineCabinetForm.getMachineRoomId()); machineCabinet.setMachineRoom(machineRoom); } String flag = "update"; if(null == machineCabinet.getId()){///增加 flag = "add"; }else if(0 == machineCabinet.getId()){ flag = "add"; machineCabinet.setId(null); } machineCabinetService.saveOrUpdate(machineCabinet); /** 添加日志开始 **/ SystemLog systemLog = new SystemLog(); systemLog.setUsername(SecurityUserHolder.getCurrentUser().getUsername()); List<Role> roleList = SecurityUserHolder.getCurrentUser().getRoleList(); StringBuffer roles = new StringBuffer(""); for(Role role:roleList){ roles.append(role.getName()); roles.append(","); } systemLog.setRoleName(roles.substring(0,roles.length()-1)); systemLog.setTime(new Timestamp(new Date().getTime())); systemLog.setModuleName(SystemModelInfo.MOD_BSAM); if("add".equals(flag)){ systemLog.setOperationDesc("态势感知模块:新建机柜。机柜名称:" + machineCabinet.getMachineCabinetName()); }else { systemLog.setOperationDesc("态势感知模块:修改机柜。机柜ID:" + machineCabinet.getId()); } systemLog.setControl("成功"); systemLogService.saveSystemLog(systemLog); /** 添加日志结束 **/ }else{ saveToken(request); } return getMachineCabinetList(mapping, form, request, response); } }