提交 c5bd8178 编写于 作者: Y yanchun.yang

commit the matirx history report

上级 d1ca0a9a
......@@ -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<MatrixReport> implem
@Inject
private ReportDao m_reportDao;
@SuppressWarnings("unused")
@Inject
private TaskDao m_taskDao;
private Map<String, MatrixReport> m_reports = new HashMap<String, MatrixReport>();
......
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<Context> {
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<Context> {
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<Report> reports = m_reportDao.findAllByDomainNameDuration(start, end, domain, "matrix",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, null,
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
matrixReport = m_matrixMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> 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();
......
......@@ -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"),
;
......
......@@ -11,6 +11,8 @@ public class JspViewer extends BaseJspViewer<ReportPage, Action, Context, Model>
switch (action) {
case HOURLY_REPORT:
return JspFile.VIEW.getPath();
case HISTORY_REPORT:
return JspFile.HISTORY_REPORT.getPath();
}
throw new RuntimeException("Unknown action: " + action);
......
......@@ -1332,6 +1332,15 @@
<role>com.dianping.cat.report.page.matrix.Handler</role>
<implementation>com.dianping.cat.report.page.matrix.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.matrix.MatrixMerger</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.matrix.JspViewer</role>
</requirement>
......
......@@ -7,7 +7,7 @@
<jsp:useBean id="payload" type="com.dianping.cat.report.page.matrix.Payload" scope="request" />
<jsp:useBean id="model" type="com.dianping.cat.report.page.matrix.Model" scope="request" />
<a:noSwitchReport title="Matrix Report" navUrlPrefix="domain=${model.domain}">
<a:report title="Matrix Report" navUrlPrefix="domain=${model.domain}">
<jsp:attribute name="subtitle">From ${w:format(model.report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.report.endTime,'yyyy-MM-dd HH:mm:ss')}</jsp:attribute>
<jsp:body>
<res:useCss value="${res.css.local.matrix_css}" target="head-css" />
......@@ -76,5 +76,5 @@
</table>
</jsp:body>
</a:noSwitchReport>
</a:report>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册