提交 e20bb14f 编写于 作者: Y youyong

refactor the cat month report

上级 1430e1be
......@@ -23,7 +23,17 @@ import com.dianping.cat.report.graph.ValueTranslater;
import com.dianping.cat.report.page.cross.DomainManager;
import com.dianping.cat.report.page.health.HistoryGraphs;
import com.dianping.cat.report.service.DailyReportService;
import com.dianping.cat.report.service.HourlyReportService;
import com.dianping.cat.report.service.MonthReportCache;
import com.dianping.cat.report.service.MonthReportService;
import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.service.WeeklyReportCache;
import com.dianping.cat.report.service.WeeklyReportService;
import com.dianping.cat.report.service.impl.DailyReportServiceImpl;
import com.dianping.cat.report.service.impl.HourlyReportServiceImpl;
import com.dianping.cat.report.service.impl.MonthReportServiceImpl;
import com.dianping.cat.report.service.impl.ReportServiceImpl;
import com.dianping.cat.report.service.impl.WeeklyReportServiceImpl;
import com.dianping.cat.report.task.cross.CrossMerger;
import com.dianping.cat.report.task.cross.CrossReportBuilder;
import com.dianping.cat.report.task.database.DatabaseMerger;
......@@ -44,8 +54,8 @@ import com.dianping.cat.report.task.problem.ProblemReportBuilder;
import com.dianping.cat.report.task.spi.ReportFacade;
import com.dianping.cat.report.task.sql.SqlMerger;
import com.dianping.cat.report.task.sql.SqlReportBuilder;
import com.dianping.cat.report.task.thread.TaskProducer;
import com.dianping.cat.report.task.thread.DefaultTaskConsumer;
import com.dianping.cat.report.task.thread.TaskProducer;
import com.dianping.cat.report.task.transaction.TransactionGraphCreator;
import com.dianping.cat.report.task.transaction.TransactionMerger;
import com.dianping.cat.report.task.transaction.TransactionReportBuilder;
......@@ -72,8 +82,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(ValueTranslater.class, DefaultValueTranslater.class));
all.add(C(GraphBuilder.class, DefaultGraphBuilder.class) //
.req(ValueTranslater.class));
all.add(C(DefaultTaskConsumer.class) //
all.add(C(DefaultTaskConsumer.class) //
.req(TaskDao.class, ReportFacade.class));
all.add(C(TransactionGraphCreator.class));
......@@ -122,11 +132,11 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(WeeklyreportDao.class, MonthreportDao.class));
all.add(C(TaskProducer.class, TaskProducer.class) //
.req(TaskDao.class, ReportDao.class, DailyreportDao.class));
.req(TaskDao.class, ReportDao.class));
all.add(C(HealthReportBuilder.class) //
.req(GraphDao.class, ReportDao.class, DailyreportDao.class)//
.req(WeeklyreportDao.class, MonthreportDao.class,HealthServiceCollector.class));
.req(WeeklyreportDao.class, MonthreportDao.class, HealthServiceCollector.class));
all.add(C(ReportFacade.class)//
.req(TransactionReportBuilder.class, EventReportBuilder.class, ProblemReportBuilder.class,//
......@@ -139,7 +149,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(HealthServiceCollector.class).req(DomainManager.class, ReportDao.class));
all.add(C(HistoryGraphs.class, HistoryGraphs.class).//
req(ReportDao.class, DailyreportDao.class));
req(ReportService.class));
all.add(C(Module.class, CatHomeModule.ID, CatHomeModule.class));
all.add(C(ModuleManager.class, DefaultModuleManager.class) //
......@@ -147,9 +157,28 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(DomainNavManager.class).req(ProjectDao.class, ServerConfigManager.class));
all.add(C(HourlyReportService.class, HourlyReportServiceImpl.class)//
.req(ReportDao.class));
all.add(C(DailyReportService.class, DailyReportServiceImpl.class)//
.req(DailyreportDao.class));
all.add(C(WeeklyReportService.class, WeeklyReportServiceImpl.class)//
.req(WeeklyreportDao.class));
all.add(C(MonthReportService.class, MonthReportServiceImpl.class)//
.req(MonthreportDao.class));
all.add(C(WeeklyReportCache.class)//
.req(DailyReportService.class, HourlyReportService.class, ServerConfigManager.class));
all.add(C(MonthReportCache.class)//
.req(DailyReportService.class, HourlyReportService.class, ServerConfigManager.class));
all.add(C(ReportService.class, ReportServiceImpl.class)//
.req(HourlyReportService.class, DailyReportService.class, WeeklyReportService.class,
MonthReportService.class)//
.req(WeeklyReportCache.class, MonthReportCache.class));
// model service
all.addAll(new ServiceComponentConfigurator().defineComponents());
......
......@@ -48,7 +48,8 @@ public class TimeUtil {
return cal.getTime();
}
public static Date getLastWeek() {
// get lastest sarterday
public static Date getCurrentWeek() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
......@@ -57,9 +58,28 @@ public class TimeUtil {
cal.set(Calendar.MILLISECOND, 0);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 7) {
return cal.getTime();
} else {
cal.add(Calendar.DATE, - dayOfWeek);
}
return cal.getTime();
}
// last week sarterday
public static Date getLastWeekEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, -1 - dayOfWeek);
return cal.getTime();
}
}
......@@ -2,16 +2,9 @@ package com.dianping.cat.report.page.cache;
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.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.event.model.entity.EventName;
import com.dianping.cat.consumer.event.model.entity.EventReport;
......@@ -20,21 +13,14 @@ import com.dianping.cat.consumer.transaction.model.entity.Machine;
import com.dianping.cat.consumer.transaction.model.entity.TransactionName;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionType;
import com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.model.event.EventReportMerger;
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.page.model.transaction.TransactionReportMerger;
import com.dianping.cat.report.task.TaskHelper;
import com.dianping.cat.report.task.event.EventMerger;
import com.dianping.cat.report.task.transaction.TransactionMerger;
import com.site.dal.jdbc.DalException;
import com.dianping.cat.report.service.ReportService;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -43,11 +29,6 @@ import com.site.web.mvc.annotation.OutboundActionMeta;
import com.site.web.mvc.annotation.PayloadMeta;
public class Handler implements PageHandler<Context> {
@Inject
private DailyreportDao m_dailyreportDao;
@Inject
private EventMerger m_eventMerger;
@Inject(type = ModelService.class, value = "event")
private ModelService<EventReport> m_eventService;
......@@ -59,10 +40,7 @@ public class Handler implements PageHandler<Context> {
private ServerConfigManager m_manager;
@Inject
protected ReportDao m_reportDao;
@Inject
private TransactionMerger m_transactionMerger;
private ReportService m_reportService;
@Inject(type = ModelService.class, value = "transaction")
private ModelService<TransactionReport> m_transactionService;
......@@ -150,44 +128,8 @@ public class Handler implements PageHandler<Context> {
String domain = payload.getDomain();
Date start = payload.getHistoryStartDate();
Date end = payload.getHistoryEndDate();
Date currentDayStart = TaskHelper.todayZero(new Date());
EventReport eventReport = null;
if (currentDayStart.getTime() == start.getTime()) {
try {
List<Report> reports = m_reportDao.findAllByDomainNameDuration(start, end, domain, "event",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "event",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
eventReport = m_eventMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "event",
DailyreportEntity.READSET_FULL);
EventReportMerger merger = new EventReportMerger(new EventReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
EventReport reportModel = com.dianping.cat.consumer.event.model.transform.DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
eventReport = merger.getEventReport();
} catch (Exception e) {
Cat.logError(e);
}
}
if (eventReport != null) {
eventReport.setStartTime(start);
eventReport.setEndTime(end);
}
EventReport eventReport = m_reportService.queryEventReport(domain, start, end);
return eventReport;
}
......@@ -195,45 +137,7 @@ public class Handler implements PageHandler<Context> {
String domain = payload.getDomain();
Date start = payload.getHistoryStartDate();
Date end = payload.getHistoryEndDate();
Date currentDayStart = TaskHelper.todayZero(new Date());
TransactionReport transactionReport = null;
if (currentDayStart.getTime() == start.getTime()) {
try {
List<Report> reports = m_reportDao.findAllByDomainNameDuration(start, end, domain, "transaction",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "transaction",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
transactionReport = m_transactionMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "transaction",
DailyreportEntity.READSET_FULL);
TransactionReportMerger merger = new TransactionReportMerger(new TransactionReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
TransactionReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
transactionReport = merger.getTransactionReport();
} catch (Exception e) {
Cat.logError(e);
}
}
if (transactionReport != null) {
transactionReport.setStartTime(start);
transactionReport.setEndTime(end);
}
return transactionReport;
return m_reportService.queryTransactionReport(domain, start, end);
}
private EventReport getHourlyEventReport(Payload payload) {
......
......@@ -2,33 +2,19 @@ package com.dianping.cat.report.page.cross;
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.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.cross.display.HostInfo;
import com.dianping.cat.report.page.cross.display.MethodInfo;
import com.dianping.cat.report.page.cross.display.ProjectInfo;
import com.dianping.cat.report.page.model.cross.CrossReportMerger;
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.cross.CrossMerger;
import com.site.dal.jdbc.DalException;
import com.dianping.cat.report.service.ReportService;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -41,16 +27,10 @@ public class Handler implements PageHandler<Context> {
private JspViewer m_jspViewer;
@Inject
private ServerConfigManager m_manager;
@Inject
private ReportDao m_reportDao;
private ReportService m_reportService;
@Inject
private DailyreportDao m_dailyreportDao;
@Inject
private CrossMerger m_crossMerger;
private ServerConfigManager m_manager;
@Inject
private DomainManager m_domainManager;
......@@ -78,49 +58,10 @@ public class Handler implements PageHandler<Context> {
private CrossReport getSummarizeReport(Payload payload) {
String domain = payload.getDomain();
CrossReport crossReport = 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, "cross",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "cross",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
crossReport = m_crossMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "cross",
DailyreportEntity.READSET_FULL);
CrossReportMerger merger = new CrossReportMerger(new CrossReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
CrossReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
crossReport = merger.getCrossReport();
} catch (Exception e) {
Cat.logError(e);
}
}
if (crossReport == null) {
return null;
}
crossReport.setStartTime(start);
crossReport.setEndTime(end);
return crossReport;
return m_reportService.queryCrossReport(domain, start, end);
}
@Override
......
......@@ -2,31 +2,17 @@ package com.dianping.cat.report.page.database;
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.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.database.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.model.database.DatabaseReportMerger;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
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.database.DatabaseMerger;
import com.site.dal.jdbc.DalException;
import com.dianping.cat.report.service.ReportService;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -40,14 +26,8 @@ import com.site.web.mvc.annotation.PayloadMeta;
public class Handler implements PageHandler<Context> {
@Inject
protected ReportDao m_reportDao;
@Inject
private DatabaseMerger m_databaseMerger;
@Inject
private DailyreportDao m_dailyreportDao;
private ReportService m_reportService;
@Inject
private JspViewer m_jspViewer;
......@@ -151,45 +131,9 @@ public class Handler implements PageHandler<Context> {
private DatabaseReport showSummarizeReport(Model model, Payload payload) {
String database = payload.getDatabase();
DatabaseReport databaseReport = 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.findDatabaseAllByDomainNameDuration(start, end, database, "database",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findDatabaseAllByDomainNameDuration(start, end, null, "database",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> databases = new HashSet<String>();
for (Report report : allReports) {
databases.add(report.getDomain());
}
databaseReport = m_databaseMerger.mergeForDaily(database, reports, databases);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findDatabaseAllByDomainNameDuration(start, end, database, "database",
DailyreportEntity.READSET_FULL);
DatabaseReportMerger merger = new DatabaseReportMerger(new DatabaseReport(database));
for (Dailyreport report : reports) {
String xml = report.getContent();
DatabaseReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
databaseReport = merger.getDatabaseReport();
} catch (Exception e) {
Cat.logError(e);
}
}
databaseReport.setStartTime(start);
databaseReport.setEndTime(end);
return databaseReport;
return m_reportService.queryDatabaseReport(database, start, end);
}
}
......@@ -4,15 +4,10 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.servlet.ServletException;
import com.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.event.StatisticsComputer;
......@@ -20,23 +15,16 @@ import com.dianping.cat.consumer.event.model.entity.EventName;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.event.model.entity.EventType;
import com.dianping.cat.consumer.event.model.entity.Machine;
import com.dianping.cat.consumer.event.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.graph.GraphBuilder;
import com.dianping.cat.report.page.PieChart;
import com.dianping.cat.report.page.PieChart.Item;
import com.dianping.cat.report.page.model.event.EventReportMerger;
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.event.EventMerger;
import com.dianping.cat.report.service.ReportService;
import com.google.gson.Gson;
import com.site.dal.jdbc.DalException;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -49,9 +37,6 @@ public class Handler implements PageHandler<Context> {
@Inject
private GraphBuilder m_builder;
@Inject
private DailyreportDao m_dailyreportDao;
@Inject
private HistoryGraphs m_eventHistoryGraphs;
......@@ -62,10 +47,7 @@ public class Handler implements PageHandler<Context> {
private ServerConfigManager m_manager;
@Inject
private EventMerger m_eventMerger;
@Inject
protected ReportDao m_reportDao;
private ReportService m_reportService;
@Inject(type = ModelService.class, value = "event")
private ModelService<EventReport> m_service;
......@@ -325,47 +307,11 @@ public class Handler implements PageHandler<Context> {
String ip = payload.getIpAddress();
String domain = model.getDomain();
EventReport eventReport = 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, "event",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "event",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
eventReport = m_eventMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "event",
DailyreportEntity.READSET_FULL);
EventReportMerger merger = new EventReportMerger(new EventReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
EventReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
eventReport = merger.getEventReport();
} catch (Exception e) {
Cat.logError(e);
}
}
if (eventReport == null) {
return;
}
eventReport.setStartTime(start);
eventReport.setEndTime(end);
eventReport.setDomain(model.getDisplayDomain());
EventReport eventReport = m_reportService.queryEventReport(domain, start, end);
calculateTps(payload, eventReport);
model.setReport(eventReport);
if (!StringUtils.isEmpty(type)) {
......
......@@ -3,24 +3,16 @@ package com.dianping.cat.report.page.health;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import com.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.health.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.HistoryGraphItem;
import com.dianping.cat.report.task.health.HealthReportMerger;
import com.dianping.cat.report.service.ReportService;
import com.google.gson.Gson;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
......@@ -38,10 +30,7 @@ public class Handler implements PageHandler<Context> {
private ServerConfigManager m_manager;
@Inject
private ReportDao m_reportDao;
@Inject
private DailyreportDao m_dailyReportDao;
private ReportService m_reportService;
@Inject
private HistoryGraphs m_graphs;
......@@ -67,19 +56,7 @@ public class Handler implements PageHandler<Context> {
private HealthReport getHistoryReport(Date startDate, Date endDate, String domain) {
try {
List<Dailyreport> reports = m_dailyReportDao.findAllByDomainNameDuration(startDate, endDate, domain, "health",
DailyreportEntity.READSET_FULL);
HealthReportMerger merger = new HealthReportMerger(new HealthReport(domain));
HealthReport healthReport = merger.getHealthReport();
merger.setDuration(endDate.getTime() - startDate.getTime());
for (Dailyreport report : reports) {
String xml = report.getContent();
HealthReport model = DefaultSaxParser.parse(xml);
model.accept(merger);
healthReport.getDomainNames().addAll(model.getDomainNames());
}
return healthReport;
return m_reportService.queryHealthReport(domain, startDate, endDate);
} catch (Exception e) {
Cat.logError(e);
}
......@@ -88,22 +65,7 @@ public class Handler implements PageHandler<Context> {
private HealthReport getHourlyReport(long date, String domain) {
try {
List<Report> reports = m_reportDao.findAllByPeriodDomainName(new Date(date), domain, "health",
ReportEntity.READSET_FULL);
HealthReportMerger merger = new HealthReportMerger(new HealthReport(domain));
HealthReport healthReport = merger.getHealthReport();
merger.setDuration(TimeUtil.ONE_HOUR);
for (Report report : reports) {
String xml = report.getContent();
HealthReport model = DefaultSaxParser.parse(xml);
model.accept(merger);
healthReport.getDomainNames().addAll(model.getDomainNames());
}
return healthReport;
return m_reportService.queryHealthReport(domain, new Date(date), new Date(date + TimeUtil.ONE_HOUR));
} catch (Exception e) {
Cat.logError(e);
}
......
......@@ -4,26 +4,16 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.health.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.page.HistoryGraphItem;
import com.dianping.cat.report.task.health.HealthReportMerger;
import com.dianping.cat.report.service.ReportService;
import com.site.lookup.annotation.Inject;
public class HistoryGraphs {
@Inject
private ReportDao m_reportDao;
@Inject
private DailyreportDao m_dailyReportDao;
private ReportService m_reportService;
public HistoryGraphItem buildHistoryGraph(String domain, Date start, Date end, String reportType, String key) {
if (reportType.equalsIgnoreCase("day")) {
......@@ -60,7 +50,7 @@ public class HistoryGraphs {
private double[] getDateFromReports(List<HealthReport> reports, int size, String key) {
double[] result = new double[size];
int length = reports.size();
for (int i = 0; i < length; i++) {
HealthReport report = reports.get(i);
try {
......@@ -166,54 +156,17 @@ public class HistoryGraphs {
result[i] = -1;
}
} catch (NullPointerException e) {
//ignore
// ignore
}
}
return result;
}
private HealthReport getHistoryReport(Date startDate, Date endDate, String domain) {
try {
List<Dailyreport> reports = m_dailyReportDao.findAllByDomainNameDuration(startDate, endDate, domain, "health",
DailyreportEntity.READSET_FULL);
HealthReportMerger merger = new HealthReportMerger(new HealthReport(domain));
HealthReport healthReport = merger.getHealthReport();
merger.setDuration(endDate.getTime() - startDate.getTime());
for (Dailyreport report : reports) {
String xml = report.getContent();
HealthReport model = DefaultSaxParser.parse(xml);
model.accept(merger);
healthReport.getDomainNames().addAll(model.getDomainNames());
}
return healthReport;
} catch (Exception e) {
Cat.logError(e);
}
return new HealthReport(domain);
private HealthReport getHistoryReport(Date startDate, Date endDate, String domain) {
return m_reportService.queryHealthReport(domain, startDate, endDate);
}
private HealthReport getHourlyReport(long date, String domain) {
try {
List<Report> reports = m_reportDao.findAllByPeriodDomainName(new Date(date), domain, "health",
ReportEntity.READSET_FULL);
HealthReportMerger merger = new HealthReportMerger(new HealthReport(domain));
HealthReport healthReport = merger.getHealthReport();
merger.setDuration(TimeUtil.ONE_HOUR);
for (Report report : reports) {
String xml = report.getContent();
HealthReport model = DefaultSaxParser.parse(xml);
model.accept(merger);
healthReport.getDomainNames().addAll(model.getDomainNames());
}
return healthReport;
} catch (Exception e) {
Cat.logError(e);
}
return new HealthReport(domain);
return m_reportService.queryHealthReport(domain, new Date(date), new Date(date + TimeUtil.ONE_HOUR));
}
}
......@@ -2,30 +2,16 @@ 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.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
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.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
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.dianping.cat.report.service.ReportService;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -36,14 +22,8 @@ import com.site.web.mvc.annotation.PayloadMeta;
public class Handler implements PageHandler<Context> {
@Inject
protected ReportDao m_reportDao;
@Inject
private MatrixMerger m_matrixMerger;
@Inject
private DailyreportDao m_dailyreportDao;
private ReportService m_reportService;
@Inject
private JspViewer m_jspViewer;
......@@ -100,42 +80,10 @@ public class Handler implements PageHandler<Context> {
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, "matrix",
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);
}
}
MatrixReport matrixReport = m_reportService.queryMatrixReport(domain, start, end);
if (matrixReport == null) {
return;
}
......
......@@ -6,36 +6,22 @@ import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import com.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.configuration.server.entity.Domain;
import com.dianping.cat.consumer.problem.model.entity.Machine;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.model.problem.ProblemReportMerger;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
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.problem.ProblemMerger;
import com.dianping.cat.report.service.ReportService;
import com.google.gson.Gson;
import com.site.dal.jdbc.DalException;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -49,23 +35,17 @@ public class Handler implements PageHandler<Context> {
private static final String VIEW = "view";
@Inject
private DailyreportDao m_dailyreportDao;
@Inject
private HistoryGraphs m_historyGraphs;
@Inject
private JspViewer m_jspViewer;
@Inject
private ProblemMerger m_problemMerger;
@Inject
protected ReportDao m_reportDao;
@Inject
private ServerConfigManager m_manager;
@Inject
private ReportService m_reportService;
@Inject(type = ModelService.class, value = "problem")
private ModelService<ProblemReport> m_service;
......@@ -322,39 +302,8 @@ public class Handler implements PageHandler<Context> {
String domain = model.getDomain();
Date start = payload.getHistoryStartDate();
Date end = payload.getHistoryEndDate();
ProblemReport problemReport = null;
Date currentDayStart = TaskHelper.todayZero(new Date());
if (currentDayStart.getTime() == start.getTime()) {
try {
List<Report> reports = m_reportDao.findAllByDomainNameDuration(start, end, domain, "problem",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "problem",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
return m_problemMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
return new ProblemReport(domain);
}
}
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "problem",
DailyreportEntity.READSET_FULL);
ProblemReportMerger merger = new ProblemReportMerger(new ProblemReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
ProblemReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
problemReport = merger.getProblemReport();
} catch (Exception e) {
Cat.logError(e);
}
ProblemReport problemReport = m_reportService.queryProblemReport(domain, start, end);
return problemReport;
}
......
......@@ -2,33 +2,19 @@ package com.dianping.cat.report.page.sql;
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.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.sql.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
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.page.model.sql.SqlReportMerger;
import com.dianping.cat.report.task.TaskHelper;
import com.dianping.cat.report.task.sql.SqlMerger;
import com.site.dal.jdbc.DalException;
import com.dianping.cat.report.service.ReportService;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -42,14 +28,8 @@ import com.site.web.mvc.annotation.PayloadMeta;
public class Handler implements PageHandler<Context> {
@Inject
protected ReportDao m_reportDao;
@Inject
private SqlMerger m_sqlMerger;
@Inject
private DailyreportDao m_dailyreportDao;
private ReportService m_reportService;
@Inject
private JspViewer m_jspViewer;
......@@ -154,46 +134,10 @@ public class Handler implements PageHandler<Context> {
}
private SqlReport showSummarizeReport(Model model, Payload payload) {
SqlReport sqlReport = null;
String domain = payload.getDomain();
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, "sql",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "sql",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> sqls = new HashSet<String>();
for (Report report : allReports) {
sqls.add(report.getDomain());
}
sqlReport = m_sqlMerger.mergeForDaily(domain, reports, sqls);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "sql",
DailyreportEntity.READSET_FULL);
SqlReportMerger merger = new SqlReportMerger(new SqlReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
SqlReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
sqlReport = merger.getSqlReport();
} catch (Exception e) {
Cat.logError(e);
}
}
sqlReport.setStartTime(start);
sqlReport.setEndTime(end);
return sqlReport;
return m_reportService.querySqlReport(domain, start, end);
}
}
......@@ -3,15 +3,10 @@ package com.dianping.cat.report.page.transaction;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.servlet.ServletException;
import com.dainping.cat.consumer.dal.report.Report;
import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.ReportEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.transaction.StatisticsComputer;
......@@ -19,11 +14,7 @@ import com.dianping.cat.consumer.transaction.model.entity.Machine;
import com.dianping.cat.consumer.transaction.model.entity.TransactionName;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionType;
import com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.home.dal.report.Dailyreport;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.DailyreportEntity;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.graph.GraphBuilder;
import com.dianping.cat.report.page.PieChart;
......@@ -31,16 +22,13 @@ import com.dianping.cat.report.page.PieChart.Item;
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.page.model.transaction.TransactionReportMerger;
import com.dianping.cat.report.page.transaction.DisplayNames.TransactionNameModel;
import com.dianping.cat.report.page.transaction.GraphPayload.AverageTimePayload;
import com.dianping.cat.report.page.transaction.GraphPayload.DurationPayload;
import com.dianping.cat.report.page.transaction.GraphPayload.FailurePayload;
import com.dianping.cat.report.page.transaction.GraphPayload.HitPayload;
import com.dianping.cat.report.task.TaskHelper;
import com.dianping.cat.report.task.transaction.TransactionMerger;
import com.dianping.cat.report.service.ReportService;
import com.google.gson.Gson;
import com.site.dal.jdbc.DalException;
import com.site.lookup.annotation.Inject;
import com.site.lookup.util.StringUtils;
import com.site.web.mvc.PageHandler;
......@@ -53,9 +41,6 @@ public class Handler implements PageHandler<Context> {
@Inject
private GraphBuilder m_builder;
@Inject
private DailyreportDao m_dailyreportDao;
@Inject
private HistoryGraphs m_historyGraph;
......@@ -66,10 +51,7 @@ public class Handler implements PageHandler<Context> {
private XmlViewer m_xmlViewer;
@Inject
private TransactionMerger m_transactionMerger;
@Inject
protected ReportDao m_reportDao;
private ReportService m_reportService;
@Inject
private ServerConfigManager m_manager;
......@@ -360,47 +342,9 @@ public class Handler implements PageHandler<Context> {
String ip = payload.getIpAddress();
String domain = model.getDomain();
TransactionReport transactionReport = 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, "transaction",
ReportEntity.READSET_FULL);
List<Report> allReports = m_reportDao.findAllByDomainNameDuration(start, end, null, "transaction",
ReportEntity.READSET_DOMAIN_NAME);
Set<String> domains = new HashSet<String>();
for (Report report : allReports) {
domains.add(report.getDomain());
}
transactionReport = m_transactionMerger.mergeForDaily(domain, reports, domains);
} catch (DalException e) {
Cat.logError(e);
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findAllByDomainNameDuration(start, end, domain, "transaction",
DailyreportEntity.READSET_FULL);
TransactionReportMerger merger = new TransactionReportMerger(new TransactionReport(domain));
for (Dailyreport report : reports) {
String xml = report.getContent();
TransactionReport reportModel = DefaultSaxParser.parse(xml);
reportModel.accept(merger);
}
transactionReport = merger.getTransactionReport();
} catch (Exception e) {
Cat.logError(e);
}
}
if (transactionReport == null) {
return;
}
transactionReport.setStartTime(start);
transactionReport.setEndTime(end);
TransactionReport transactionReport = m_reportService.queryTransactionReport(domain, start, end);
calculateTps(payload, transactionReport);
model.setReport(transactionReport);
if (!StringUtils.isEmpty(type)) {
......
package com.dianping.cat.report.service;
import java.util.Date;
import java.util.Set;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
......@@ -13,6 +14,9 @@ import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
public interface HourlyReportService {
public Set<String> queryAllDatabaseNames(Date start, Date end, String reportName);
public Set<String> queryAllDomainNames(Date start, Date end, String reportName);
public TransactionReport queryTransactionReport(String domain, Date start, Date end);
......
package com.dianping.cat.report.service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.message.Transaction;
import com.site.helper.Threads;
import com.site.helper.Threads.Task;
import com.site.lookup.annotation.Inject;
public class MonthReportCache implements Initializable {
private long m_end;
private Map<String, TransactionReport> m_transactionReports = new HashMap<String, TransactionReport>();
private Map<String, EventReport> m_eventReports = new HashMap<String, EventReport>();
private Map<String, ProblemReport> m_problemReports = new HashMap<String, ProblemReport>();
private Map<String, MatrixReport> m_matrixReports = new HashMap<String, MatrixReport>();
private Map<String, CrossReport> m_crossReports = new HashMap<String, CrossReport>();
private Map<String, SqlReport> m_sqlReports = new HashMap<String, SqlReport>();
private Map<String, DatabaseReport> m_databaseRepors = new HashMap<String, DatabaseReport>();
private Map<String, HealthReport> m_healthReports = new HashMap<String, HealthReport>();
@Inject
private DailyReportService m_dailyReportService;
@Inject
private HourlyReportService m_hourReportService;
@Inject
private ServerConfigManager m_serverConfigManager;
@Override
public void initialize() throws InitializationException {
if (m_serverConfigManager.isJobMachine()) {
Task reload = new Reload();
Threads.forGroup("Cat").start(reload);
}
}
public TransactionReport queryTransactionReport(String domain, Date start) {
return m_transactionReports.get(domain);
}
public EventReport queryEventReport(String domain, Date start) {
return m_eventReports.get(domain);
}
public ProblemReport queryProblemReport(String domain, Date start) {
return m_problemReports.get(domain);
}
public HeartbeatReport queryHeartbeatReport(String domain, Date start) {
return null;
}
public MatrixReport queryMatrixReport(String domain, Date start) {
return m_matrixReports.get(domain);
}
public CrossReport queryCrossReport(String domain, Date start) {
return m_crossReports.get(domain);
}
public SqlReport querySqlReport(String domain, Date start) {
return m_sqlReports.get(domain);
}
public DatabaseReport queryDatabaseReport(String database, Date start) {
return m_databaseRepors.get(database);
}
public HealthReport queryHealthReport(String domain, Date start) {
return m_healthReports.get(domain);
}
public class Reload implements Task {
private void reload() {
Date start = TimeUtil.getCurrentMonth();
Date end = TimeUtil.getCurrentDay();
m_end = end.getTime();
Set<String> domains = m_hourReportService.queryAllDomainNames(start, end, "transaction");
for (String domain : domains) {
m_transactionReports.put(domain, m_dailyReportService.queryTransactionReport(domain, start, end));
m_eventReports.put(domain, m_dailyReportService.queryEventReport(domain, start, end));
m_problemReports.put(domain, m_dailyReportService.queryProblemReport(domain, start, end));
m_crossReports.put(domain, m_dailyReportService.queryCrossReport(domain, start, end));
m_matrixReports.put(domain, m_dailyReportService.queryMatrixReport(domain, start, end));
m_sqlReports.put(domain, m_dailyReportService.querySqlReport(domain, start, end));
m_healthReports.put(domain, m_dailyReportService.queryHealthReport(domain, start, end));
}
Set<String> databases = m_hourReportService.queryAllDatabaseNames(start, start, "database");
for (String database : databases) {
m_databaseRepors.put(database, m_dailyReportService.queryDatabaseReport(database, start, end));
}
}
@Override
public void run() {
boolean active = true;
while (active) {
Date date = TimeUtil.getCurrentDay();
long time = date.getTime();
if (time > m_end) {
Transaction t = Cat.newTransaction("ReportReload", "Month");
try {
reload();
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
Cat.logError(e);
t.setStatus(e);
} finally {
t.complete();
}
}
try {
Thread.sleep(60 * 60 * 1000);
} catch (InterruptedException e) {
active = false;
}
}
}
@Override
public String getName() {
return "Month-Report-Cache";
}
@Override
public void shutdown() {
}
}
}
package com.dianping.cat.report.service;
import java.util.Date;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
public interface ReportService {
public TransactionReport queryTransactionReport(String domain, Date start, Date end);
public EventReport queryEventReport(String domain, Date start, Date end);
public ProblemReport queryProblemReport(String domain, Date start, Date end);
public HeartbeatReport queryHeartbeatReport(String domain, Date start, Date end);
public MatrixReport queryMatrixReport(String domain, Date start, Date end);
public CrossReport queryCrossReport(String domain, Date start, Date end);
public SqlReport querySqlReport(String domain, Date start, Date end);
public DatabaseReport queryDatabaseReport(String database, Date start, Date end);
public HealthReport queryHealthReport(String domain, Date start, Date end);
}
package com.dianping.cat.report.service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.message.Transaction;
import com.site.helper.Threads;
import com.site.helper.Threads.Task;
import com.site.lookup.annotation.Inject;
public class WeeklyReportCache implements Initializable {
private long m_end;
private Map<String, TransactionReport> m_transactionReports = new HashMap<String, TransactionReport>();
private Map<String, EventReport> m_eventReports = new HashMap<String, EventReport>();
private Map<String, ProblemReport> m_problemReports = new HashMap<String, ProblemReport>();
private Map<String, MatrixReport> m_matrixReports = new HashMap<String, MatrixReport>();
private Map<String, CrossReport> m_crossReports = new HashMap<String, CrossReport>();
private Map<String, SqlReport> m_sqlReports = new HashMap<String, SqlReport>();
private Map<String, DatabaseReport> m_databaseRepors = new HashMap<String, DatabaseReport>();
private Map<String, HealthReport> m_healthReports = new HashMap<String, HealthReport>();
@Inject
private DailyReportService m_dailyReportService;
@Inject
private HourlyReportService m_hourReportService;
@Inject
private ServerConfigManager m_serverConfigManager;
public TransactionReport queryTransactionReport(String domain, Date start){
return m_transactionReports.get(domain);
}
public EventReport queryEventReport(String domain, Date start){
return m_eventReports.get(domain);
}
public ProblemReport queryProblemReport(String domain, Date start){
return m_problemReports.get(domain);
}
public HeartbeatReport queryHeartbeatReport(String domain, Date start){
return null;
}
public MatrixReport queryMatrixReport(String domain, Date start){
return m_matrixReports.get(domain);
}
public CrossReport queryCrossReport(String domain, Date start){
return m_crossReports.get(domain);
}
public SqlReport querySqlReport(String domain, Date start){
return m_sqlReports.get(domain);
}
public DatabaseReport queryDatabaseReport(String database, Date start){
return m_databaseRepors.get(database);
}
public HealthReport queryHealthReport(String domain, Date start){
return m_healthReports.get(domain);
}
@Override
public void initialize() throws InitializationException {
if (m_serverConfigManager.isJobMachine()) {
Task reload = new Reload();
Threads.forGroup("Cat").start(reload);
}
}
public class Reload implements Task{
private void reload() {
Date start = TimeUtil.getCurrentWeek();
Date end = TimeUtil.getCurrentDay();
m_end = end.getTime();
Set<String> domains = m_hourReportService.queryAllDomainNames(start, end, "transaction");
for (String domain : domains) {
m_transactionReports.put(domain, m_dailyReportService.queryTransactionReport(domain, start, end));
m_eventReports.put(domain, m_dailyReportService.queryEventReport(domain, start, end));
m_problemReports.put(domain, m_dailyReportService.queryProblemReport(domain, start, end));
m_matrixReports.put(domain, m_dailyReportService.queryMatrixReport(domain, start, end));
m_crossReports.put(domain, m_dailyReportService.queryCrossReport(domain, start, end));
m_sqlReports.put(domain, m_dailyReportService.querySqlReport(domain, start, end));
m_healthReports.put(domain, m_dailyReportService.queryHealthReport(domain, start, end));
}
Set<String> databases = m_hourReportService.queryAllDatabaseNames(start, start, "database");
for (String database : databases) {
m_databaseRepors.put(database, m_dailyReportService.queryDatabaseReport(database, start, end));
}
}
@Override
public void run() {
boolean active = true;
while (active) {
Date date = TimeUtil.getCurrentDay();
long time = date.getTime();
if (time > m_end) {
Transaction t = Cat.newTransaction("ReportReload", "Week");
try {
reload();
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
Cat.logError(e);
t.setStatus(e);
} finally {
t.complete();
}
}
try {
Thread.sleep(60 * 60 * 1000);
} catch (InterruptedException e) {
active = false;
}
}
}
@Override
public String getName() {
return "Weekly-Report-Cache";
}
@Override
public void shutdown() {
}
}
}
......@@ -36,8 +36,24 @@ public class HourlyReportServiceImpl implements HourlyReportService {
@Inject
private ReportDao m_reportDao;
public Set<String> queryAllDatabaseNames(Date start, Date end, String reportName) {
Set<String> domains = new HashSet<String>();
try {
List<Report> reports = m_reportDao.findDatabaseAllByDomainNameDuration(start, end, null, reportName,
ReportEntity.READSET_DOMAIN_NAME);
for (Report report : reports) {
domains.add(report.getDomain());
}
} catch (DalException e) {
Cat.logError(e);
}
return domains;
}
private Set<String> queryAllDomainNames(Date start, Date end, String reportName) {
public Set<String> queryAllDomainNames(Date start, Date end, String reportName) {
Set<String> domains = new HashSet<String>();
try {
......
package com.dianping.cat.report.service.impl;
import java.util.Date;
import com.dianping.cat.Cat;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.home.dal.report.Monthreport;
import com.dianping.cat.home.dal.report.MonthreportDao;
import com.dianping.cat.home.dal.report.MonthreportEntity;
import com.dianping.cat.report.service.MonthReportService;
import com.site.lookup.annotation.Inject;
public class MonthReportServiceImpl implements MonthReportService {
@Inject
private MonthreportDao m_monthreportDao;
@Override
public TransactionReport queryTransactionReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "transaction",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new TransactionReport(domain);
}
@Override
public EventReport queryEventReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "event",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.event.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new EventReport(domain);
}
@Override
public ProblemReport queryProblemReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "problem",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new ProblemReport(domain);
}
@Override
public HeartbeatReport queryHeartbeatReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "heartbeat",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.heartbeat.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new HeartbeatReport(domain);
}
@Override
public MatrixReport queryMatrixReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "matrix",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new MatrixReport(domain);
}
@Override
public CrossReport queryCrossReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "cross",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new CrossReport(domain);
}
@Override
public SqlReport querySqlReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "sql",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.sql.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new SqlReport(domain);
}
@Override
public DatabaseReport queryDatabaseReport(String database, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, database, "database",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.database.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new DatabaseReport(database);
}
@Override
public HealthReport queryHealthReport(String domain, Date start) {
try {
Monthreport entity = m_monthreportDao.findReportByDomainNamePeriod(start, domain, "health",
MonthreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.health.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new HealthReport(domain);
}
}
package com.dianping.cat.report.service.impl;
import java.util.Calendar;
import java.util.Date;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.service.DailyReportService;
import com.dianping.cat.report.service.HourlyReportService;
import com.dianping.cat.report.service.MonthReportCache;
import com.dianping.cat.report.service.MonthReportService;
import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.service.WeeklyReportCache;
import com.dianping.cat.report.service.WeeklyReportService;
import com.site.lookup.annotation.Inject;
public class ReportServiceImpl implements ReportService {
@Inject
private HourlyReportService m_hourlyReportService;
@Inject
private DailyReportService m_dailyReportService;
@Inject
private WeeklyReportService m_weeklyReportService;
@Inject
private MonthReportService m_monthReportService;
@Inject
private WeeklyReportCache m_weeklyReportCache;
@Inject
private MonthReportCache m_monthReportCache;
public static final int s_hourly = 1;
public static final int s_daily = 2;
public static final int s_historyDaily = 3;
public static final int s_currentWeekly = 4;
public static final int s_historyWeekly = 5;
public static final int s_currentMonth = 6;
public static final int s_historyMonth = 7;
public static final int s_customer = 8;
public int getQueryType(Date start, Date end) {
long endTime = end.getTime();
long startTime = start.getTime();
long currentWeek = TimeUtil.getCurrentWeek().getTime();
long currentMonth = TimeUtil.getCurrentMonth().getTime();
long duration = endTime - startTime;
if (duration == TimeUtil.ONE_HOUR) {
return s_hourly;
}
if (duration == TimeUtil.ONE_DAY) {
return s_daily;
}
Calendar cal = Calendar.getInstance();
cal.setTime(start);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 7) {
if (duration == TimeUtil.ONE_DAY * 7) {
if (startTime == currentWeek) {
return s_currentWeekly;
} else {
return s_historyWeekly;
}
}
}
cal = Calendar.getInstance();
cal.setTime(start);
if (cal.get(Calendar.DAY_OF_MONTH) == 1) {
cal.setTime(end);
if (cal.get(Calendar.DAY_OF_MONTH) == 1) {
if (startTime == currentMonth) {
return s_currentMonth;
} else {
return s_historyMonth;
}
}
}
return s_customer;
}
@Override
public TransactionReport queryTransactionReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryTransactionReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryTransactionReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryTransactionReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryTransactionReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryTransactionReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryTransactionReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryTransactionReport(domain, start);
} else {
return m_dailyReportService.queryTransactionReport(domain, start, end);
}
}
@Override
public EventReport queryEventReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryEventReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryEventReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryEventReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryEventReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryEventReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryEventReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryEventReport(domain, start);
} else {
return m_dailyReportService.queryEventReport(domain, start, end);
}
}
@Override
public ProblemReport queryProblemReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryProblemReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryProblemReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryProblemReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryProblemReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryProblemReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryProblemReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryProblemReport(domain, start);
} else {
return m_dailyReportService.queryProblemReport(domain, start, end);
}
}
@Override
public HeartbeatReport queryHeartbeatReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryHeartbeatReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryHeartbeatReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryHeartbeatReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryHeartbeatReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryHeartbeatReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryHeartbeatReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryHeartbeatReport(domain, start);
} else {
return m_dailyReportService.queryHeartbeatReport(domain, start, end);
}
}
@Override
public MatrixReport queryMatrixReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryMatrixReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryMatrixReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryMatrixReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryMatrixReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryMatrixReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryMatrixReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryMatrixReport(domain, start);
} else {
return m_dailyReportService.queryMatrixReport(domain, start, end);
}
}
@Override
public CrossReport queryCrossReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryCrossReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryCrossReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryCrossReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryCrossReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryCrossReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryCrossReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryCrossReport(domain, start);
} else {
return m_dailyReportService.queryCrossReport(domain, start, end);
}
}
@Override
public SqlReport querySqlReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.querySqlReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.querySqlReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.querySqlReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.querySqlReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.querySqlReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.querySqlReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.querySqlReport(domain, start);
} else {
return m_dailyReportService.querySqlReport(domain, start, end);
}
}
@Override
public DatabaseReport queryDatabaseReport(String database, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryDatabaseReport(database, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryDatabaseReport(database, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryDatabaseReport(database, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryDatabaseReport(database, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryDatabaseReport(database, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryDatabaseReport(database, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryDatabaseReport(database, start);
} else {
return m_dailyReportService.queryDatabaseReport(database, start, end);
}
}
@Override
public HealthReport queryHealthReport(String domain, Date start, Date end) {
int type = getQueryType(start, end);
if (type == s_hourly) {
return m_hourlyReportService.queryHealthReport(domain, start, end);
} else if (type == s_daily) {
return m_dailyReportService.queryHealthReport(domain, start, end);
} else if (type == s_historyDaily) {
return m_dailyReportService.queryHealthReport(domain, start, end);
} else if (type == s_historyWeekly) {
return m_weeklyReportService.queryHealthReport(domain, start);
} else if (type == s_currentWeekly) {
return m_weeklyReportCache.queryHealthReport(domain, start);
} else if (type == s_historyMonth) {
return m_monthReportService.queryHealthReport(domain, start);
} else if (type == s_currentMonth) {
return m_monthReportCache.queryHealthReport(domain, start);
} else {
return m_dailyReportService.queryHealthReport(domain, start, end);
}
}
}
package com.dianping.cat.report.service.impl;
import java.util.Date;
import com.dianping.cat.Cat;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.health.model.entity.HealthReport;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.home.dal.report.Weeklyreport;
import com.dianping.cat.home.dal.report.WeeklyreportDao;
import com.dianping.cat.home.dal.report.WeeklyreportEntity;
import com.dianping.cat.report.service.WeeklyReportService;
import com.site.lookup.annotation.Inject;
public class WeeklyReportServiceImpl implements WeeklyReportService {
@Inject
private WeeklyreportDao m_weeklyreportDao;
@Override
public TransactionReport queryTransactionReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "transaction",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new TransactionReport(domain);
}
@Override
public EventReport queryEventReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "event",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.event.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new EventReport(domain);
}
@Override
public ProblemReport queryProblemReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "problem",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new ProblemReport(domain);
}
@Override
public HeartbeatReport queryHeartbeatReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "heartbeat",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.heartbeat.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new HeartbeatReport(domain);
}
@Override
public MatrixReport queryMatrixReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "matrix",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new MatrixReport(domain);
}
@Override
public CrossReport queryCrossReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "cross",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new CrossReport(domain);
}
@Override
public SqlReport querySqlReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "sql",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.sql.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new SqlReport(domain);
}
@Override
public DatabaseReport queryDatabaseReport(String database, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, database, "database",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.database.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new DatabaseReport(database);
}
@Override
public HealthReport queryHealthReport(String domain, Date start) {
try {
Weeklyreport entity = m_weeklyreportDao.findReportByDomainNamePeriod(start, domain, "health",
WeeklyreportEntity.READSET_FULL);
String content = entity.getContent();
return com.dianping.cat.consumer.health.model.transform.DefaultSaxParser.parse(content);
} catch (Exception e) {
Cat.logError(e);
}
return new HealthReport(domain);
}
}
......@@ -20,7 +20,7 @@ public class SqlMerger implements ReportMerger<SqlReport> {
SqlReport sqlReport = getDailyReport(reports, reportDomain, false);
SqlReport sqlReport2 = getDailyReport(reports, reportDomain, true);
sqlReport.addDatabase(sqlReport2.findDatabase(CatString.ALL_Database));
sqlReport.addDatabase(sqlReport2.findOrCreateDatabase(CatString.ALL_Database));
sqlReport.getDomainNames().add(CatString.ALL_Database);
sqlReport.getDomainNames().addAll(domains);
......
......@@ -19,7 +19,6 @@ import com.dainping.cat.consumer.dal.report.TaskEntity;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.NetworkInterfaceManager;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.MonthreportDao;
import com.dianping.cat.home.dal.report.WeeklyreportDao;
import com.dianping.cat.message.Transaction;
......@@ -31,9 +30,6 @@ import com.site.lookup.annotation.Inject;
public class TaskProducer implements com.site.helper.Threads.Task, Initializable {
@Inject
private DailyreportDao m_dailyReportDao;
@Inject
private WeeklyreportDao m_weeklyReportDao;
......@@ -226,14 +222,16 @@ public class TaskProducer implements com.site.helper.Threads.Task, Initializable
m_dailyReportNameSet.add("cross");
m_dailyReportNameSet.add("sql");
m_dailyReportNameSet.add("health");
}
private void firstInit() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -3);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), 0, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date currentMonth = TimeUtil.getCurrentMonth();
Date lastWeekEnd = TimeUtil.getLastWeek();
Date lastWeekEnd = TimeUtil.getLastWeekEnd();
generateWeeklyReportTasks(cal.getTime(), lastWeekEnd);
generateWeeklyDatabaseReportTasks(cal.getTime(), lastWeekEnd);
......@@ -304,8 +302,13 @@ public class TaskProducer implements com.site.helper.Threads.Task, Initializable
@Override
public void run() {
boolean first = true;
boolean active = true;
if (first) {
firstInit();
first = false;
}
while (active) {
try {
Calendar cal = Calendar.getInstance();
......@@ -318,7 +321,7 @@ public class TaskProducer implements com.site.helper.Threads.Task, Initializable
generateDailyReportTasks(yestoday);
generateDailyDatabaseTasks(yestoday);
Date lastWeekEnd = TimeUtil.getLastWeek();
Date lastWeekEnd = TimeUtil.getLastWeekEnd();
Date lastWeekStart = new Date(lastWeekEnd.getTime() - TimeUtil.ONE_WEEK);
generateWeeklyReportTasks(lastWeekStart, lastWeekEnd);
......
......@@ -313,7 +313,7 @@
<statement><![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='period'/> == ${period}
WHERE <FIELD name='period'/> = ${period}
AND <FIELD name='domain'/> = ${domain}
AND <FIELD name='name'/> = ${name}
]]></statement>
......@@ -331,7 +331,7 @@
<statement><![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='period'/> == ${period}
WHERE <FIELD name='period'/> = ${period}
AND <FIELD name='domain'/> = ${domain}
AND <FIELD name='name'/> = ${name}
]]></statement>
......
......@@ -296,9 +296,6 @@
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -390,10 +387,7 @@
<implementation>com.dianping.cat.report.page.health.HistoryGraphs</implementation>
<requirements>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
......@@ -421,6 +415,15 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.HourlyReportService</role>
<implementation>com.dianping.cat.report.service.impl.HourlyReportServiceImpl</implementation>
<requirements>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.DailyReportService</role>
<implementation>com.dianping.cat.report.service.impl.DailyReportServiceImpl</implementation>
......@@ -430,6 +433,78 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.WeeklyReportService</role>
<implementation>com.dianping.cat.report.service.impl.WeeklyReportServiceImpl</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyreportDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.MonthReportService</role>
<implementation>com.dianping.cat.report.service.impl.MonthReportServiceImpl</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthreportDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.WeeklyReportCache</role>
<implementation>com.dianping.cat.report.service.WeeklyReportCache</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.DailyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.HourlyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.MonthReportCache</role>
<implementation>com.dianping.cat.report.service.MonthReportCache</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.DailyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.HourlyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.ReportService</role>
<implementation>com.dianping.cat.report.service.impl.ReportServiceImpl</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.HourlyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.DailyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.WeeklyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.MonthReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.WeeklyReportCache</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.MonthReportCache</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction-local</role-hint>
......@@ -1264,9 +1339,6 @@
<role>com.dianping.cat.report.page.problem.Handler</role>
<implementation>com.dianping.cat.report.page.problem.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.problem.HistoryGraphs</role>
</requirement>
......@@ -1274,13 +1346,10 @@
<role>com.dianping.cat.report.page.problem.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.problem.ProblemMerger</role>
</requirement>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
......@@ -1289,15 +1358,6 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<implementation>com.dianping.cat.home.dal.report.DailyreportDao</implementation>
<requirements>
<requirement>
<role>com.site.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.problem.HistoryGraphs</role>
<implementation>com.dianping.cat.report.page.problem.HistoryGraphs</implementation>
......@@ -1320,19 +1380,6 @@
<role>com.dianping.cat.report.page.problem.JspViewer</role>
<implementation>com.dianping.cat.report.page.problem.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.problem.ProblemMerger</role>
<implementation>com.dianping.cat.report.task.problem.ProblemMerger</implementation>
</component>
<component>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
<implementation>com.dainping.cat.consumer.dal.report.ReportDao</implementation>
<requirements>
<requirement>
<role>com.site.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
<implementation>com.dianping.cat.configuration.ServerConfigManager</implementation>
......@@ -1344,9 +1391,6 @@
<requirement>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.HistoryGraphs</role>
</requirement>
......@@ -1357,10 +1401,7 @@
<role>com.dianping.cat.report.page.transaction.XmlViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.transaction.TransactionMerger</role>
</requirement>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
......@@ -1389,10 +1430,6 @@
<role>com.dianping.cat.report.page.transaction.XmlViewer</role>
<implementation>com.dianping.cat.report.page.transaction.XmlViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.transaction.TransactionMerger</role>
<implementation>com.dianping.cat.report.task.transaction.TransactionMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.event.Handler</role>
<implementation>com.dianping.cat.report.page.event.Handler</implementation>
......@@ -1400,9 +1437,6 @@
<requirement>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.HistoryGraphs</role>
</requirement>
......@@ -1413,10 +1447,7 @@
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.event.EventMerger</role>
</requirement>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
......@@ -1438,10 +1469,6 @@
<role>com.dianping.cat.report.page.event.JspViewer</role>
<implementation>com.dianping.cat.report.page.event.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.event.EventMerger</role>
<implementation>com.dianping.cat.report.task.event.EventMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.heartbeat.Handler</role>
<implementation>com.dianping.cat.report.page.heartbeat.Handler</implementation>
......@@ -1603,6 +1630,15 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
<implementation>com.dainping.cat.consumer.dal.report.ReportDao</implementation>
<requirements>
<requirement>
<role>com.site.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.heartbeat.LocalHeartbeatService</role>
<implementation>com.dianping.cat.report.page.model.heartbeat.LocalHeartbeatService</implementation>
......@@ -1760,13 +1796,7 @@
<implementation>com.dianping.cat.report.page.sql.Handler</implementation>
<requirements>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.sql.SqlMerger</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.sql.JspViewer</role>
......@@ -1781,10 +1811,6 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.sql.SqlMerger</role>
<implementation>com.dianping.cat.report.task.sql.SqlMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.sql.JspViewer</role>
<implementation>com.dianping.cat.report.page.sql.JspViewer</implementation>
......@@ -1928,6 +1954,19 @@
<role>com.dianping.cat.report.task.event.EventGraphCreator</role>
<implementation>com.dianping.cat.report.task.event.EventGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.event.EventMerger</role>
<implementation>com.dianping.cat.report.task.event.EventMerger</implementation>
</component>
<component>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<implementation>com.dianping.cat.home.dal.report.DailyreportDao</implementation>
<requirements>
<requirement>
<role>com.site.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.WeeklyreportDao</role>
<implementation>com.dianping.cat.home.dal.report.WeeklyreportDao</implementation>
......@@ -2012,6 +2051,10 @@
<role>com.dianping.cat.report.task.problem.ProblemGraphCreator</role>
<implementation>com.dianping.cat.report.task.problem.ProblemGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.problem.ProblemMerger</role>
<implementation>com.dianping.cat.report.task.problem.ProblemMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.transaction.TransactionReportBuilder</role>
<implementation>com.dianping.cat.report.task.transaction.TransactionReportBuilder</implementation>
......@@ -2043,6 +2086,10 @@
<role>com.dianping.cat.report.task.transaction.TransactionGraphCreator</role>
<implementation>com.dianping.cat.report.task.transaction.TransactionGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.transaction.TransactionMerger</role>
<implementation>com.dianping.cat.report.task.transaction.TransactionMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.matrix.MatrixReportBuilder</role>
<implementation>com.dianping.cat.report.task.matrix.MatrixReportBuilder</implementation>
......@@ -2151,6 +2198,10 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.sql.SqlMerger</role>
<implementation>com.dianping.cat.report.task.sql.SqlMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.health.HealthReportBuilder</role>
<implementation>com.dianping.cat.report.task.health.HealthReportBuilder</implementation>
......@@ -2222,13 +2273,7 @@
<implementation>com.dianping.cat.report.page.matrix.Handler</implementation>
<requirements>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.matrix.MatrixMerger</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.matrix.JspViewer</role>
......@@ -2258,10 +2303,7 @@
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.health.HistoryGraphs</role>
......@@ -2277,10 +2319,7 @@
<implementation>com.dianping.cat.report.page.health.HistoryGraphs</implementation>
<requirements>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
......@@ -2292,16 +2331,10 @@
<role>com.dianping.cat.report.page.cross.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.cross.CrossMerger</role>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.cross.DomainManager</role>
......@@ -2321,12 +2354,6 @@
<role>com.dianping.cat.report.page.cache.Handler</role>
<implementation>com.dianping.cat.report.page.cache.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.event.EventMerger</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
......@@ -2339,10 +2366,7 @@
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.transaction.TransactionMerger</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
......@@ -2360,13 +2384,7 @@
<implementation>com.dianping.cat.report.page.database.Handler</implementation>
<requirements>
<requirement>
<role>com.dainping.cat.consumer.dal.report.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.database.DatabaseMerger</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.database.JspViewer</role>
......
......@@ -20,6 +20,7 @@ import com.dianping.cat.report.page.sql.SqlReportMergerTest;
import com.dianping.cat.report.page.transaction.PayloadTest;
import com.dianping.cat.report.page.transaction.TransactionGraphDataTest;
import com.dianping.cat.report.page.transaction.TransactionReportMergerTest;
import com.dianping.cat.report.service.impl.ReportServiceImpl;
import com.dianping.cat.report.task.TaskConsumerTest;
import com.dianping.cat.report.task.TaskHelperTest;
import com.dianping.cat.report.task.event.EventDailyGraphMergerTest;
......@@ -95,6 +96,8 @@ import com.dianping.cat.system.notify.RenderTest;
TransactionDailyGraphMergerTest.class, ProblemDailyGraphMergerTest.class,
/* alarm .render */
RenderTest.class, ThresholdRuleTest.class, TemplateMergerTest.class })
RenderTest.class, ThresholdRuleTest.class, TemplateMergerTest.class,
ReportServiceImpl.class})
public class AllTests {
}
package com.dianping.cat.report.service;
import java.util.Calendar;
import java.util.Date;
import junit.framework.Assert;
import org.junit.Test;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.service.impl.ReportServiceImpl;
public class ReportServiceImplTest {
private ReportServiceImpl m_impl = new ReportServiceImpl();
@Test
public void test() {
Date currentDay = TimeUtil.getCurrentDay();
Date currentWeek = TimeUtil.getCurrentWeek();
System.out.println(currentWeek);
Date lastMonth =TimeUtil.getLastMonth();
Date currentMonth = TimeUtil.getCurrentMonth();
Calendar cal = Calendar.getInstance();
cal.setTime(currentMonth);
cal.add(Calendar.MONTH, 1);
Date nextMonth = cal.getTime();
int type = m_impl.getQueryType(currentDay, new Date(currentDay.getTime() + TimeUtil.ONE_DAY));
Assert.assertEquals(ReportServiceImpl.s_daily, type);
type = m_impl.getQueryType(currentDay, new Date(currentDay.getTime() + TimeUtil.ONE_HOUR));
Assert.assertEquals(ReportServiceImpl.s_hourly, type);
type = m_impl.getQueryType(currentWeek, new Date(currentWeek.getTime() + 7 * TimeUtil.ONE_DAY));
Assert.assertEquals(ReportServiceImpl.s_currentWeekly, type);
type = m_impl.getQueryType(new Date(currentWeek.getTime() - 7 * TimeUtil.ONE_DAY),
new Date(currentWeek.getTime()));
Assert.assertEquals(ReportServiceImpl.s_historyWeekly, type);
type = m_impl.getQueryType(currentMonth,nextMonth);
Assert.assertEquals(ReportServiceImpl.s_currentMonth, type);
type = m_impl.getQueryType(lastMonth,currentMonth);
Assert.assertEquals(ReportServiceImpl.s_historyMonth, type);
type = m_impl.getQueryType(currentWeek, new Date(currentWeek.getTime() + 8 * TimeUtil.ONE_DAY));
Assert.assertEquals(ReportServiceImpl.s_customer, type);
type = m_impl.getQueryType(new Date(currentWeek.getTime() + TimeUtil.ONE_DAY), new Date(currentWeek.getTime() + 8 * TimeUtil.ONE_DAY));
Assert.assertEquals(ReportServiceImpl.s_customer, type);
String m_reportType="month";
long m_date =TimeUtil.getCurrentMonth().getTime();
long temp = 0;
cal = Calendar.getInstance();
cal.setTimeInMillis(m_date);
if ("month".equals(m_reportType)) {
int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(maxDay);
temp = m_date + maxDay * (TimeUtil.ONE_HOUR * 24);
System.out.println(new Date(temp));
} else if ("week".equals(m_reportType)) {
temp = m_date + 7 * (TimeUtil.ONE_HOUR * 24);
} else {
temp = m_date + (TimeUtil.ONE_HOUR * 24);
}
cal.setTimeInMillis(temp);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册