package edu.sjtu.infosec.ismp.manager.VPM.vm.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.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
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.manager.SYSM.user.self.service.UserService;
import edu.sjtu.infosec.ismp.manager.VPM.vm.model.TopClients;
import edu.sjtu.infosec.ismp.manager.VPM.vm.model.TopVirus;
import edu.sjtu.infosec.ismp.manager.VPM.vm.model.VirusClients;
import edu.sjtu.infosec.ismp.manager.VPM.vm.service.VirusAlertStatService;
import edu.sjtu.infosec.ismp.manager.VPM.vm.service.VirusClientsService;
import edu.sjtu.infosec.ismp.security.Domain;
import edu.sjtu.infosec.ismp.security.OperatorDetails;
public class ContractInfoTopAction extends Action {
/**
* 注入 service 接口
*/
private VirusClientsService virusClientsService;
private VirusAlertStatService virusAlertsStatService;
// private VirusService virusService;
private UserService userService;
private DomainService domainService;
public void setVirusClientsService(VirusClientsService virusClientsService) {
this.virusClientsService = virusClientsService;
}
public void setVirusAlertsStatService(VirusAlertStatService virusAlertsStatService) {
this.virusAlertsStatService = virusAlertsStatService;
}
// public void setVirusService(VirusService virusService) {
// this.virusService = virusService;
// }
public void setUserService(UserService userService) {
this.userService = userService;
}
public void setDomainService(DomainService domainService) {
this.domainService = domainService;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// System.out.println("000000000000000");
try{
String cc = (request.getParameter("cc")==null)?null:request.getParameter("cc");
String depId = (request.getParameter("di")==null)?null:request.getParameter("di");
String virusClientsId = (request.getParameter("vci")==null)?null:request.getParameter("vci");
int topNum = Integer.parseInt((request.getParameter("tn")==null)?"0":request.getParameter("tn"));
// Map<ManagerBO, List<VirusClients>> treeStruc = new HashMap<ManagerBO, List<VirusClients>>();
OperatorDetails user = SecurityUserHolder.getCurrentUser();
List<Domain> userDomainList = new ArrayList<Domain>();
if(user != null){
userDomainList = user.getDomainList();
}else{
userDomainList = null;
}
// for(ManagerBO dep : departmentList){
// List<VirusClients> vcomList = new ArrayList<VirusClients>();
// vcomList = virusClientsService.findAllVirusClientsByDepartment(dep);
// treeStruc.put(dep, vcomList);
// }
Timestamp startTime = null;
Timestamp endTime = null;
Date t = new Date();
int gtNUM = t.getDay();
if(gtNUM == 0){
gtNUM = 7;
}
startTime = new Timestamp(new Date(t.getYear(), t.getMonth(), (t.getDate()-gtNUM), 23,59,59).getTime());
endTime = new Timestamp(new Date(t.getYear(), t.getMonth(), (t.getDate()+1), 0,0,0).getTime());
if(virusClientsId!=null && !virusClientsId.equals("")){
VirusClients virusClients = null;
virusClients = virusClientsService.findVirusClientsById(Integer.parseInt(virusClientsId));
if(cc!=null && cc.equals("virus")){
// System.out.println("病毒TOP!");
List<TopVirus> tvList = new ArrayList<TopVirus>();
tvList = virusAlertsStatService.findTopVirusCountByVirusClients(virusClients, startTime, endTime, topNum);
request.setAttribute("vc", virusClients);
request.setAttribute("tvList", tvList);
return mapping.findForward("virusTopShow");
}else{
System.out.println("请选择要查看的TOP内容!");
return mapping.findForward("topShowError");
}
}else{
List<VirusClients> virusClientsList = new ArrayList<VirusClients>();
if(depId!=null && !depId.equals("")){
Domain dep = domainService.findById(Integer.parseInt(depId));
virusClientsList = virusClientsService.findAllVirusClientsByDepartment(dep);
}else{
virusClientsList = virusClientsService.findAllVirusClientsByDepartmentListExceptUnknow(userDomainList);
}
if(cc!=null && cc.equals("virus")){
// System.out.println("病毒TOP!");
List<TopVirus> tvList = new ArrayList<TopVirus>();
tvList = virusAlertsStatService.findTopVirusCountByVirusClientsList(virusClientsList, startTime, endTime, topNum);
request.setAttribute("tvList", tvList);
return mapping.findForward("virusTopShow");
}else if(cc!=null && cc.equals("clients")){
// System.out.println("客户端TOP!");
List<TopClients> tcList = new ArrayList<TopClients>();
tcList = virusAlertsStatService.findTopClientsCountByVirusClientsList(virusClientsList, startTime, endTime, topNum);
request.setAttribute("tcList", tcList);
return mapping.findForward("clientsTopShow");
}else{
System.out.println("请选择要查看的TOP内容!");
return mapping.findForward("topShowError");
}
}
}catch(Exception e){
System.out.println("TOP排名查询出错!");
// e.printStackTrace();
return mapping.findForward("topShowError");
}
}
}