From fe7ea82b59b7110e7dff8a26587d4e35f6699f26 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 13 Jun 2012 15:15:59 +0800 Subject: [PATCH] event graph --- .../cat/report/page/event/Handler.java | 92 +++++++++++++++++++ .../resources/META-INF/plexus/components.xml | 3 + 2 files changed, 95 insertions(+) diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java index 0b78770f4..394ee0f46 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java @@ -1,8 +1,11 @@ package com.dianping.cat.report.page.event; import java.io.IOException; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.servlet.ServletException; @@ -15,6 +18,9 @@ import com.dianping.cat.consumer.event.model.entity.EventType; import com.dianping.cat.hadoop.dal.Dailyreport; import com.dianping.cat.hadoop.dal.DailyreportDao; import com.dianping.cat.hadoop.dal.DailyreportEntity; +import com.dianping.cat.hadoop.dal.Graph; +import com.dianping.cat.hadoop.dal.GraphDao; +import com.dianping.cat.hadoop.dal.GraphEntity; import com.dianping.cat.helper.CatString; import com.dianping.cat.report.ReportPage; import com.dianping.cat.report.graph.GraphBuilder; @@ -32,6 +38,9 @@ import com.site.web.mvc.annotation.OutboundActionMeta; import com.site.web.mvc.annotation.PayloadMeta; public class Handler implements PageHandler { + public static final long ONE_HOUR = 3600 * 1000L; + + public static final double NOTEXIST=-2; @Inject private JspViewer m_jspViewer; @@ -46,6 +55,9 @@ public class Handler implements PageHandler { @Inject private DailyreportDao dailyreportDao; + + @Inject + private GraphDao graphDao; private StatisticsComputer m_computer = new StatisticsComputer(); @@ -155,6 +167,8 @@ public class Handler implements PageHandler { } private void buildTrendGraph(Model model, Payload payload) { + Map dates=this.getGraphData(model, payload); + System.out.println(dates); Date start = payload.getHistoryStartDate(); Date end = payload.getHistoryEndDate(); String domain = model.getDomain(); @@ -310,4 +324,82 @@ public class Handler implements PageHandler { model.setException(e); } } + + public Map getGraphData(Model model,Payload payload){ + Date start = new Date(payload.getDate()); + Date end = payload.getHistoryEndDate(); + 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 events=new ArrayList(); + try { + events=this.graphDao.findByDomainNameIpDuration(start, end, queryIP, domain, "event", GraphEntity.READSET_FULL); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + Map result = buildGraphDates(start, end, type, name, events); + return result; + } + + + Map buildGraphDates(Date start, Date end, String type, String name, List graphs) { + Map result = new HashMap(); + int size = (int) ((end.getTime() - start.getTime()) / ONE_HOUR); + double[] total_count = new double[size]; + double[] failure_count = new double[size]; + + //set the default value + for (int i = 0; i < size; i++) { + total_count[i]=NOTEXIST; + failure_count[i]=NOTEXIST; + } + + if (!isEmpty(type) && isEmpty(name)) { + for (Graph graph : graphs) { + int indexOfperiod = (int) ((graph.getPeriod().getTime() - start.getTime()) / ONE_HOUR); + String summaryContent = graph.getSummaryContent(); + String[] allLines = summaryContent.split("\n"); + for (int j = 0; j < allLines.length; j++) { + String[] records = allLines[j].split("\t"); + if (records[SummaryOrder.TYPE.ordinal()].equals(type)) { + total_count[indexOfperiod] = Double.valueOf(records[SummaryOrder.TOTAL_COUNT.ordinal()]); + failure_count[indexOfperiod] = Double.valueOf(records[SummaryOrder.FAILURE_COUNT.ordinal()]); + } + } + } + } else if (!isEmpty(type) && !isEmpty(name)) { + for (Graph graph : graphs) { + int indexOfperiod = (int) ((graph.getPeriod().getTime() - start.getTime()) / ONE_HOUR); + String detailContent = graph.getDetailContent(); + String[] allLines = detailContent.split("\n"); + for (int j = 0; j < allLines.length; j++) { + String[] records = allLines[j].split("\t"); + if (records[DetailOrder.TYPE.ordinal()].equals(type) && records[DetailOrder.NAME.ordinal()].equals(name)) { + total_count[indexOfperiod] = Double.valueOf(records[DetailOrder.TOTAL_COUNT.ordinal()]); + failure_count[indexOfperiod] = Double.valueOf(records[DetailOrder.FAILURE_COUNT.ordinal()]); + } + } + } + } + result.put("total_count", total_count); + result.put("failure_count", failure_count); + return result; + } + + private boolean isEmpty(String content) { + return content == null || content.equals(""); + } + + public enum SummaryOrder { + TYPE, TOTAL_COUNT, FAILURE_COUNT + } + + public enum DetailOrder { + TYPE, NAME, TOTAL_COUNT, FAILURE_COUNT + } + + } diff --git a/cat-home/src/main/resources/META-INF/plexus/components.xml b/cat-home/src/main/resources/META-INF/plexus/components.xml index eeed88ce7..cbfad1d3a 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -489,6 +489,9 @@ com.dianping.cat.hadoop.dal.DailyreportDao + + com.dianping.cat.hadoop.dal.GraphDao + -- GitLab