private TransactionName getTransactionName(Payload payload) { String domain = payload.getDomain(); String type = payload.getType(); String name = payload.getName(); String ip = payload.getIpAddress(); String ipAddress = payload.getIpAddress(); String date = String.valueOf(payload.getDate()); ModelRequest request = new ModelRequest(domain, payload.getPeriod()) // .setProperty("date", date) // .setProperty("type", payload.getType()) // .setProperty("name", payload.getName()) // .setProperty("ip", ipAddress); if (name == null || name.length() == 0) { request.setProperty("name", "*"); request.setProperty("all", "true"); name = CatString.ALL; } ModelResponse<TransactionReport> response = m_service.invoke(request); TransactionReport report = response.getModel(); report = m_mergeManager.mergerAll(report, ipAddress, name); TransactionType t = report.getMachines().get(ip).findType(type); if (t != null) { TransactionName n = t.findName(name); if (n != null) { n.accept(m_computer); } return n; } else { return null; } }
@Override @OutboundActionMeta(name = "t") public void handleOutbound(Context ctx) throws ServletException, IOException { Model model = new Model(ctx); Payload payload = ctx.getPayload(); normalize(model, payload); String type = payload.getType(); switch (payload.getAction()) { case HOURLY_REPORT: showHourlyReport(model, payload); DisplayNames displayNameReport = model.getDisplayNameReport(); if ((!StringUtils.isEmpty(type)) && displayNameReport != null) { buildTransactionNameGraph(displayNameReport.getResults(), model); } break; case HISTORY_REPORT: showSummarizeReport(model, payload); displayNameReport = model.getDisplayNameReport(); if ((!StringUtils.isEmpty(type)) && displayNameReport != null) { buildTransactionNameGraph(displayNameReport.getResults(), model); } break; case HISTORY_GRAPH: m_historyGraph.buildTrendGraph(model, payload); break; case GRAPHS: showHourlyGraphs(model, payload); break; case MOBILE: showHourlyReport(model, payload); if (!StringUtils.isEmpty(payload.getType())) { DisplayNames report = model.getDisplayNameReport(); String json = m_gson.toJson(report); model.setMobileResponse(json); } else { DisplayTypes report = model.getDisplayTypeReport(); String json = m_gson.toJson(report); model.setMobileResponse(json); } break; case MOBILE_GRAPHS: MobileGraphs graphs = showMobileGraphs(model, payload); if (graphs != null) { model.setMobileResponse(m_gson.toJson(graphs)); } break; } if (payload.isXml()) { m_xmlViewer.view(ctx, model); } else { m_jspViewer.view(ctx, model); } }
private Map<String, double[]> getGraphDatasFromDaily( Date start, Date end, Model model, Payload payload) { String domain = model.getDomain(); String type = payload.getType(); String name = payload.getName(); String ip = model.getIpAddress(); String queryIp = "All".equalsIgnoreCase(ip) == true ? "All" : ip; List<DailyGraph> graphs = new ArrayList<DailyGraph>(); for (long startLong = start.getTime(); startLong < end.getTime(); startLong = startLong + TimeUtil.ONE_DAY) { try { DailyGraph graph = m_dailyGraphDao.findByDomainNameIpDate( new Date(startLong), queryIp, domain, EventAnalyzer.ID, DailyGraphEntity.READSET_FULL); graphs.add(graph); } catch (DalNotFoundException e) { } catch (Exception e) { Cat.logError(e); } } return buildGraphDatasForDaily(start, end, type, name, graphs); }
private TransactionReport getHourlyReport(Payload payload) { String domain = payload.getDomain(); String date = String.valueOf(payload.getDate()); String ipAddress = payload.getIpAddress(); ModelRequest request = new ModelRequest(domain, payload.getPeriod()) // .setProperty("date", date) // .setProperty("type", payload.getType()) // .setProperty("ip", ipAddress); if (m_service.isEligable(request)) { ModelResponse<TransactionReport> response = m_service.invoke(request); TransactionReport report = response.getModel(); if (payload.getPeriod().isLast()) { Date start = new Date(payload.getDate()); Date end = new Date(payload.getDate() + TimeUtil.ONE_HOUR); if (CatString.ALL.equals(domain)) { report = m_reportService.queryTransactionReport(domain, start, end); } Set<String> domains = m_reportService.queryAllDomainNames(start, end, "transaction"); Set<String> domainNames = report.getDomainNames(); domainNames.addAll(domains); } report = m_mergeManager.mergerAllIp(report, ipAddress); calculateTps(payload, report); return report; } else { throw new RuntimeException( "Internal error: no eligable transaction service registered for " + request + "!"); } }
private TransactionReport getHourlyReport(Payload payload) { String domain = payload.getDomain(); String ipAddress = payload.getIpAddress(); ModelRequest request = new ModelRequest(domain, payload.getDate()) .setProperty("type", payload.getType()) .setProperty("ip", ipAddress); if (m_service.isEligable(request)) { ModelResponse<TransactionReport> response = m_service.invoke(request); TransactionReport report = response.getModel(); if (payload.getPeriod().isLast()) { Date start = new Date(payload.getDate()); Date end = new Date(payload.getDate() + TimeHelper.ONE_HOUR); if (Constants.ALL.equals(domain)) { report = m_reportService.queryTransactionReport(domain, start, end); } Set<String> domains = m_reportService.queryAllDomainNames(start, end, TransactionAnalyzer.ID); Set<String> domainNames = report.getDomainNames(); domainNames.addAll(domains); } return report; } else { throw new RuntimeException( "Internal error: no eligable transaction service registered for " + request + "!"); } }
public void buildTrendGraph(Model model, Payload payload) { Date start = payload.getHistoryStartDate(); Date end = payload.getHistoryEndDate(); String type = payload.getType(); String name = payload.getName(); String display = name != null ? name : type; int size = (int) ((end.getTime() - start.getTime()) * 12 / TimeUtil.ONE_HOUR); String queryType = payload.getReportType(); List<Map<String, double[]>> allDatas = new ArrayList<Map<String, double[]>>(); long step = TimeUtil.ONE_MINUTE * 5; if (queryType.equalsIgnoreCase("day")) { Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload); Map<String, double[]> lastDayGraph = getGraphDatasForHour( new Date(start.getTime() - TimeUtil.ONE_DAY), new Date(end.getTime() - TimeUtil.ONE_DAY), model, payload); Map<String, double[]> lastWeekGraph = getGraphDatasForHour( new Date(start.getTime() - TimeUtil.ONE_WEEK), new Date(end.getTime() - TimeUtil.ONE_WEEK), model, payload); allDatas.add(currentGraph); allDatas.add(lastDayGraph); allDatas.add(lastWeekGraph); } else if (queryType.equalsIgnoreCase("week")) { Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload); Map<String, double[]> lastWeek = getGraphDatasForHour( new Date(start.getTime() - TimeUtil.ONE_WEEK), new Date(end.getTime() - TimeUtil.ONE_WEEK), model, payload); allDatas.add(currentGraph); allDatas.add(lastWeek); } else if (queryType.equalsIgnoreCase("month")) { size = (int) ((end.getTime() - start.getTime()) / TimeUtil.ONE_DAY); step = TimeUtil.ONE_DAY; Map<String, double[]> graphData = getGraphDatasFromDaily(start, end, model, payload); allDatas.add(graphData); } else { throw new RuntimeException("Error graph query type"); } LineChart item = buildTotal(allDatas, start, size, step, display, queryType); model.setHitTrend(item.getJsonString()); item = buildFail(allDatas, start, size, step, display, queryType); model.setFailureTrend(item.getJsonString()); }
private void buildTransactionMetaInfo(Model model, Payload payload, TransactionReport report) { String type = payload.getType(); String sorted = payload.getSortBy(); String queryName = payload.getQueryName(); String ip = payload.getIpAddress(); if (!StringUtils.isEmpty(type)) { DisplayNames displayNames = new DisplayNames(); model.setDisplayNameReport(displayNames.display(sorted, type, ip, report, queryName)); buildTransactionNamePieChart(displayNames.getResults(), model); } else { model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report)); } }
private void normalize(Model model, Payload payload) { model.setPage(ReportPage.TRANSACTION); m_normalizePayload.normalize(model, payload); if (StringUtils.isEmpty(payload.getQueryName())) { payload.setQueryName(null); } if (StringUtils.isEmpty(payload.getType())) { payload.setType(null); } String queryName = payload.getQueryName(); if (queryName != null) { model.setQueryName(queryName); } }
private TransactionReport getTransactionGraphReport(Model model, Payload payload) { String domain = payload.getDomain(); String ipAddress = payload.getIpAddress(); String name = payload.getName(); ModelRequest request = new ModelRequest(domain, payload.getDate()) // .setProperty("type", payload.getType()) // .setProperty("name", payload.getName()) // .setProperty("ip", ipAddress); if (name == null || name.length() == 0) { request.setProperty("name", "*"); request.setProperty("all", "true"); name = Constants.ALL; } ModelResponse<TransactionReport> response = m_service.invoke(request); TransactionReport report = response.getModel(); return report; }
private void showSummarizeReport(Model model, Payload payload) { String type = payload.getType(); String sorted = payload.getSortBy(); String ip = payload.getIpAddress(); String domain = model.getDomain(); Date start = payload.getHistoryStartDate(); Date end = payload.getHistoryEndDate(); TransactionReport transactionReport = m_reportService.queryTransactionReport(domain, start, end); calculateTps(payload, transactionReport); model.setReport(transactionReport); if (transactionReport != null) { if (!StringUtils.isEmpty(type)) { model.setDisplayNameReport( new DisplayNames() .display(sorted, type, ip, transactionReport, payload.getQueryName())); } else { model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, transactionReport)); } } }
public Map<String, double[]> getGraphDatasForHour( Date start, Date end, Model model, Payload payload) { String domain = model.getDomain(); String type = payload.getType(); String name = payload.getName(); String ip = model.getIpAddress(); String queryIP = "All".equals(ip) == true ? "all" : ip; List<Graph> events = new ArrayList<Graph>(); for (long startLong = start.getTime(); startLong < end.getTime(); startLong = startLong + TimeUtil.ONE_HOUR) { try { Graph graph = m_graphDao.findSingalByDomainNameIpDuration( new Date(startLong), queryIP, domain, EventAnalyzer.ID, GraphEntity.READSET_FULL); events.add(graph); } catch (DalNotFoundException e) { } catch (Exception e) { Cat.logError(e); } } return buildGraphDatasForHour(start, end, type, name, events); }
private void showHourlyReport(Model model, Payload payload) { try { TransactionReport report = getHourlyReport(payload); if (report != null) { report.accept(m_computer); model.setReport(report); String type = payload.getType(); String sorted = payload.getSortBy(); String queryName = payload.getQueryName(); String ip = payload.getIpAddress(); if (!StringUtils.isEmpty(type)) { model.setDisplayNameReport( new DisplayNames().display(sorted, type, ip, report, queryName)); } else { model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report)); } } } catch (Throwable e) { Cat.logError(e); model.setException(e); } }
@Override @OutboundActionMeta(name = "t") public void handleOutbound(Context ctx) throws ServletException, IOException { Model model = new Model(ctx); Payload payload = ctx.getPayload(); normalize(model, payload); String domain = payload.getDomain(); Action action = payload.getAction(); String ipAddress = payload.getIpAddress(); String group = payload.getGroup(); String type = payload.getType(); String name = payload.getName(); String ip = payload.getIpAddress(); if (StringUtils.isEmpty(group)) { group = m_configManager.queryDefaultGroup(domain); payload.setGroup(group); } model.setGroupIps(m_configManager.queryIpByDomainAndGroup(domain, group)); model.setGroups(m_configManager.queryDomainGroup(payload.getDomain())); switch (action) { case HOURLY_REPORT: TransactionReport report = getHourlyReport(payload); report = m_mergeManager.mergerAllIp(report, ipAddress); calculateTps(payload, report); if (report != null) { model.setReport(report); buildTransactionMetaInfo(model, payload, report); } break; case HISTORY_REPORT: report = m_reportService.queryTransactionReport( domain, payload.getHistoryStartDate(), payload.getHistoryEndDate()); calculateTps(payload, report); if (report != null) { model.setReport(report); buildTransactionMetaInfo(model, payload, report); } break; case HISTORY_GRAPH: m_historyGraph.buildTrendGraph(model, payload); break; case GRAPHS: report = getTransactionGraphReport(model, payload); if (name == null || name.length() == 0) { name = Constants.ALL; } report = m_mergeManager.mergerAllName(report, ip, name); model.setReport(report); buildTransactionNameGraph(model, report, type, name, ip); break; case HOURLY_GROUP_REPORT: report = getHourlyReport(payload); report = filterReportByGroup(report, domain, group); report = m_mergeManager.mergerAllIp(report, ipAddress); calculateTps(payload, report); if (report != null) { model.setReport(report); buildTransactionMetaInfo(model, payload, report); } break; case HISTORY_GROUP_REPORT: report = m_reportService.queryTransactionReport( domain, payload.getHistoryStartDate(), payload.getHistoryEndDate()); calculateTps(payload, report); report = filterReportByGroup(report, domain, group); report = m_mergeManager.mergerAllIp(report, ipAddress); if (report != null) { model.setReport(report); buildTransactionMetaInfo(model, payload, report); } break; case GROUP_GRAPHS: report = getTransactionGraphReport(model, payload); report = filterReportByGroup(report, domain, group); if (name == null || name.length() == 0) { name = Constants.ALL; } report = m_mergeManager.mergerAllName(report, ip, name); model.setReport(report); buildTransactionNameGraph(model, report, type, name, ip); break; case HISTORY_GROUP_GRAPH: List<String> ips = m_configManager.queryIpByDomainAndGroup(domain, group); m_historyGraph.buildGroupTrendGraph(model, payload, ips); break; } if (payload.isXml()) { m_xmlViewer.view(ctx, model); } else { m_jspViewer.view(ctx, model); } }