From c5bd817828bac30d7c7bd293ce3dc8f507b99e2a Mon Sep 17 00:00:00 2001 From: "yanchun.yang" Date: Thu, 9 Aug 2012 15:02:32 +0800 Subject: [PATCH] commit the matirx history report --- .../cat/consumer/matrix/MatrixAnalyzer.java | 5 ++ .../cat/report/page/matrix/Handler.java | 77 ++++++++++++++++++- .../cat/report/page/matrix/JspFile.java | 2 + .../cat/report/page/matrix/JspViewer.java | 2 + .../resources/META-INF/plexus/components.xml | 9 +++ .../src/main/webapp/jsp/report/matrix.jsp | 4 +- 6 files changed, 95 insertions(+), 4 deletions(-) diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java index a9b900b92..84af9dc49 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java @@ -22,6 +22,7 @@ import com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser; import com.dianping.cat.consumer.matrix.model.transform.DefaultXmlBuilder; import com.dianping.cat.hadoop.dal.Report; import com.dianping.cat.hadoop.dal.ReportDao; +import com.dianping.cat.hadoop.dal.TaskDao; import com.dianping.cat.message.Message; import com.dianping.cat.message.Transaction; import com.dianping.cat.message.spi.AbstractMessageAnalyzer; @@ -36,6 +37,10 @@ public class MatrixAnalyzer extends AbstractMessageAnalyzer implem @Inject private ReportDao m_reportDao; + + @SuppressWarnings("unused") + @Inject + private TaskDao m_taskDao; private Map m_reports = new HashMap(); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java index ea2de2880..1bfd83859 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java @@ -1,15 +1,31 @@ package com.dianping.cat.report.page.matrix; import java.io.IOException; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import javax.servlet.ServletException; +import com.dianping.cat.Cat; import com.dianping.cat.configuration.ServerConfigManager; import com.dianping.cat.consumer.matrix.model.entity.MatrixReport; +import com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser; +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.Report; +import com.dianping.cat.hadoop.dal.ReportDao; +import com.dianping.cat.hadoop.dal.ReportEntity; import com.dianping.cat.report.ReportPage; +import com.dianping.cat.report.page.model.matrix.MatrixReportMerger; import com.dianping.cat.report.page.model.spi.ModelRequest; import com.dianping.cat.report.page.model.spi.ModelResponse; import com.dianping.cat.report.page.model.spi.ModelService; +import com.dianping.cat.report.task.TaskHelper; +import com.dianping.cat.report.task.matrix.MatrixMerger; +import com.site.dal.jdbc.DalException; import com.site.lookup.annotation.Inject; import com.site.lookup.util.StringUtils; import com.site.web.mvc.PageHandler; @@ -17,11 +33,23 @@ import com.site.web.mvc.annotation.InboundActionMeta; import com.site.web.mvc.annotation.OutboundActionMeta; import com.site.web.mvc.annotation.PayloadMeta; + + public class Handler implements PageHandler { public static final double NOTEXIST = -1; public static final long ONE_HOUR = 3600 * 1000L; + + @Inject + protected ReportDao m_reportDao; + + + @Inject + private MatrixMerger m_matrixMerger; + + @Inject + private DailyreportDao m_dailyreportDao; @Inject private JspViewer m_jspViewer; @@ -76,9 +104,54 @@ public class Handler implements PageHandler { m_jspViewer.view(ctx, model); } - public void showSummarizeReport(Model model, Payload payload){ - + private void showSummarizeReport(Model model, Payload payload) { + String domain = payload.getDomain(); + + MatrixReport matrixReport = null; + Date start = payload.getHistoryStartDate(); + Date end = payload.getHistoryEndDate(); + Date currentDayStart = TaskHelper.todayZero(new Date()); + + if (currentDayStart.getTime() == start.getTime()) { + try { + List reports = m_reportDao.findAllByDomainNameDuration(start, end, domain, "matrix", + ReportEntity.READSET_FULL); + List allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, null, + ReportEntity.READSET_DOMAIN_NAME); + + Set domains = new HashSet(); + for (Report report : allReports) { + domains.add(report.getDomain()); + } + matrixReport = m_matrixMerger.mergeForDaily(domain, reports, domains); + } catch (DalException e) { + Cat.logError(e); + } + } else { + try { + List reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "matrix", + DailyreportEntity.READSET_FULL); + MatrixReportMerger merger = new MatrixReportMerger(new MatrixReport(domain)); + for (Dailyreport report : reports) { + String xml = report.getContent(); + MatrixReport reportModel = DefaultSaxParser.parse(xml); + reportModel.accept(merger); + } + matrixReport = merger.getMatrixReport(); + } catch (Exception e) { + Cat.logError(e); + } + } + + if (matrixReport == null) { + return; + } + matrixReport.setStartTime(start); + matrixReport.setEndTime(end); + model.setReport(matrixReport); + model.setMatrix(new DisplayMatrix(matrixReport).setSortBy(payload.getSortBy())); } + public void normalize(Model model, Payload payload) { Action action = payload.getAction(); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspFile.java b/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspFile.java index fb4f27df6..e6d5332c3 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspFile.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspFile.java @@ -2,6 +2,8 @@ package com.dianping.cat.report.page.matrix; public enum JspFile { VIEW("/jsp/report/matrix.jsp"), + + HISTORY_REPORT("/jsp/report/matrixHistoryReport.jsp"), ; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspViewer.java b/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspViewer.java index 1210d4770..cf2e4d577 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspViewer.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/matrix/JspViewer.java @@ -11,6 +11,8 @@ public class JspViewer extends BaseJspViewer switch (action) { case HOURLY_REPORT: return JspFile.VIEW.getPath(); + case HISTORY_REPORT: + return JspFile.HISTORY_REPORT.getPath(); } throw new RuntimeException("Unknown action: " + action); 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 bc081d8b6..10bce1c50 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -1332,6 +1332,15 @@ com.dianping.cat.report.page.matrix.Handler com.dianping.cat.report.page.matrix.Handler + + com.dianping.cat.hadoop.dal.ReportDao + + + com.dianping.cat.report.task.matrix.MatrixMerger + + + com.dianping.cat.hadoop.dal.DailyreportDao + com.dianping.cat.report.page.matrix.JspViewer diff --git a/cat-home/src/main/webapp/jsp/report/matrix.jsp b/cat-home/src/main/webapp/jsp/report/matrix.jsp index 15e9a1319..0e0a95f9e 100644 --- a/cat-home/src/main/webapp/jsp/report/matrix.jsp +++ b/cat-home/src/main/webapp/jsp/report/matrix.jsp @@ -7,7 +7,7 @@ - + From ${w:format(model.report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.report.endTime,'yyyy-MM-dd HH:mm:ss')} @@ -76,5 +76,5 @@ - + -- GitLab