package edu.sjtu.infosec.ismp.manager.RAM.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.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts.action.ActionErrors; 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.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.ERM.model.LinkMan; import edu.sjtu.infosec.ismp.manager.LM.pfLog.service.SystemLogService; import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoAsse; import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoBusi; import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoProj; import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDicAsseKind; import edu.sjtu.infosec.ismp.manager.RAM.service.AssetService; import edu.sjtu.infosec.ismp.manager.RAM.service.BusinessService; import edu.sjtu.infosec.ismp.manager.RAM.service.DicAsseKindService; import edu.sjtu.infosec.ismp.manager.RAM.service.DicSecuLeveService; import edu.sjtu.infosec.ismp.manager.RAM.service.ProjectService; import edu.sjtu.infosec.ismp.manager.RAM.web.form.AsseInfoAsseForm; import edu.sjtu.infosec.ismp.manager.SYSM.user.self.comm.SecurityUserHolder; import edu.sjtu.infosec.ismp.manager.SYSM.user.self.service.DomainService; import edu.sjtu.infosec.ismp.security.Domain; import edu.sjtu.infosec.ismp.security.OperatorDetails; import edu.sjtu.infosec.ismp.security.Role; /** * web层 资产信息录入Action. */ public class AssetAction extends DispatchAction { private static Logger logger = Logger.getLogger(AssetAction.class); /** * 测评项目服务访问接口 */ private ProjectService projectService; /** * 测评项目服务访问接口 */ private BusinessService businessService; /** * 资产类型Service接口 **/ private DicAsseKindService dicAsseKindService; /** * 资产录入Service接口 **/ private AssetService assetService; private DicSecuLeveService dicSecuLeveService; private SystemLogService logService; public void setLogService(SystemLogService logService) { this.logService = logService; } public void setDicSecuLeveService(DicSecuLeveService dicSecuLeveService) { this.dicSecuLeveService = dicSecuLeveService; } public void setProjectService(ProjectService projectService) { this.projectService = projectService; } public void setBusinessService(BusinessService businessService) { this.businessService = businessService; } public void setDicAsseKindService(DicAsseKindService dicAsseKindService) { this.dicAsseKindService = dicAsseKindService; } public void setAssetService(AssetService assetService) { this.assetService = assetService; } /** * 往session中加载本次测评项目信息 */ private AsseInfoProj loadAsseInfoproj(HttpServletRequest request) { AsseInfoProj asseInfoProj = null; if(request.getSession().getAttribute("asseInfoProj") == null) { String projId = request.getParameter("projId"); if(projId != null && !"".equals(projId.trim())) { Integer projCode = new Integer(projId); asseInfoProj = projectService.find(projCode); System.out.println("find asseInfoProj:"+asseInfoProj.toString()); } request.getSession().setAttribute("asseInfoProj", asseInfoProj); } else { asseInfoProj = (AsseInfoProj) request.getSession().getAttribute("asseInfoProj"); } return asseInfoProj; } /** * 资产录入前工作 */ public ActionForward preInputAsset(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AsseInfoProj asseInfoProj = loadAsseInfoproj(request); asseInfoProj.setProgress("prog3"); projectService.saveOrUpdate(asseInfoProj); request.getSession().setAttribute("asseInfoProj", asseInfoProj); request.getSession().setAttribute("welcome", "yes"); return showAsse(mapping,form,request,response); } public ActionForward showTopoInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AsseInfoProj asseInfoProj = loadAsseInfoproj(request); asseInfoProj.setProgress("prog4"); projectService.saveOrUpdate(asseInfoProj); request.getSession().setAttribute("asseInfoProj", asseInfoProj); return new ActionForward("/ismp/domain/local/ram/topoInfo.do"); } public ActionForward importData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AsseInfoProj AsseInfoProj = loadAsseInfoproj(request); String asseKindCode = request.getParameter("asseKindCode"); request.setAttribute("asseKindCode", asseKindCode); assetService.findFromAssetModule(AsseInfoProj.getDomain()); //添加日志 OperatorDetails user = SecurityUserHolder.getCurrentUser(); SystemLog log = new SystemLog(); log.setUsername(user.getUsername()); List<Role> list=user.getRoleList(); String roles=""; for(Role role:list){ roles+=role.getRole()+","; } log.setRoleName(roles.substring(0,roles.length()-1)); log.setTime(new Timestamp(new Date().getTime())); log.setModuleName(SystemModelInfo.MOD_RAM); log.setOperationDesc("风险评估模块从资产管理模块设备基本信息表读取保存数据"); log.setControl("成功"); logService.saveSystemLog(log); return showAsse(mapping,form,request,response); } /** * 资产信息分页 */ @SuppressWarnings("unchecked") public ActionForward showAsse(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { int currPage = 1; Double totalPage = 0d; Long totalNum = 0L; int startResult = 0; int maxResult = 5; //返回可选资产类别 List<AsseKnowDicAsseKind> selectedAsseKindList = dicAsseKindService.listDicAsseKind(null); String treeList=getTree(selectedAsseKindList, request.getContextPath()); try{ String asseKindCode = request.getParameter("asseKindCode"); if(asseKindCode == null) { asseKindCode = (String) request.getAttribute("asseKindCode"); } System.out.println("asseKindCode:"+asseKindCode); request.setAttribute("asseKindCode", asseKindCode); if(asseKindCode!=null&&!"".equals(asseKindCode)){ AsseKnowDicAsseKind asseKind = null; asseKind = dicAsseKindService.find(asseKindCode); request.setAttribute("assekindid", asseKind.getId()); //分页定义的相关的基本信息 String cp=null; cp =(String) request.getAttribute("currPage"); if(cp==null||"".equals(cp)){ 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; } AsseInfoProj proj=loadAsseInfoproj(request); //分页定义的相关的基本信息 totalNum=assetService.getCount(proj.getDomain(),asseKind); 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; } } //数据相关的基本信息 List<AsseInfoAsse> asseList = new ArrayList<AsseInfoAsse>(); asseList = assetService.findAll(startResult, maxResult, proj.getDomain(),asseKind); List<AsseInfoBusi> busiList = businessService.find(proj.getDomain()); List<AsseKnowDicAsseKind> asseKindList = dicAsseKindService.listDicAsseKindByid(); request.setAttribute("asseKindList", asseKindList); request.setAttribute("asseList", asseList); request.setAttribute("busiList", busiList); request.setAttribute("welcome", "no"); List dicSecuLeveList=dicSecuLeveService.findAll(); request.setAttribute("dicSecuLeveList", dicSecuLeveList); } }catch(Exception e){ logger.debug("风险评估--业务录入--访问出错啦!"); e.printStackTrace(); } request.setAttribute("treeList", treeList); request.setAttribute("currPage", currPage); request.setAttribute("totalPage", totalPage.intValue()); return mapping.findForward("asse"); } public String getTree(List<AsseKnowDicAsseKind> AsseKnowList, String basePath) { String treeList = "d.add(0,-1,'资产类别');"; List<Integer> PidList = new ArrayList<Integer>(); for (AsseKnowDicAsseKind asse : AsseKnowList) { PidList.add(asse.getAsse_kind_id()); } for (AsseKnowDicAsseKind asse : AsseKnowList) { int pid=0; if(asse.getAsse_kind_id()!= null && !"".equals(asse.getAsse_kind_id())){ pid=asse.getAsse_kind_id(); } if(pid==0&&PidList.contains(asse.getId())){ treeList = treeList + "d.add(" + asse.getId() + "," + pid + "," + "'" + asse.getAssetKindName() + "'," + "'" + basePath + "/ismp/domain/local/ram/AssetManager.do?method=preInputAsset"+ "'" + ");"; }else{ treeList = treeList + "d.add(" + asse.getId() + "," + pid + "," + "'" + asse.getAssetKindName() + "'," + "'" + basePath + "/ismp/domain/local/ram/AssetManager.do?method=showAsse&asseKindCode=" + asse.getAssetKindId() + "'" + ");"; } } return treeList; } /** * 保存/更新资产信息 */ public ActionForward saveAsse(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { boolean flag=true; AsseInfoAsse asseInfoAsse = new AsseInfoAsse(); AsseInfoAsseForm asseInfoAsseForm = (AsseInfoAsseForm) form; BeanUtils.copyProperties(asseInfoAsse, asseInfoAsseForm); if(asseInfoAsseForm.getAsseKindId()!=null&&!"".equals(asseInfoAsseForm.getAsseKindId())){ AsseKnowDicAsseKind asseKind = dicAsseKindService.findById(asseInfoAsseForm.getAsseKindId()); asseInfoAsse.setAsseKind(asseKind); } AsseInfoProj proj=loadAsseInfoproj(request); asseInfoAsse.setAsseInfoProjId(proj.getId()); asseInfoAsse.setDomain(proj.getDomain()); request.setAttribute("currPage", "1"); if(asseInfoAsseForm.getId()==null||asseInfoAsseForm.getId()<=0){ asseInfoAsse.setId(null); }else{ flag=false; request.setAttribute("currPage", request.getParameter("currPage")); } try{ assetService.saveOrUpdate(asseInfoAsse); System.out.println("asseInfoAsse buildOk:"); //添加日志 OperatorDetails user = SecurityUserHolder.getCurrentUser(); SystemLog log = new SystemLog(); log.setUsername(user.getUsername()); List<Role> list=user.getRoleList(); String roles=""; for(Role role:list){ roles+=role.getRole()+","; } log.setRoleName(roles.substring(0,roles.length()-1)); log.setTime(new Timestamp(new Date().getTime())); log.setModuleName(SystemModelInfo.MOD_RAM); if(flag){ log.setOperationDesc("风险评估模块,新增资产,ID为:"+asseInfoAsse.getId()+",资产名称为:"+asseInfoAsse.getAssetName()); }else{ log.setOperationDesc("风险评估模块,修改资产,ID为:"+asseInfoAsse.getId()+",资产名称为:"+asseInfoAsse.getAssetName()); } log.setControl("成功"); logService.saveSystemLog(log); }catch(Exception e){ e.printStackTrace(); } request.setAttribute("asseInfoAsse", asseInfoAsse); return showAsse(mapping,form,request,response); } /** * 删除资产信息 */ public ActionForward delAsse(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String [] asseCodes = request.getParameterValues("asseCodeSelect"); for(int i=0;i<asseCodes.length;i++) { System.out.println("deleted asseCodes:"+asseCodes[i]); } try{ assetService.remove(asseCodes); //添加日志 OperatorDetails user = SecurityUserHolder.getCurrentUser(); SystemLog log = new SystemLog(); log.setUsername(user.getUsername()); List<Role> list=user.getRoleList(); String roles=""; for(Role role:list){ roles+=role.getRole()+","; } log.setRoleName(roles.substring(0,roles.length()-1)); log.setTime(new Timestamp(new Date().getTime())); log.setModuleName(SystemModelInfo.MOD_RAM); String s = ""; for(String str:asseCodes){ s+=str+","; } log.setOperationDesc("风险评估模块,删除资产信息,ID为:"+s.substring(0,s.length()-1)); log.setControl("成功"); logService.saveSystemLog(log); }catch(Exception e){ e.printStackTrace(); } String asseKindCode=(String) request.getAttribute("asseKindCode"); request.removeAttribute("asseInfoAsse"); return showAsse(mapping,form,request,response); } }