Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
e20bb14f
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e20bb14f
编写于
11月 20, 2012
作者:
Y
youyong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor the cat month report
上级
1430e1be
变更
26
隐藏空白更改
内联
并排
Showing
26 changed file
with
1314 addition
and
742 deletion
+1314
-742
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+35
-6
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
+23
-3
cat-home/src/main/java/com/dianping/cat/report/page/cache/Handler.java
...main/java/com/dianping/cat/report/page/cache/Handler.java
+4
-100
cat-home/src/main/java/com/dianping/cat/report/page/cross/Handler.java
...main/java/com/dianping/cat/report/page/cross/Handler.java
+4
-63
cat-home/src/main/java/com/dianping/cat/report/page/database/Handler.java
...n/java/com/dianping/cat/report/page/database/Handler.java
+5
-61
cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java
...main/java/com/dianping/cat/report/page/event/Handler.java
+5
-59
cat-home/src/main/java/com/dianping/cat/report/page/health/Handler.java
...ain/java/com/dianping/cat/report/page/health/Handler.java
+4
-42
cat-home/src/main/java/com/dianping/cat/report/page/health/HistoryGraphs.java
...va/com/dianping/cat/report/page/health/HistoryGraphs.java
+7
-54
cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java
...ain/java/com/dianping/cat/report/page/matrix/Handler.java
+5
-57
cat-home/src/main/java/com/dianping/cat/report/page/problem/Handler.java
...in/java/com/dianping/cat/report/page/problem/Handler.java
+6
-57
cat-home/src/main/java/com/dianping/cat/report/page/sql/Handler.java
...c/main/java/com/dianping/cat/report/page/sql/Handler.java
+4
-60
cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java
...ava/com/dianping/cat/report/page/transaction/Handler.java
+3
-59
cat-home/src/main/java/com/dianping/cat/report/service/HourlyReportService.java
.../com/dianping/cat/report/service/HourlyReportService.java
+4
-0
cat-home/src/main/java/com/dianping/cat/report/service/MonthReportCache.java
...ava/com/dianping/cat/report/service/MonthReportCache.java
+164
-0
cat-home/src/main/java/com/dianping/cat/report/service/ReportService.java
...n/java/com/dianping/cat/report/service/ReportService.java
+34
-0
cat-home/src/main/java/com/dianping/cat/report/service/WeeklyReportCache.java
...va/com/dianping/cat/report/service/WeeklyReportCache.java
+165
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/HourlyReportServiceImpl.java
...ping/cat/report/service/impl/HourlyReportServiceImpl.java
+17
-1
cat-home/src/main/java/com/dianping/cat/report/service/impl/MonthReportServiceImpl.java
...nping/cat/report/service/impl/MonthReportServiceImpl.java
+152
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/ReportServiceImpl.java
...m/dianping/cat/report/service/impl/ReportServiceImpl.java
+300
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/WeeklyReportServiceImpl.java
...ping/cat/report/service/impl/WeeklyReportServiceImpl.java
+152
-0
cat-home/src/main/java/com/dianping/cat/report/task/sql/SqlMerger.java
...main/java/com/dianping/cat/report/task/sql/SqlMerger.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskProducer.java
...ava/com/dianping/cat/report/task/thread/TaskProducer.java
+9
-6
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
+2
-2
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+128
-110
cat-home/src/test/java/com/dianping/cat/AllTests.java
cat-home/src/test/java/com/dianping/cat/AllTests.java
+4
-1
cat-home/src/test/java/com/dianping/cat/report/service/ReportServiceImplTest.java
...om/dianping/cat/report/service/ReportServiceImplTest.java
+77
-0
未找到文件。
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
e20bb14f
...
...
@@ -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
(
Report
Dao
.
class
,
DailyreportDao
.
class
));
req
(
Report
Service
.
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
());
...
...
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
浏览文件 @
e20bb14f
...
...
@@ -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
();
}
}
cat-home/src/main/java/com/dianping/cat/report/page/cache/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
...
...
cat-home/src/main/java/com/dianping/cat/report/page/database/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
);
}
}
cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
))
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/health/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/health/HistoryGraphs.java
浏览文件 @
e20bb14f
...
...
@@ -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
));
}
}
cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
;
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/problem/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
;
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/sql/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
)
;
}
}
cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java
浏览文件 @
e20bb14f
...
...
@@ -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
))
{
...
...
cat-home/src/main/java/com/dianping/cat/report/service/HourlyReportService.java
浏览文件 @
e20bb14f
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
);
...
...
cat-home/src/main/java/com/dianping/cat/report/service/MonthReportCache.java
0 → 100644
浏览文件 @
e20bb14f
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
()
{
}
}
}
cat-home/src/main/java/com/dianping/cat/report/service/ReportService.java
0 → 100644
浏览文件 @
e20bb14f
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
);
}
cat-home/src/main/java/com/dianping/cat/report/service/WeeklyReportCache.java
0 → 100644
浏览文件 @
e20bb14f
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
()
{
}
}
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/HourlyReportServiceImpl.java
浏览文件 @
e20bb14f
...
...
@@ -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
;
}
p
rivate
Set
<
String
>
queryAllDomainNames
(
Date
start
,
Date
end
,
String
reportName
)
{
p
ublic
Set
<
String
>
queryAllDomainNames
(
Date
start
,
Date
end
,
String
reportName
)
{
Set
<
String
>
domains
=
new
HashSet
<
String
>();
try
{
...
...
cat-home/src/main/java/com/dianping/cat/report/service/impl/MonthReportServiceImpl.java
0 → 100644
浏览文件 @
e20bb14f
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
);
}
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/ReportServiceImpl.java
0 → 100644
浏览文件 @
e20bb14f
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
);
}
}
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/WeeklyReportServiceImpl.java
0 → 100644
浏览文件 @
e20bb14f
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
);
}
}
cat-home/src/main/java/com/dianping/cat/report/task/sql/SqlMerger.java
浏览文件 @
e20bb14f
...
...
@@ -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
.
find
OrCreate
Database
(
CatString
.
ALL_Database
));
sqlReport
.
getDomainNames
().
add
(
CatString
.
ALL_Database
);
sqlReport
.
getDomainNames
().
addAll
(
domains
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskProducer.java
浏览文件 @
e20bb14f
...
...
@@ -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
.
getLastWeek
End
();
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
.
getLastWeek
End
();
Date
lastWeekStart
=
new
Date
(
lastWeekEnd
.
getTime
()
-
TimeUtil
.
ONE_WEEK
);
generateWeeklyReportTasks
(
lastWeekStart
,
lastWeekEnd
);
...
...
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
浏览文件 @
e20bb14f
...
...
@@ -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>
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
e20bb14f
...
...
@@ -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.CrossMer
ger
</role>
<role>
com.dianping.cat.
configuration.ServerConfigMana
ger
</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>
...
...
cat-home/src/test/java/com/dianping/cat/AllTests.java
浏览文件 @
e20bb14f
...
...
@@ -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
{
}
cat-home/src/test/java/com/dianping/cat/report/service/ReportServiceImplTest.java
0 → 100644
浏览文件 @
e20bb14f
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录