package edu.sjtu.infosec.ismp.manager.AM.web.actions; import java.io.IOException; import java.sql.Timestamp; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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.jfree.chart.JFreeChart; import org.jfree.chart.servlet.ServletUtilities; import edu.sjtu.infosec.ismp.manager.AM.comm.AssetConstant; import edu.sjtu.infosec.ismp.manager.AM.comm.BarChart; import edu.sjtu.infosec.ismp.manager.AM.comm.LineChart; import edu.sjtu.infosec.ismp.manager.AM.model.AssetDailyAvailabilityBO; import edu.sjtu.infosec.ismp.manager.AM.model.AssetDeviceBO; import edu.sjtu.infosec.ismp.manager.AM.model.AssetDeviceVO; import edu.sjtu.infosec.ismp.manager.AM.model.AssetMonthlyAvailabilityBO; import edu.sjtu.infosec.ismp.manager.AM.model.AssetRawAvailabilityBO; import edu.sjtu.infosec.ismp.manager.AM.model.DeviceChartVO; import edu.sjtu.infosec.ismp.manager.AM.service.AssetDailyAvailabilityService; import edu.sjtu.infosec.ismp.manager.AM.service.AssetDeviceService; import edu.sjtu.infosec.ismp.manager.AM.service.AssetMonthlyAvailabilityService; import edu.sjtu.infosec.ismp.manager.AM.service.AssetRawAvailabilityService; import edu.sjtu.infosec.ismp.manager.SYSM.user.self.service.DomainService; import edu.sjtu.infosec.ismp.manager.comm.model.page.Page; import edu.sjtu.infosec.ismp.manager.comm.model.page.PageResult; import edu.sjtu.infosec.ismp.manager.comm.model.page.PageUtil; import edu.sjtu.infosec.ismp.security.Domain; public class AssetAvailabilityAction extends DispatchAction { private AssetDailyAvailabilityService assetDailyAvailabilityService; private AssetMonthlyAvailabilityService assetMonthlyAvailabilityService; private AssetRawAvailabilityService assetRawAvailabilityService; private AssetDeviceService assetDeviceService; // 注入委办局 信息 service private DomainService domainService; public DomainService getDomainService() { return domainService; } public void setDomainService(DomainService domainService) { this.domainService = domainService; } public void setAssetDeviceService(AssetDeviceService assetDeviceService) { this.assetDeviceService = assetDeviceService; } public ActionForward assetAnalysis(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Integer locId = Integer.valueOf(request.getParameter("locid")); AssetDeviceBO deviceBO = new AssetDeviceBO(); // String curpage = (String) request.getParameter("curpage") == null ? "1" // : request.getParameter("curpage"); deviceBO.setLocationId(locId); if (request.getParameter("type") != null) { Integer typeId = Integer.valueOf(request.getParameter("type")); deviceBO.setAssetType(typeId); } // int totalCount = assetDeviceService.getCountByAssetDevice(deviceBO); // Page page = PageUtil.createPage(10, 1, totalCount); // Page page = PageUtil.createPage(10, 1, 0); // 获得当前页 Page page = new Page(); String curpage = request.getParameter("curpage") != null && (!request.getParameter("curpage").equals("")) ? request .getParameter("curpage") : "1"; if (request.getParameter("pageSize") != null && (!request.getParameter("pageSize").equals(""))) { int pagesize = Integer.parseInt(request.getParameter("pageSize")); request.setAttribute("pageSize", request.getParameter("pageSize")); page.setEveryPage(pagesize); }else{ page.setEveryPage(10); } page.setCurrentPage(Integer.parseInt(curpage)); page = PageUtil.createPage(page.getEveryPage(), page.getCurrentPage(), page.getTotalCount()); // PageResult pageResult = assetDeviceService.getPageListByAssetDevice(deviceBO, page); List<AssetDeviceBO> deviceBOList = assetDeviceService.getPageListByAssetDevice(deviceBO, page,null); // List<DeviceChartVO> deviceChartList = assetDeviceService.getDeviceChartData(deviceBO); // List<AssetDeviceBO> deviceList = (List<AssetDeviceBO>)pageResult.getPageList(); List<AssetDeviceVO> deviceVOList = assetRawAvailabilityService.getListByAssetDeviceVO(deviceBOList); page = PageUtil.createPage(page.getEveryPage(), page.getCurrentPage(), page.getTotalCount()); request.setAttribute("page", page); request.setAttribute("deviceVOList", deviceVOList); AssetDeviceBO entity = new AssetDeviceBO(); entity.setLocationId(locId); entity.setAssetType(AssetConstant.NETWORK_DEVICE_TYPE); int network = assetDeviceService.getCountByAssetDevice(entity); entity.setAssetType(AssetConstant.SECURITY_DEVICE_TYPE); int security = assetDeviceService.getCountByAssetDevice(entity); entity.setAssetType(AssetConstant.SERVER_DEVICE_TYPE); int server = assetDeviceService.getCountByAssetDevice(entity); entity.setAssetType(AssetConstant.TERMINAL_DEVICE_TYPE); int terminal = assetDeviceService.getCountByAssetDevice(entity); Domain domain = domainService.findById(locId); // // for(DeviceChartVO deviceChartVO : deviceChartList){ // deviceChartVO.getDataMap().get(AssetConstant.NETWORK_DEVICE_TYPE); // } // // request.setAttribute("locId", locId); request.setAttribute("network", network); request.setAttribute("security", security); request.setAttribute("server", server); request.setAttribute("terminal", terminal); request.setAttribute("location", domain.getDomainName()); return mapping.findForward("assetAnalysis"); } public ActionForward statisticAnalysis(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { int assetId = Integer.parseInt(request.getParameter("deviceId")); // 每日参数 AssetDailyAvailabilityBO dailyAvailabilityBO = new AssetDailyAvailabilityBO(); dailyAvailabilityBO.setAssetId(assetId); // 每月参数 AssetMonthlyAvailabilityBO monthlyAvailabilityBO = new AssetMonthlyAvailabilityBO(); monthlyAvailabilityBO.setAssetId(assetId); // CPU 每日统计 dailyAvailabilityBO.setAvailabilityType(AssetConstant.AVAILABILITY_CPU); String cpuDImg = getDailyChart(dailyAvailabilityBO, request); request.setAttribute("cpuDImg", cpuDImg); // CPU 每月统计 monthlyAvailabilityBO .setAvailabilityType(AssetConstant.AVAILABILITY_CPU); String cpuMImg = getMonthlyChart(monthlyAvailabilityBO, request); request.setAttribute("cpuMImg", cpuMImg); // CPU 每年统计 String cpuYImg = getYearChart(monthlyAvailabilityBO, request); request.setAttribute("cpuYImg", cpuYImg); // 硬盘每日统计 dailyAvailabilityBO.setAvailabilityType(AssetConstant.AVAILABILITY_HD); String harDImg = getDailyChart(dailyAvailabilityBO, request); request.setAttribute("harDImg", harDImg); // 硬盘每月统计 monthlyAvailabilityBO .setAvailabilityType(AssetConstant.AVAILABILITY_HD); String harMImg = getMonthlyChart(monthlyAvailabilityBO, request); request.setAttribute("harMImg", harMImg); // 硬盘每年统计 String harYImg = getYearChart(monthlyAvailabilityBO, request); request.setAttribute("harYImg", harYImg); // 内存每日统计 dailyAvailabilityBO.setAvailabilityType(AssetConstant.AVAILABILITY_MEM); String meDImg = getDailyChart(dailyAvailabilityBO, request); request.setAttribute("meDImg", meDImg); // 内存每月统计 monthlyAvailabilityBO .setAvailabilityType(AssetConstant.AVAILABILITY_MEM); String meMImg = getMonthlyChart(monthlyAvailabilityBO, request); request.setAttribute("meMImg", meMImg); // 内存每年统计 String meYImg = getYearChart(monthlyAvailabilityBO, request); request.setAttribute("meYImg", meYImg); // 网络接口每日统计 dailyAvailabilityBO.setAvailabilityType(AssetConstant.AVAILABILITY_Net); String netDImg = getDailyChart(dailyAvailabilityBO, request); request.setAttribute("netDImg", netDImg); // 网络接口每月统计 monthlyAvailabilityBO .setAvailabilityType(AssetConstant.AVAILABILITY_Net); String netMImg = getMonthlyChart(monthlyAvailabilityBO, request); request.setAttribute("netMImg", netMImg); // 网络接口每年统计 String netYImg = getYearChart(monthlyAvailabilityBO, request); request.setAttribute("netYImg", netYImg); // 网络流量统计 AssetRawAvailabilityBO rawAvailabilityBO = new AssetRawAvailabilityBO(); rawAvailabilityBO.setAssetId(assetId); rawAvailabilityBO.setAvailabilityType(AssetConstant.AVAILABILITY_Net); // 每日流量统计 List<Integer> hourList = assetRawAvailabilityService .getHourChartDataByNet( new Timestamp(System.currentTimeMillis()), rawAvailabilityBO); JFreeChart chart = LineChart.createLineChart(hourList, 1); String quDImg = ServletUtilities.saveChartAsPNG(chart, 800, 500, request.getSession()); request.setAttribute("quDImg", quDImg); // 每月流量统计 List<Integer> dayList = assetRawAvailabilityService .getDayChartDataByNet( new Timestamp(System.currentTimeMillis()), rawAvailabilityBO); chart = LineChart.createLineChart(dayList, 2); String quMImg = ServletUtilities.saveChartAsPNG(chart, 800, 500, request.getSession()); request.setAttribute("quMImg", quMImg); // 每年流量统计 List<Integer> monthList = assetRawAvailabilityService .getMonthChartDataByNet(new Timestamp(System .currentTimeMillis()), rawAvailabilityBO); chart = BarChart.creatBarChart(monthList, 3); String quYImg = ServletUtilities.saveChartAsPNG(chart, 800, 500, request.getSession()); request.setAttribute("quYImg", quYImg); // 在线统计 // 每日在线统计 rawAvailabilityBO.setAvailabilityType(AssetConstant.AVAILABILITY_ALIVE); List<Integer> onHourList = assetRawAvailabilityService .getHourChartDataByOnline(new Timestamp(System .currentTimeMillis()), rawAvailabilityBO); chart = LineChart.createLineChart(onHourList, 1); String onDImg = ServletUtilities.saveChartAsPNG(chart, 800, 500, request.getSession()); request.setAttribute("onDImg", onDImg); List<Integer> onDayList = assetRawAvailabilityService .getDayChartDataByOnline(new Timestamp(System .currentTimeMillis()), rawAvailabilityBO); chart = LineChart.createLineChart(onDayList, 2); String onMImg = ServletUtilities.saveChartAsPNG(chart, 800, 500, request.getSession()); request.setAttribute("onMImg", onMImg); List<Integer> onMonthList = assetRawAvailabilityService .getMonthChartDataByOnline(new Timestamp(System .currentTimeMillis()), rawAvailabilityBO); chart = BarChart.creatBarChart(onMonthList, 3); String onYImg = ServletUtilities.saveChartAsPNG(chart, 800, 500, request.getSession()); request.setAttribute("onYImg", onYImg); request.setAttribute("deviceId", Integer.valueOf(request .getParameter("deviceId"))); return mapping.findForward("success"); } // 日表 private String getDailyChart(AssetDailyAvailabilityBO dailyAvailabilityBO, HttpServletRequest request) throws IOException { List dailyList = assetDailyAvailabilityService.getDayChartData( new Timestamp(System.currentTimeMillis()), dailyAvailabilityBO); JFreeChart chart = LineChart.createLineChart(dailyList, 1); String image = ServletUtilities.saveChartAsPNG(chart, 800, 500, request .getSession()); return image; } // 月表 private String getMonthlyChart( AssetMonthlyAvailabilityBO monthlyAvailabilityBO, HttpServletRequest request) throws IOException { List monthList = assetMonthlyAvailabilityService.getMonthChartData( new Timestamp(System.currentTimeMillis()), monthlyAvailabilityBO); JFreeChart chart = LineChart.createLineChart(monthList, 2); String image = ServletUtilities.saveChartAsPNG(chart, 800, 500, request .getSession()); return image; } // 年表 private String getYearChart( AssetMonthlyAvailabilityBO monthlyAvailabilityBO, HttpServletRequest request) throws IOException { List yearList = assetMonthlyAvailabilityService.getYearChartData( new Timestamp(System.currentTimeMillis()), monthlyAvailabilityBO); JFreeChart chart = BarChart.creatBarChart(yearList, 3); String image = ServletUtilities.saveChartAsPNG(chart, 800, 500, request .getSession()); return image; } public void setAssetRawAvailabilityService( AssetRawAvailabilityService assetRawAvailabilityService) { this.assetRawAvailabilityService = assetRawAvailabilityService; } public AssetDailyAvailabilityService getAssetDailyAvailabilityService() { return assetDailyAvailabilityService; } public void setAssetDailyAvailabilityService( AssetDailyAvailabilityService assetDailyAvailabilityService) { this.assetDailyAvailabilityService = assetDailyAvailabilityService; } public AssetMonthlyAvailabilityService getAssetMonthlyAvailabilityService() { return assetMonthlyAvailabilityService; } public void setAssetMonthlyAvailabilityService( AssetMonthlyAvailabilityService assetMonthlyAvailabilityService) { this.assetMonthlyAvailabilityService = assetMonthlyAvailabilityService; } }