Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
6f6c2343
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,发现更多精彩内容 >>
提交
6f6c2343
编写于
8月 11, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the dao and service
上级
1b4331d2
变更
48
隐藏空白更改
内联
并排
Showing
48 changed file
with
1010 addition
and
42 deletion
+1010
-42
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/ProductLineConfigManager.java
...nping/cat/consumer/advanced/ProductLineConfigManager.java
+4
-1
cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java
...n/java/com/dianping/cat/consumer/state/StateDelegate.java
+1
-0
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+3
-0
cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java
...ava/com/dianping/cat/build/TaskComponentConfigurator.java
+7
-5
cat-home/src/main/java/com/dianping/cat/report/ReportModule.java
...e/src/main/java/com/dianping/cat/report/ReportModule.java
+3
-1
cat-home/src/main/java/com/dianping/cat/report/ReportPage.java
...ome/src/main/java/com/dianping/cat/report/ReportPage.java
+3
-1
cat-home/src/main/java/com/dianping/cat/report/page/bug/Action.java
...rc/main/java/com/dianping/cat/report/page/bug/Action.java
+28
-0
cat-home/src/main/java/com/dianping/cat/report/page/bug/Context.java
...c/main/java/com/dianping/cat/report/page/bug/Context.java
+7
-0
cat-home/src/main/java/com/dianping/cat/report/page/bug/Handler.java
...c/main/java/com/dianping/cat/report/page/bug/Handler.java
+60
-0
cat-home/src/main/java/com/dianping/cat/report/page/bug/JspFile.java
...c/main/java/com/dianping/cat/report/page/bug/JspFile.java
+19
-0
cat-home/src/main/java/com/dianping/cat/report/page/bug/JspViewer.java
...main/java/com/dianping/cat/report/page/bug/JspViewer.java
+20
-0
cat-home/src/main/java/com/dianping/cat/report/page/bug/Model.java
...src/main/java/com/dianping/cat/report/page/bug/Model.java
+28
-0
cat-home/src/main/java/com/dianping/cat/report/page/bug/Payload.java
...c/main/java/com/dianping/cat/report/page/bug/Payload.java
+44
-0
cat-home/src/main/java/com/dianping/cat/report/service/DailyReportService.java
...a/com/dianping/cat/report/service/DailyReportService.java
+3
-0
cat-home/src/main/java/com/dianping/cat/report/service/HourlyReportService.java
.../com/dianping/cat/report/service/HourlyReportService.java
+6
-0
cat-home/src/main/java/com/dianping/cat/report/service/MonthlyReportCache.java
...a/com/dianping/cat/report/service/MonthlyReportCache.java
+6
-0
cat-home/src/main/java/com/dianping/cat/report/service/MonthlyReportService.java
...com/dianping/cat/report/service/MonthlyReportService.java
+3
-0
cat-home/src/main/java/com/dianping/cat/report/service/ReportService.java
...n/java/com/dianping/cat/report/service/ReportService.java
+6
-0
cat-home/src/main/java/com/dianping/cat/report/service/WeeklyReportCache.java
...va/com/dianping/cat/report/service/WeeklyReportCache.java
+6
-0
cat-home/src/main/java/com/dianping/cat/report/service/WeeklyReportService.java
.../com/dianping/cat/report/service/WeeklyReportService.java
+3
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/DailyReportServiceImpl.java
...nping/cat/report/service/impl/DailyReportServiceImpl.java
+29
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/HourlyReportServiceImpl.java
...ping/cat/report/service/impl/HourlyReportServiceImpl.java
+53
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/MonthlyReportServiceImpl.java
...ing/cat/report/service/impl/MonthlyReportServiceImpl.java
+15
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/ReportServiceImpl.java
...m/dianping/cat/report/service/impl/ReportServiceImpl.java
+36
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/WeeklyReportServiceImpl.java
...ping/cat/report/service/impl/WeeklyReportServiceImpl.java
+15
-0
cat-home/src/main/java/com/dianping/cat/report/task/bug/BugReportBuilder.java
...va/com/dianping/cat/report/task/bug/BugReportBuilder.java
+132
-0
cat-home/src/main/java/com/dianping/cat/report/task/bug/BugReportMerger.java
...ava/com/dianping/cat/report/task/bug/BugReportMerger.java
+42
-0
cat-home/src/main/java/com/dianping/cat/report/task/bug/ProblemReportVisitor.java
...om/dianping/cat/report/task/bug/ProblemReportVisitor.java
+74
-0
cat-home/src/main/java/com/dianping/cat/report/task/spi/ReportFacade.java
...n/java/com/dianping/cat/report/task/spi/ReportFacade.java
+5
-0
cat-home/src/main/java/com/dianping/cat/system/config/BugConfigManager.java
...java/com/dianping/cat/system/config/BugConfigManager.java
+123
-0
cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java
...main/java/com/dianping/cat/system/page/config/Action.java
+2
-0
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
...ain/java/com/dianping/cat/system/page/config/Handler.java
+14
-1
cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java
...ain/java/com/dianping/cat/system/page/config/JspFile.java
+3
-1
cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java
...n/java/com/dianping/cat/system/page/config/JspViewer.java
+3
-0
cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java
.../main/java/com/dianping/cat/system/page/config/Model.java
+10
-0
cat-home/src/main/java/com/dianping/cat/system/page/config/Payload.java
...ain/java/com/dianping/cat/system/page/config/Payload.java
+11
-0
cat-home/src/main/resources/META-INF/dal/model/bug-codegen.xml
...ome/src/main/resources/META-INF/dal/model/bug-codegen.xml
+5
-7
cat-home/src/main/resources/META-INF/dal/model/bug-config-codegen.xml
.../main/resources/META-INF/dal/model/bug-config-codegen.xml
+3
-6
cat-home/src/main/resources/META-INF/dal/model/bug-config-model.xml
...rc/main/resources/META-INF/dal/model/bug-config-model.xml
+11
-2
cat-home/src/main/resources/META-INF/dal/model/bug-model.xml
cat-home/src/main/resources/META-INF/dal/model/bug-model.xml
+20
-2
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+57
-0
cat-home/src/main/resources/META-INF/wizard/webapp/wizard.xml
...home/src/main/resources/META-INF/wizard/webapp/wizard.xml
+3
-0
cat-home/src/main/resources/config/default-bug-config.xml
cat-home/src/main/resources/config/default-bug-config.xml
+9
-0
cat-home/src/main/webapp/jsp/report/bug.jsp
cat-home/src/main/webapp/jsp/report/bug.jsp
+5
-0
cat-home/src/main/webapp/jsp/system/bug/bugConfig.jsp
cat-home/src/main/webapp/jsp/system/bug/bugConfig.jsp
+49
-0
cat-home/src/main/webapp/jsp/system/configTree.jsp
cat-home/src/main/webapp/jsp/system/configTree.jsp
+2
-0
cat-home/src/test/resources/com/dianping/cat/report/page/bug/bug-config.xml
...resources/com/dianping/cat/report/page/bug/bug-config.xml
+12
-8
cat-home/src/test/resources/com/dianping/cat/report/page/bug/bug.xml
...c/test/resources/com/dianping/cat/report/page/bug/bug.xml
+7
-7
未找到文件。
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/ProductLineConfigManager.java
浏览文件 @
6f6c2343
...
...
@@ -15,6 +15,7 @@ import org.codehaus.plexus.logging.LogEnabled;
import
org.codehaus.plexus.logging.Logger
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.hsqldb.lib.StringUtil
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.dal.jdbc.DalNotFoundException
;
import
org.unidal.helper.Files
;
...
...
@@ -129,7 +130,9 @@ public class ProductLineConfigManager implements Initializable, LogEnabled {
Map
<
String
,
ProductLine
>
productLines
=
new
TreeMap
<
String
,
ProductLine
>();
for
(
ProductLine
line
:
getCompany
().
getProductLines
().
values
())
{
productLines
.
put
(
line
.
getId
(),
line
);
if
(!
StringUtil
.
isEmpty
(
line
.
getId
()))
{
productLines
.
put
(
line
.
getId
(),
line
);
}
}
return
sortMap
(
productLines
,
new
Comparator
<
Map
.
Entry
<
String
,
ProductLine
>>()
{
...
...
cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java
浏览文件 @
6f6c2343
...
...
@@ -31,6 +31,7 @@ public class StateDelegate implements ReportDelegate<StateReport> {
@Override
public
boolean
createHourlyTask
(
StateReport
report
)
{
m_taskManager
.
createTask
(
report
.
getStartTime
(),
report
.
getDomain
(),
"bug"
,
TaskProlicy
.
ALL_EXCLUED_HOURLY
);
return
m_taskManager
.
createTask
(
report
.
getStartTime
(),
report
.
getDomain
(),
StateAnalyzer
.
ID
,
TaskProlicy
.
ALL_EXCLUED_HOURLY
);
}
...
...
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
6f6c2343
...
...
@@ -32,6 +32,7 @@ import com.dianping.cat.report.page.model.spi.ModelService;
import
com.dianping.cat.report.page.state.StateGraphs
;
import
com.dianping.cat.report.service.ReportService
;
import
com.dianping.cat.report.view.DomainNavManager
;
import
com.dianping.cat.system.config.BugConfigManager
;
import
com.dianping.cat.system.config.ConfigReloadTask
;
import
com.dianping.cat.system.config.ExceptionThresholdConfigManager
;
...
...
@@ -63,6 +64,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
TopologyGraphConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
ExceptionThresholdConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
BugConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
TopologyGraphItemBuilder
.
class
).
req
(
TopologyGraphConfigManager
.
class
));
...
...
cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java
浏览文件 @
6f6c2343
...
...
@@ -23,6 +23,7 @@ import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.service.ReportService
;
import
com.dianping.cat.report.task.DefaultTaskConsumer
;
import
com.dianping.cat.report.task.bug.BugReportBuilder
;
import
com.dianping.cat.report.task.cross.CrossReportBuilder
;
import
com.dianping.cat.report.task.dependency.DependencyReportBuilder
;
import
com.dianping.cat.report.task.event.EventGraphCreator
;
...
...
@@ -93,6 +94,9 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
.
req
(
GraphDao
.
class
,
ReportService
.
class
)
//
.
req
(
HeartbeatGraphCreator
.
class
));
all
.
add
(
C
(
BugReportBuilder
.
class
)
.
req
(
ReportService
.
class
));
all
.
add
(
C
(
MatrixReportBuilder
.
class
).
req
(
ReportService
.
class
));
all
.
add
(
C
(
SqlReportBuilder
.
class
).
req
(
ReportService
.
class
,
SqlMerger
.
class
));
...
...
@@ -107,11 +111,9 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
TopologyGraphDao
.
class
));
all
.
add
(
C
(
ReportFacade
.
class
)
//
.
req
(
TransactionReportBuilder
.
class
,
EventReportBuilder
.
class
,
ProblemReportBuilder
.
class
//
,
HeartbeatReportBuilder
.
class
,
MatrixReportBuilder
.
class
,
CrossReportBuilder
.
class
//
,
SqlReportBuilder
.
class
,
StateReportBuilder
.
class
,
DependencyReportBuilder
.
class
,
.
req
(
TransactionReportBuilder
.
class
,
EventReportBuilder
.
class
,
ProblemReportBuilder
.
class
//
,
HeartbeatReportBuilder
.
class
,
MatrixReportBuilder
.
class
,
CrossReportBuilder
.
class
//
,
SqlReportBuilder
.
class
,
StateReportBuilder
.
class
,
DependencyReportBuilder
.
class
,
BugReportBuilder
.
class
,
MetricBaselineReportBuilder
.
class
));
return
all
;
...
...
cat-home/src/main/java/com/dianping/cat/report/ReportModule.java
浏览文件 @
6f6c2343
...
...
@@ -41,7 +41,9 @@ com.dianping.cat.report.page.jsError.Handler.class,
com
.
dianping
.
cat
.
report
.
page
.
dependency
.
Handler
.
class
,
com
.
dianping
.
cat
.
report
.
page
.
externalError
.
Handler
.
class
com
.
dianping
.
cat
.
report
.
page
.
externalError
.
Handler
.
class
,
com
.
dianping
.
cat
.
report
.
page
.
bug
.
Handler
.
class
})
public
class
ReportModule
extends
AbstractModule
{
...
...
cat-home/src/main/java/com/dianping/cat/report/ReportPage.java
浏览文件 @
6f6c2343
...
...
@@ -39,7 +39,9 @@ public enum ReportPage implements Page {
DEPENDENCY
(
"dependency"
,
"dependency"
,
"Dependency"
,
"Dependency"
,
true
),
EXTERNALERROR
(
"externalError"
,
"externalError"
,
"externalError"
,
"ExternalError"
,
true
);
EXTERNALERROR
(
"externalError"
,
"externalError"
,
"externalError"
,
"ExternalError"
,
true
),
BUG
(
"bug"
,
"bug"
,
"Bug"
,
"Bug"
,
true
);
private
String
m_name
;
...
...
cat-home/src/main/java/com/dianping/cat/report/page/bug/Action.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
public
enum
Action
implements
org
.
unidal
.
web
.
mvc
.
Action
{
HISTORY_REPORT
(
"history"
),
HOURLY_REPORT
(
"view"
);
private
String
m_name
;
private
Action
(
String
name
)
{
m_name
=
name
;
}
public
static
Action
getByName
(
String
name
,
Action
defaultAction
)
{
for
(
Action
action
:
Action
.
values
())
{
if
(
action
.
getName
().
equals
(
name
))
{
return
action
;
}
}
return
defaultAction
;
}
@Override
public
String
getName
()
{
return
m_name
;
}
}
cat-home/src/main/java/com/dianping/cat/report/page/bug/Context.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
import
com.dianping.cat.report.ReportContext
;
public
class
Context
extends
ReportContext
<
Payload
>
{
}
cat-home/src/main/java/com/dianping/cat/report/page/bug/Handler.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
import
java.io.IOException
;
import
java.util.Date
;
import
javax.servlet.ServletException
;
import
com.dianping.cat.consumer.advanced.ProductLineConfigManager
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.report.service.ReportService
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.web.mvc.PageHandler
;
import
org.unidal.web.mvc.annotation.InboundActionMeta
;
import
org.unidal.web.mvc.annotation.OutboundActionMeta
;
import
org.unidal.web.mvc.annotation.PayloadMeta
;
public
class
Handler
implements
PageHandler
<
Context
>
{
@Inject
private
JspViewer
m_jspViewer
;
@Inject
private
ReportService
m_reportService
;
@Inject
private
ProductLineConfigManager
m_configManager
;
@Override
@PayloadMeta
(
Payload
.
class
)
@InboundActionMeta
(
name
=
"bug"
)
public
void
handleInbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
// display only, no action here
}
@Override
@OutboundActionMeta
(
name
=
"bug"
)
public
void
handleOutbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
Model
model
=
new
Model
(
ctx
);
model
.
setPage
(
ReportPage
.
BUG
);
m_jspViewer
.
view
(
ctx
,
model
);
}
private
BugReport
queryBugReport
(
Payload
payload
)
{
Date
start
=
null
;
Date
end
=
null
;
if
(
payload
.
getAction
()
==
Action
.
HOURLY_REPORT
)
{
start
=
new
Date
(
payload
.
getDate
());
end
=
new
Date
(
start
.
getTime
()
+
TimeUtil
.
ONE_HOUR
);
}
else
{
start
=
payload
.
getHistoryStartDate
();
end
=
payload
.
getHistoryEndDate
();
}
return
m_reportService
.
queryBugReport
(
CatString
.
CAT
,
start
,
end
);
}
}
cat-home/src/main/java/com/dianping/cat/report/page/bug/JspFile.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
public
enum
JspFile
{
HOURLY_REPORT
(
"/jsp/report/bug/bug.jsp"
),
HISTORY_REPORT
(
"/jsp/report/bug/bugHistory.jsp"
),
;
private
String
m_path
;
private
JspFile
(
String
path
)
{
m_path
=
path
;
}
public
String
getPath
()
{
return
m_path
;
}
}
cat-home/src/main/java/com/dianping/cat/report/page/bug/JspViewer.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
import
com.dianping.cat.report.ReportPage
;
import
org.unidal.web.mvc.view.BaseJspViewer
;
public
class
JspViewer
extends
BaseJspViewer
<
ReportPage
,
Action
,
Context
,
Model
>
{
@Override
protected
String
getJspFilePath
(
Context
ctx
,
Model
model
)
{
Action
action
=
model
.
getAction
();
switch
(
action
)
{
case
HOURLY_REPORT:
return
JspFile
.
HOURLY_REPORT
.
getPath
();
case
HISTORY_REPORT:
return
JspFile
.
HISTORY_REPORT
.
getPath
();
}
throw
new
RuntimeException
(
"Unknown action: "
+
action
);
}
}
cat-home/src/main/java/com/dianping/cat/report/page/bug/Model.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.report.page.AbstractReportModel
;
public
class
Model
extends
AbstractReportModel
<
Action
,
Context
>
{
public
Model
(
Context
ctx
)
{
super
(
ctx
);
}
@Override
public
Action
getDefaultAction
()
{
return
Action
.
HOURLY_REPORT
;
}
@Override
public
String
getDomain
()
{
return
CatString
.
CAT
;
}
@Override
public
Collection
<
String
>
getDomains
()
{
return
new
ArrayList
<
String
>();
}
}
cat-home/src/main/java/com/dianping/cat/report/page/bug/Payload.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.page.bug
;
import
org.unidal.web.mvc.ActionContext
;
import
org.unidal.web.mvc.payload.annotation.FieldMeta
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.report.page.AbstractReportPayload
;
public
class
Payload
extends
AbstractReportPayload
<
Action
>
{
private
ReportPage
m_page
;
@FieldMeta
(
"op"
)
private
Action
m_action
;
public
Payload
()
{
super
(
ReportPage
.
BUG
);
}
@Override
public
Action
getAction
()
{
return
m_action
;
}
@Override
public
ReportPage
getPage
()
{
return
m_page
;
}
public
void
setAction
(
String
action
)
{
m_action
=
Action
.
getByName
(
action
,
Action
.
HOURLY_REPORT
);
}
@Override
public
void
setPage
(
String
page
)
{
m_page
=
ReportPage
.
getByName
(
page
,
ReportPage
.
BUG
);
}
@Override
public
void
validate
(
ActionContext
<?>
ctx
)
{
if
(
m_action
==
null
)
{
m_action
=
Action
.
HOURLY_REPORT
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/service/DailyReportService.java
浏览文件 @
6f6c2343
...
...
@@ -11,6 +11,7 @@ import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import
com.dianping.cat.consumer.state.model.entity.StateReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.core.dal.DailyReport
;
import
com.dianping.cat.home.bug.entity.BugReport
;
public
interface
DailyReportService
{
...
...
@@ -31,4 +32,6 @@ public interface DailyReportService {
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
);
public
boolean
insert
(
DailyReport
report
);
public
BugReport
queryBugReport
(
String
domain
,
Date
start
,
Date
end
);
}
cat-home/src/main/java/com/dianping/cat/report/service/HourlyReportService.java
浏览文件 @
6f6c2343
...
...
@@ -14,6 +14,8 @@ import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import
com.dianping.cat.consumer.state.model.entity.StateReport
;
import
com.dianping.cat.consumer.top.model.entity.TopReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.core.dal.HourlyReport
;
import
com.dianping.cat.home.bug.entity.BugReport
;
public
interface
HourlyReportService
{
public
Set
<
String
>
queryAllDomainNames
(
Date
start
,
Date
end
,
String
reportName
);
...
...
@@ -39,4 +41,8 @@ public interface HourlyReportService {
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
);
public
DependencyReport
queryDependencyReport
(
String
domain
,
Date
start
,
Date
end
);
public
BugReport
queryBugReport
(
String
domain
,
Date
start
,
Date
end
);
public
boolean
insert
(
HourlyReport
report
);
}
cat-home/src/main/java/com/dianping/cat/report/service/MonthlyReportCache.java
浏览文件 @
6f6c2343
...
...
@@ -24,6 +24,7 @@ import com.dianping.cat.consumer.state.model.entity.StateReport;
import
com.dianping.cat.consumer.transaction.TransactionReportUrlFilter
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.message.Transaction
;
public
class
MonthlyReportCache
implements
Initializable
{
...
...
@@ -158,4 +159,9 @@ public class MonthlyReportCache implements Initializable {
}
}
public
BugReport
queryBugReport
(
String
domain
,
Date
start
)
{
// TODO Auto-generated method stub
return
null
;
}
}
cat-home/src/main/java/com/dianping/cat/report/service/MonthlyReportService.java
浏览文件 @
6f6c2343
...
...
@@ -11,6 +11,7 @@ import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import
com.dianping.cat.consumer.state.model.entity.StateReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.core.dal.MonthlyReport
;
import
com.dianping.cat.home.bug.entity.BugReport
;
public
interface
MonthlyReportService
{
...
...
@@ -31,4 +32,6 @@ public interface MonthlyReportService {
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
);
public
boolean
insert
(
MonthlyReport
report
);
public
BugReport
queryBugReport
(
String
domain
,
Date
start
);
}
cat-home/src/main/java/com/dianping/cat/report/service/ReportService.java
浏览文件 @
6f6c2343
...
...
@@ -15,8 +15,10 @@ import com.dianping.cat.consumer.state.model.entity.StateReport;
import
com.dianping.cat.consumer.top.model.entity.TopReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.core.dal.DailyReport
;
import
com.dianping.cat.core.dal.HourlyReport
;
import
com.dianping.cat.core.dal.MonthlyReport
;
import
com.dianping.cat.core.dal.WeeklyReport
;
import
com.dianping.cat.home.bug.entity.BugReport
;
public
interface
ReportService
{
...
...
@@ -44,6 +46,10 @@ public interface ReportService {
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
);
public
BugReport
queryBugReport
(
String
domain
,
Date
start
,
Date
end
);
public
boolean
insertHourlyReport
(
HourlyReport
report
);
public
boolean
insertDailyReport
(
DailyReport
report
);
public
boolean
insertWeeklyReport
(
WeeklyReport
report
);
...
...
cat-home/src/main/java/com/dianping/cat/report/service/WeeklyReportCache.java
浏览文件 @
6f6c2343
...
...
@@ -24,6 +24,7 @@ import com.dianping.cat.consumer.state.model.entity.StateReport;
import
com.dianping.cat.consumer.transaction.TransactionReportUrlFilter
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.message.Transaction
;
public
class
WeeklyReportCache
implements
Initializable
{
...
...
@@ -157,4 +158,9 @@ public class WeeklyReportCache implements Initializable {
}
public
BugReport
queryBugReport
(
String
domain
,
Date
start
)
{
// TODO Auto-generated method stub
return
null
;
}
}
cat-home/src/main/java/com/dianping/cat/report/service/WeeklyReportService.java
浏览文件 @
6f6c2343
...
...
@@ -11,6 +11,7 @@ import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import
com.dianping.cat.consumer.state.model.entity.StateReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.core.dal.WeeklyReport
;
import
com.dianping.cat.home.bug.entity.BugReport
;
public
interface
WeeklyReportService
{
...
...
@@ -31,4 +32,6 @@ public interface WeeklyReportService {
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
);
public
boolean
insert
(
WeeklyReport
report
);
public
BugReport
queryBugReport
(
String
domain
,
Date
start
);
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/DailyReportServiceImpl.java
浏览文件 @
6f6c2343
...
...
@@ -26,7 +26,9 @@ import com.dianping.cat.core.dal.DailyReport;
import
com.dianping.cat.core.dal.DailyReportDao
;
import
com.dianping.cat.core.dal.DailyReportEntity
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.report.service.DailyReportService
;
import
com.dianping.cat.report.task.bug.BugReportMerger
;
public
class
DailyReportServiceImpl
implements
DailyReportService
{
...
...
@@ -240,6 +242,33 @@ public class DailyReportServiceImpl implements DailyReportService {
transactionReport
.
setEndTime
(
end
);
return
transactionReport
;
}
@Override
public
BugReport
queryBugReport
(
String
domain
,
Date
start
,
Date
end
)
{
BugReportMerger
merger
=
new
BugReportMerger
(
new
BugReport
(
domain
));
long
startTime
=
start
.
getTime
();
long
endTime
=
end
.
getTime
();
String
name
=
"bug"
;
for
(;
startTime
<
endTime
;
startTime
=
startTime
+
TimeUtil
.
ONE_DAY
)
{
try
{
DailyReport
report
=
m_dailyReportDao
.
findByDomainNamePeriod
(
domain
,
name
,
new
Date
(
startTime
),
DailyReportEntity
.
READSET_FULL
);
String
xml
=
report
.
getContent
();
BugReport
reportModel
=
com
.
dianping
.
cat
.
home
.
bug
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
}
BugReport
bugReport
=
merger
.
getBugReport
();
bugReport
.
setStartTime
(
start
);
bugReport
.
setEndTime
(
end
);
return
bugReport
;
}
@Override
public
boolean
insert
(
DailyReport
report
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/service/impl/HourlyReportServiceImpl.java
浏览文件 @
6f6c2343
...
...
@@ -38,9 +38,11 @@ import com.dianping.cat.core.dal.HourlyReport;
import
com.dianping.cat.core.dal.HourlyReportDao
;
import
com.dianping.cat.core.dal.HourlyReportEntity
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.page.model.metric.MetricReportMerger
;
import
com.dianping.cat.report.service.HourlyReportService
;
import
com.dianping.cat.report.task.bug.BugReportMerger
;
public
class
HourlyReportServiceImpl
implements
HourlyReportService
{
...
...
@@ -503,5 +505,56 @@ public class HourlyReportServiceImpl implements HourlyReportService {
transactionReport
.
getDomainNames
().
addAll
(
domains
);
return
transactionReport
;
}
@Override
public
BugReport
queryBugReport
(
String
domain
,
Date
start
,
Date
end
)
{
BugReportMerger
merger
=
new
BugReportMerger
(
new
BugReport
(
domain
));
long
startTime
=
start
.
getTime
();
long
endTime
=
end
.
getTime
();
String
name
=
"bug"
;
for
(;
startTime
<
endTime
;
startTime
=
startTime
+
TimeUtil
.
ONE_HOUR
)
{
List
<
HourlyReport
>
reports
=
null
;
try
{
reports
=
m_reportDao
.
findAllByDomainNamePeriod
(
new
Date
(
startTime
),
domain
,
name
,
HourlyReportEntity
.
READSET_FULL
);
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
if
(
reports
!=
null
)
{
for
(
HourlyReport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
BugReport
reportModel
=
com
.
dianping
.
cat
.
home
.
bug
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
name
,
Event
.
SUCCESS
,
report
.
getDomain
()
+
" "
+
report
.
getPeriod
()
+
" "
+
report
.
getId
());
}
}
}
}
BugReport
bugReport
=
merger
.
getBugReport
();
bugReport
.
setStartTime
(
start
);
bugReport
.
setEndTime
(
new
Date
(
end
.
getTime
()
-
1
));
return
bugReport
;
}
@Override
public
boolean
insert
(
HourlyReport
report
)
{
try
{
m_reportDao
.
insert
(
report
);
return
true
;
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
return
false
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/MonthlyReportServiceImpl.java
浏览文件 @
6f6c2343
...
...
@@ -17,6 +17,7 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import
com.dianping.cat.core.dal.MonthlyReport
;
import
com.dianping.cat.core.dal.MonthlyReportDao
;
import
com.dianping.cat.core.dal.MonthlyReportEntity
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.report.service.MonthlyReportService
;
public
class
MonthlyReportServiceImpl
implements
MonthlyReportService
{
...
...
@@ -135,6 +136,20 @@ public class MonthlyReportServiceImpl implements MonthlyReportService {
}
return
new
TransactionReport
(
domain
);
}
@Override
public
BugReport
queryBugReport
(
String
domain
,
Date
start
)
{
try
{
MonthlyReport
entity
=
m_monthlyReportDao
.
findReportByDomainNamePeriod
(
start
,
domain
,
"bug"
,
MonthlyReportEntity
.
READSET_FULL
);
String
content
=
entity
.
getContent
();
return
com
.
dianping
.
cat
.
home
.
bug
.
transform
.
DefaultSaxParser
.
parse
(
content
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
new
BugReport
(
domain
);
}
@Override
public
boolean
insert
(
MonthlyReport
report
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/service/impl/ReportServiceImpl.java
浏览文件 @
6f6c2343
...
...
@@ -18,9 +18,11 @@ import com.dianping.cat.consumer.state.model.entity.StateReport;
import
com.dianping.cat.consumer.top.model.entity.TopReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.core.dal.DailyReport
;
import
com.dianping.cat.core.dal.HourlyReport
;
import
com.dianping.cat.core.dal.MonthlyReport
;
import
com.dianping.cat.core.dal.WeeklyReport
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.report.service.DailyReportService
;
import
com.dianping.cat.report.service.HourlyReportService
;
import
com.dianping.cat.report.service.MonthlyReportCache
;
...
...
@@ -374,6 +376,35 @@ public class ReportServiceImpl implements ReportService {
}
return
report
;
}
@Override
public
BugReport
queryBugReport
(
String
domain
,
Date
start
,
Date
end
)
{
int
type
=
getQueryType
(
start
,
end
);
BugReport
report
=
null
;
if
(
type
==
s_hourly
)
{
report
=
m_hourlyReportService
.
queryBugReport
(
domain
,
start
,
end
);
}
else
if
(
type
==
s_daily
)
{
report
=
m_dailyReportService
.
queryBugReport
(
domain
,
start
,
end
);
}
else
if
(
type
==
s_historyDaily
)
{
report
=
m_dailyReportService
.
queryBugReport
(
domain
,
start
,
end
);
}
else
if
(
type
==
s_historyWeekly
)
{
report
=
m_weeklyReportService
.
queryBugReport
(
domain
,
start
);
}
else
if
(
type
==
s_currentWeekly
)
{
report
=
m_weeklyReportCache
.
queryBugReport
(
domain
,
start
);
}
else
if
(
type
==
s_historyMonth
)
{
report
=
m_monthlyReportService
.
queryBugReport
(
domain
,
start
);
}
else
if
(
type
==
s_currentMonth
)
{
report
=
m_monthReportCache
.
queryBugReport
(
domain
,
start
);
}
else
{
report
=
m_dailyReportService
.
queryBugReport
(
domain
,
start
,
end
);
}
if
(
report
==
null
)
{
report
=
new
BugReport
(
domain
);
report
.
setStartTime
(
start
).
setEndTime
(
end
);
}
return
report
;
}
@Override
public
boolean
insertDailyReport
(
DailyReport
report
)
{
...
...
@@ -390,4 +421,9 @@ public class ReportServiceImpl implements ReportService {
return
m_monthlyReportService
.
insert
(
report
);
}
@Override
public
boolean
insertHourlyReport
(
HourlyReport
report
)
{
return
m_hourlyReportService
.
insert
(
report
);
}
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/WeeklyReportServiceImpl.java
浏览文件 @
6f6c2343
...
...
@@ -17,6 +17,7 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import
com.dianping.cat.core.dal.WeeklyReport
;
import
com.dianping.cat.core.dal.WeeklyReportDao
;
import
com.dianping.cat.core.dal.WeeklyReportEntity
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.report.service.WeeklyReportService
;
public
class
WeeklyReportServiceImpl
implements
WeeklyReportService
{
...
...
@@ -135,6 +136,20 @@ public class WeeklyReportServiceImpl implements WeeklyReportService {
}
return
new
TransactionReport
(
domain
);
}
@Override
public
BugReport
queryBugReport
(
String
domain
,
Date
start
)
{
try
{
WeeklyReport
entity
=
m_weeklyReportDao
.
findReportByDomainNamePeriod
(
start
,
domain
,
"bug"
,
WeeklyReportEntity
.
READSET_FULL
);
String
content
=
entity
.
getContent
();
return
com
.
dianping
.
cat
.
home
.
bug
.
transform
.
DefaultSaxParser
.
parse
(
content
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
new
BugReport
(
domain
);
}
@Override
public
boolean
insert
(
WeeklyReport
report
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/bug/BugReportBuilder.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.task.bug
;
import
java.util.Date
;
import
java.util.Set
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.configuration.NetworkInterfaceManager
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.core.dal.DailyReport
;
import
com.dianping.cat.core.dal.HourlyReport
;
import
com.dianping.cat.core.dal.MonthlyReport
;
import
com.dianping.cat.core.dal.WeeklyReport
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.report.service.ReportService
;
import
com.dianping.cat.report.task.TaskHelper
;
import
com.dianping.cat.report.task.spi.ReportTaskBuilder
;
public
class
BugReportBuilder
implements
ReportTaskBuilder
{
@Inject
protected
ReportService
m_reportService
;
@Override
public
boolean
buildDailyTask
(
String
name
,
String
domain
,
Date
period
)
{
BugReport
bugReport
=
queryHourlyReportsByDuration
(
name
,
domain
,
period
,
TaskHelper
.
tomorrowZero
(
period
));
DailyReport
report
=
new
DailyReport
();
report
.
setContent
(
bugReport
.
toString
());
report
.
setCreationDate
(
new
Date
());
report
.
setDomain
(
domain
);
report
.
setIp
(
NetworkInterfaceManager
.
INSTANCE
.
getLocalHostAddress
());
report
.
setName
(
name
);
report
.
setPeriod
(
period
);
report
.
setType
(
1
);
return
m_reportService
.
insertDailyReport
(
report
);
}
@Override
public
boolean
buildHourlyTask
(
String
name
,
String
domain
,
Date
start
)
{
BugReport
bugReport
=
new
BugReport
(
CatString
.
CAT
);
ProblemReportVisitor
visitor
=
new
ProblemReportVisitor
().
setReport
(
bugReport
);
Date
end
=
new
Date
(
start
.
getTime
()
+
TimeUtil
.
ONE_HOUR
);
Set
<
String
>
domains
=
m_reportService
.
queryAllDomainNames
(
start
,
end
,
"problem"
);
for
(
String
domainName
:
domains
)
{
ProblemReport
problemReport
=
m_reportService
.
queryProblemReport
(
domainName
,
start
,
end
);
visitor
.
visitProblemReport
(
problemReport
);
}
HourlyReport
report
=
new
HourlyReport
();
report
.
setContent
(
bugReport
.
toString
());
report
.
setCreationDate
(
new
Date
());
report
.
setDomain
(
domain
);
report
.
setIp
(
NetworkInterfaceManager
.
INSTANCE
.
getLocalHostAddress
());
report
.
setName
(
name
);
report
.
setPeriod
(
start
);
report
.
setType
(
1
);
return
m_reportService
.
insertHourlyReport
(
report
);
}
@Override
public
boolean
buildMonthlyTask
(
String
name
,
String
domain
,
Date
period
)
{
BugReport
bugReport
=
queryDailyReportsByDuration
(
domain
,
period
,
TaskHelper
.
nextMonthStart
(
period
));
MonthlyReport
report
=
new
MonthlyReport
();
report
.
setContent
(
bugReport
.
toString
());
report
.
setCreationDate
(
new
Date
());
report
.
setDomain
(
domain
);
report
.
setIp
(
NetworkInterfaceManager
.
INSTANCE
.
getLocalHostAddress
());
report
.
setName
(
name
);
report
.
setPeriod
(
period
);
report
.
setType
(
1
);
return
m_reportService
.
insertMonthlyReport
(
report
);
}
@Override
public
boolean
buildWeeklyTask
(
String
name
,
String
domain
,
Date
period
)
{
BugReport
bugReport
=
queryDailyReportsByDuration
(
domain
,
period
,
new
Date
(
period
.
getTime
()
+
TimeUtil
.
ONE_WEEK
));
WeeklyReport
report
=
new
WeeklyReport
();
String
content
=
bugReport
.
toString
();
report
.
setContent
(
content
);
report
.
setCreationDate
(
new
Date
());
report
.
setDomain
(
domain
);
report
.
setIp
(
NetworkInterfaceManager
.
INSTANCE
.
getLocalHostAddress
());
report
.
setName
(
name
);
report
.
setPeriod
(
period
);
report
.
setType
(
1
);
return
m_reportService
.
insertWeeklyReport
(
report
);
}
private
BugReport
queryDailyReportsByDuration
(
String
domain
,
Date
start
,
Date
end
)
{
long
startTime
=
start
.
getTime
();
long
endTime
=
end
.
getTime
();
BugReportMerger
merger
=
new
BugReportMerger
(
new
BugReport
(
domain
));
for
(;
startTime
<
endTime
;
startTime
+=
TimeUtil
.
ONE_DAY
)
{
try
{
BugReport
reportModel
=
m_reportService
.
queryBugReport
(
domain
,
new
Date
(
startTime
),
new
Date
(
startTime
+
TimeUtil
.
ONE_DAY
));
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
}
BugReport
bugReport
=
merger
.
getBugReport
();
bugReport
.
setStartTime
(
start
);
bugReport
.
setEndTime
(
end
);
return
bugReport
;
}
private
BugReport
queryHourlyReportsByDuration
(
String
name
,
String
domain
,
Date
period
,
Date
endDate
)
{
long
startTime
=
period
.
getTime
();
long
endTime
=
endDate
.
getTime
();
BugReportMerger
merger
=
new
BugReportMerger
(
new
BugReport
(
domain
));
for
(;
startTime
<
endTime
;
startTime
=
startTime
+
TimeUtil
.
ONE_HOUR
)
{
Date
date
=
new
Date
(
startTime
);
BugReport
reportModel
=
m_reportService
.
queryBugReport
(
domain
,
date
,
new
Date
(
date
.
getTime
()
+
TimeUtil
.
ONE_HOUR
));
reportModel
.
accept
(
merger
);
}
com
.
dianping
.
cat
.
home
.
bug
.
entity
.
BugReport
bugReport
=
merger
.
getBugReport
();
return
bugReport
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/bug/BugReportMerger.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.task.bug
;
import
java.util.List
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.home.bug.entity.Domain
;
import
com.dianping.cat.home.bug.entity.ExceptionItem
;
import
com.dianping.cat.home.bug.transform.DefaultMerger
;
public
class
BugReportMerger
extends
DefaultMerger
{
public
BugReportMerger
(
BugReport
bugReport
)
{
super
(
bugReport
);
}
@Override
protected
void
mergeBugReport
(
BugReport
old
,
BugReport
bugReport
)
{
old
.
setStartTime
(
bugReport
.
getStartTime
());
old
.
setEndTime
(
bugReport
.
getEndTime
());
old
.
setDomain
(
bugReport
.
getDomain
());
super
.
mergeBugReport
(
old
,
bugReport
);
}
@Override
protected
void
mergeDomain
(
Domain
old
,
Domain
domain
)
{
super
.
mergeDomain
(
old
,
domain
);
}
@Override
protected
void
mergeExceptionItem
(
ExceptionItem
old
,
ExceptionItem
exceptionItem
)
{
old
.
setCount
(
old
.
getCount
()
+
exceptionItem
.
getCount
());
old
.
getMessages
().
addAll
(
exceptionItem
.
getMessages
());
List
<
String
>
oldMessages
=
old
.
getMessages
();
if
(
oldMessages
.
size
()
>
10
)
{
oldMessages
=
oldMessages
.
subList
(
0
,
10
);
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/bug/ProblemReportVisitor.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.report.task.bug
;
import
java.util.List
;
import
com.dianping.cat.consumer.problem.ProblemType
;
import
com.dianping.cat.consumer.problem.model.entity.Duration
;
import
com.dianping.cat.consumer.problem.model.entity.Entry
;
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.entity.Segment
;
import
com.dianping.cat.consumer.problem.model.transform.BaseVisitor
;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.home.bug.entity.Domain
;
import
com.dianping.cat.home.bug.entity.ExceptionItem
;
public
class
ProblemReportVisitor
extends
BaseVisitor
{
private
BugReport
m_report
;
private
String
m_currentDomain
;
private
String
m_exception
;
@Override
public
void
visitDuration
(
Duration
duration
)
{
int
count
=
duration
.
getCount
();
List
<
String
>
messages
=
duration
.
getMessages
();
Domain
domainInfo
=
m_report
.
findOrCreateDomain
(
m_currentDomain
);
ExceptionItem
target
=
domainInfo
.
findOrCreateExceptionItem
(
m_exception
);
List
<
String
>
oldMessages
=
target
.
getMessages
();
target
.
setCount
(
target
.
getCount
()
+
count
);
oldMessages
.
addAll
(
messages
);
if
(
oldMessages
.
size
()
>
10
)
{
oldMessages
=
oldMessages
.
subList
(
0
,
10
);
}
}
@Override
public
void
visitEntry
(
Entry
entry
)
{
String
type
=
entry
.
getType
();
if
(
ProblemType
.
ERROR
.
equals
(
type
))
{
m_exception
=
entry
.
getStatus
();
super
.
visitEntry
(
entry
);
}
}
@Override
public
void
visitMachine
(
Machine
machine
)
{
super
.
visitMachine
(
machine
);
}
@Override
public
void
visitProblemReport
(
ProblemReport
problemReport
)
{
m_currentDomain
=
problemReport
.
getDomain
();
super
.
visitProblemReport
(
problemReport
);
}
@Override
public
void
visitSegment
(
Segment
segment
)
{
super
.
visitSegment
(
segment
);
}
public
BugReport
getReport
()
{
return
m_report
;
}
public
ProblemReportVisitor
setReport
(
BugReport
report
)
{
m_report
=
report
;
return
this
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/spi/ReportFacade.java
浏览文件 @
6f6c2343
...
...
@@ -13,6 +13,7 @@ import org.unidal.lookup.annotation.Inject;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.ReportType
;
import
com.dianping.cat.core.dal.Task
;
import
com.dianping.cat.report.task.bug.BugReportBuilder
;
import
com.dianping.cat.report.task.cross.CrossReportBuilder
;
import
com.dianping.cat.report.task.dependency.DependencyReportBuilder
;
import
com.dianping.cat.report.task.event.EventReportBuilder
;
...
...
@@ -57,6 +58,9 @@ public class ReportFacade implements LogEnabled, Initializable {
@Inject
private
StateReportBuilder
m_stateReportBuilder
;
@Inject
private
BugReportBuilder
m_bugReportBuilder
;
@Inject
private
DependencyReportBuilder
m_dependendcyReportBuilder
;
...
...
@@ -133,6 +137,7 @@ public class ReportFacade implements LogEnabled, Initializable {
m_reportBuilders
.
put
(
"state"
,
m_stateReportBuilder
);
m_reportBuilders
.
put
(
"dependency"
,
m_dependendcyReportBuilder
);
m_reportBuilders
.
put
(
"metric"
,
m_metricBaselineReportBuilder
);
m_reportBuilders
.
put
(
"bug"
,
m_bugReportBuilder
);
}
}
cat-home/src/main/java/com/dianping/cat/system/config/BugConfigManager.java
0 → 100644
浏览文件 @
6f6c2343
package
com.dianping.cat.system.config
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.unidal.dal.jdbc.DalNotFoundException
;
import
org.unidal.helper.Files
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.core.config.Config
;
import
com.dianping.cat.core.config.ConfigDao
;
import
com.dianping.cat.core.config.ConfigEntity
;
import
com.dianping.cat.home.bug.config.entity.BugConfig
;
import
com.dianping.cat.home.bug.config.entity.Domain
;
import
com.dianping.cat.home.bug.config.transform.DefaultSaxParser
;
public
class
BugConfigManager
implements
Initializable
,
LogEnabled
{
@Inject
private
ConfigDao
m_configDao
;
private
int
m_configId
;
private
BugConfig
m_bugConfig
;
private
Logger
m_logger
;
private
static
final
String
CONFIG_NAME
=
"bugConfig"
;
public
List
<
String
>
queryBugConfigsByDomain
(
String
domain
)
{
Domain
config
=
m_bugConfig
.
findDomain
(
domain
);
if
(
config
==
null
)
{
return
m_bugConfig
.
getExceptions
();
}
else
{
if
(
config
.
getAdditivity
()
==
true
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
result
.
addAll
(
m_bugConfig
.
getExceptions
());
result
.
addAll
(
config
.
getExceptions
());
return
result
;
}
else
{
return
config
.
getExceptions
();
}
}
}
public
BugConfig
getBugConfig
()
{
return
m_bugConfig
;
}
public
boolean
insert
(
String
xml
)
{
try
{
m_bugConfig
=
DefaultSaxParser
.
parse
(
xml
);
return
storeConfig
();
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
m_logger
.
error
(
e
.
getMessage
(),
e
);
return
false
;
}
}
@Override
public
void
initialize
()
throws
InitializationException
{
try
{
Config
config
=
m_configDao
.
findByName
(
CONFIG_NAME
,
ConfigEntity
.
READSET_FULL
);
String
content
=
config
.
getContent
();
m_bugConfig
=
DefaultSaxParser
.
parse
(
content
);
m_configId
=
config
.
getId
();
}
catch
(
DalNotFoundException
e
)
{
try
{
String
content
=
Files
.
forIO
().
readFrom
(
this
.
getClass
().
getResourceAsStream
(
"/config/default-bug-config.xml"
),
"utf-8"
);
Config
config
=
m_configDao
.
createLocal
();
config
.
setName
(
CONFIG_NAME
);
config
.
setContent
(
content
);
m_configDao
.
insert
(
config
);
m_bugConfig
=
DefaultSaxParser
.
parse
(
content
);
m_configId
=
config
.
getId
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
ex
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
if
(
m_bugConfig
==
null
)
{
m_bugConfig
=
new
BugConfig
();
}
}
private
boolean
storeConfig
()
{
synchronized
(
this
)
{
try
{
Config
config
=
m_configDao
.
createLocal
();
config
.
setId
(
m_configId
);
config
.
setKeyId
(
m_configId
);
config
.
setName
(
CONFIG_NAME
);
config
.
setContent
(
m_bugConfig
.
toString
());
m_configDao
.
updateByPK
(
config
,
ConfigEntity
.
UPDATESET_FULL
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
return
false
;
}
}
return
true
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
\ No newline at end of file
cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java
浏览文件 @
6f6c2343
...
...
@@ -54,6 +54,8 @@ public enum Action implements org.unidal.web.mvc.Action {
EXCEPTION_THRESHOLD_UPDATE_SUBMIT
(
"exceptionThresholdUpdateSubmit"
),
EXCEPTION_THRESHOLD_DELETE
(
"exceptionThresholdDelete"
),
BUG_CONFIG_UPDATE
(
"bugConfigUpdate"
),
;
private
String
m_name
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
浏览文件 @
6f6c2343
...
...
@@ -38,6 +38,7 @@ import com.dianping.cat.home.dependency.exception.entity.ExceptionLimit;
import
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
;
import
com.dianping.cat.report.view.DomainNavManager
;
import
com.dianping.cat.system.SystemPage
;
import
com.dianping.cat.system.config.BugConfigManager
;
import
com.dianping.cat.system.config.ExceptionThresholdConfigManager
;
public
class
Handler
implements
PageHandler
<
Context
>
{
...
...
@@ -61,6 +62,9 @@ public class Handler implements PageHandler<Context> {
@Inject
private
ExceptionThresholdConfigManager
m_exceptionConfigManager
;
@Inject
private
BugConfigManager
m_bugConfigManager
;
@Inject
private
DomainNavManager
m_manager
;
...
...
@@ -266,6 +270,15 @@ public class Handler implements PageHandler<Context> {
updateExceptionLimit
(
payload
);
model
.
setExceptionLimits
(
m_exceptionConfigManager
.
queryAllExceptionLimits
());
break
;
case
BUG_CONFIG_UPDATE:
String
xml
=
payload
.
getBug
();
if
(!
StringUtils
.
isEmpty
(
xml
)){
model
.
setOpState
(
m_bugConfigManager
.
insert
(
payload
.
getBug
()));
}
else
{
model
.
setOpState
(
true
);
}
model
.
setBug
(
m_bugConfigManager
.
getBugConfig
().
toString
());
break
;
}
m_jspViewer
.
view
(
ctx
,
model
);
}
...
...
@@ -368,5 +381,5 @@ public class Handler implements PageHandler<Context> {
}
}
}
}
cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java
浏览文件 @
6f6c2343
...
...
@@ -29,7 +29,9 @@ public enum JspFile {
EXCEPTION_THRESHOLD
(
"/jsp/system/exception/exceptionThreshold.jsp"
),
EXCEPTION_THRESHOLD_CONFIG
(
"/jsp/system/exception/exceptionThresholdConfig.jsp"
)
EXCEPTION_THRESHOLD_CONFIG
(
"/jsp/system/exception/exceptionThresholdConfig.jsp"
),
BUG_CONFIG_UPDATE
(
"/jsp/system/bug/bugConfig.jsp"
),
;
private
String
m_path
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java
浏览文件 @
6f6c2343
...
...
@@ -69,6 +69,9 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
return
JspFile
.
EXCEPTION_THRESHOLD
.
getPath
();
case
EXCEPTION_THRESHOLD_UPDATE:
return
JspFile
.
EXCEPTION_THRESHOLD_CONFIG
.
getPath
();
//Bug
case
BUG_CONFIG_UPDATE:
return
JspFile
.
BUG_CONFIG_UPDATE
.
getPath
();
}
throw
new
RuntimeException
(
"Unknown action: "
+
action
);
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java
浏览文件 @
6f6c2343
...
...
@@ -51,6 +51,8 @@ public class Model extends ViewModel<SystemPage, Action, Context> {
private
MetricItemConfig
m_metricItemConfig
;
private
Map
<
ProductLine
,
List
<
MetricItemConfig
>>
m_productMetricConfigs
;
private
String
m_bug
;
public
Model
(
Context
ctx
)
{
super
(
ctx
);
...
...
@@ -217,6 +219,14 @@ public class Model extends ViewModel<SystemPage, Action, Context> {
m_exceptionLimits
=
exceptionLimits
;
}
public
String
getBug
()
{
return
m_bug
;
}
public
void
setBug
(
String
bug
)
{
m_bug
=
bug
;
}
public
static
class
Edge
{
private
List
<
EdgeConfig
>
m_edgeConfigs
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Payload.java
浏览文件 @
6f6c2343
...
...
@@ -74,6 +74,9 @@ public class Payload implements ActionPayload<SystemPage, Action> {
@FieldMeta
(
"exception"
)
private
String
m_exception
;
@FieldMeta
(
"bug"
)
private
String
m_bug
;
@Override
public
Action
getAction
()
{
if
(
m_action
==
null
)
{
...
...
@@ -260,4 +263,12 @@ public class Payload implements ActionPayload<SystemPage, Action> {
m_exceptionLimit
=
exceptionLimit
;
}
public
String
getBug
()
{
return
m_bug
;
}
public
void
setBug
(
String
bug
)
{
m_bug
=
bug
;
}
}
cat-home/src/main/resources/META-INF/dal/model/bug-codegen.xml
浏览文件 @
6f6c2343
...
...
@@ -2,21 +2,19 @@
<model>
<entity
name=
"bug-report"
root=
"true"
>
<attribute
name=
"startTime"
value-type=
"Date"
format=
"yyyy-MM-dd HH:mm:ss"
/>
<attribute
name=
"domain"
value-type=
"String"
/>
<attribute
name=
"endTime"
value-type=
"Date"
format=
"yyyy-MM-dd HH:mm:ss"
/>
<entity-ref
name=
"domain"
type=
"list"
names=
"domains"
/>
</entity>
<entity
name=
"domain"
>
<attribute
name=
"id"
value-type=
"String"
/>
<element
name=
"
excpetion
"
value-type=
"String"
/>
<entity-ref
name=
"exception"
/>
<element
name=
"
problem-url
"
value-type=
"String"
/>
<entity-ref
name=
"exception
-item"
type=
"list"
names=
"exception-items
"
/>
</entity>
<entity
name=
"exception"
>
<entity
name=
"exception
-item
"
>
<attribute
name=
"id"
value-type=
"String"
/>
<attribute
name=
"count"
value-type=
"int"
/>
<entity-ref
name=
"message"
type=
"list"
names=
"messages"
/>
</entity>
<entity
name=
"message"
>
<attribute
name=
"id"
value-type=
"String"
/>
<element
name=
"message"
value-type=
"String"
type=
"list"
names=
"messages"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/dal/model/bug-config-codegen.xml
浏览文件 @
6f6c2343
<?xml version="1.0" encoding="UTF-8"?>
<model>
<entity
name=
"bug-config"
root=
"true"
>
<entity-ref
name=
"exception"
type=
"list"
names=
"exceptions"
/>
<entity-ref
name=
"domain"
/>
</entity>
<entity
name=
"exception"
>
<attribute
name=
"id"
value-type=
"String"
/>
<element
name=
"exception"
value-type=
"String"
type=
"list"
names=
"exceptions"
/>
<entity-ref
name=
"domain"
type=
"list"
names=
"domains"
/>
</entity>
<entity
name=
"domain"
>
<attribute
name=
"id"
value-type=
"String"
/>
<attribute
name=
"additivity"
value-type=
"boolean"
/>
<e
ntity-ref
name=
"exception
"
type=
"list"
names=
"exceptions"
/>
<e
lement
name=
"exception"
value-type=
"String
"
type=
"list"
names=
"exceptions"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/dal/model/bug-config-model.xml
浏览文件 @
6f6c2343
<?xml version="1.0" encoding="UTF-8"?>
<model
model-package=
"com.dianping.cat.home.bug.config"
enable-merger=
"true"
enable-sax-parser=
"true"
enable-base-visitor=
"true"
>
<model
model-package=
"com.dianping.cat.home.bug.config"
enable-merger=
"true"
enable-sax-parser=
"true"
enable-base-visitor=
"true"
enable-xml-parser=
"false"
enable-xml-builder=
"false"
>
<entity
name=
"bug-config"
root=
"true"
>
<element
name=
"exception"
value-type=
"String"
type=
"list"
names=
"exceptions"
/>
<entity-ref
name=
"domain"
type=
"map"
names=
"domains"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"domain"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"additivity"
value-type=
"boolean"
/>
<element
name=
"exception"
value-type=
"String"
type=
"list"
names=
"exceptions"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/dal/model/bug-model.xml
浏览文件 @
6f6c2343
<?xml version="1.0" encoding="UTF-8"?>
<model
model-package=
"com.dianping.cat.home.bug"
enable-merger=
"true"
enable-sax-parser=
"true"
enable-base-visitor=
"true"
>
<model
model-package=
"com.dianping.cat.home.bug"
enable-merger=
"true"
enable-sax-parser=
"true"
enable-base-visitor=
"true"
enable-json-parser=
"true"
enable-json-builder=
"true"
enable-native-parser=
"true"
enable-native-builder=
"true"
enable-xml-parser=
"false"
enable-xml-builder=
"false"
>
<entity
name=
"bug-report"
root=
"true"
>
<attribute
name=
"startTime"
value-type=
"Date"
format=
"yyyy-MM-dd HH:mm:ss"
/>
<attribute
name=
"domain"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"endTime"
value-type=
"Date"
format=
"yyyy-MM-dd HH:mm:ss"
/>
<entity-ref
name=
"domain"
type=
"map"
names=
"domains"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"domain"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<element
name=
"problem-url"
value-type=
"String"
/>
<element
name=
"excpetion"
value-type=
"String"
/>
<entity-ref
name=
"exception-item"
type=
"map"
names=
"exception-items"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"exception-item"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"count"
value-type=
"int"
/>
<element
name=
"message"
value-type=
"String"
type=
"list"
names=
"messages"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
6f6c2343
...
...
@@ -82,6 +82,15 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.config.BugConfigManager
</role>
<implementation>
com.dianping.cat.system.config.BugConfigManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder
</role>
<implementation>
com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder
</implementation>
...
...
@@ -432,6 +441,15 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.bug.BugReportBuilder
</role>
<implementation>
com.dianping.cat.report.task.bug.BugReportBuilder
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.service.ReportService
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.matrix.MatrixReportBuilder
</role>
<implementation>
com.dianping.cat.report.task.matrix.MatrixReportBuilder
</implementation>
...
...
@@ -526,6 +544,9 @@
<requirement>
<role>
com.dianping.cat.report.task.dependency.DependencyReportBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.bug.BugReportBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.metric.MetricBaselineReportBuilder
</role>
</requirement>
...
...
@@ -2463,6 +2484,30 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.page.bug.Handler
</role>
<implementation>
com.dianping.cat.report.page.bug.Handler
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.page.bug.JspViewer
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.service.ReportService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.consumer.advanced.ProductLineConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.page.bug.JspViewer
</role>
<implementation>
com.dianping.cat.report.page.bug.JspViewer
</implementation>
<requirements>
<requirement>
<role>
org.unidal.web.mvc.view.model.ModelHandler
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.SystemModule
</role>
<implementation>
com.dianping.cat.system.SystemModule
</implementation>
...
...
@@ -2704,6 +2749,9 @@
<requirement>
<role>
com.dianping.cat.system.config.ExceptionThresholdConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.BugConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.view.DomainNavManager
</role>
</requirement>
...
...
@@ -2727,6 +2775,15 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.config.BugConfigManager
</role>
<implementation>
com.dianping.cat.system.config.BugConfigManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.page.abtest.Handler
</role>
<implementation>
com.dianping.cat.system.page.abtest.Handler
</implementation>
...
...
cat-home/src/main/resources/META-INF/wizard/webapp/wizard.xml
浏览文件 @
6f6c2343
...
...
@@ -56,6 +56,9 @@
<page
name=
"externalError"
title=
"externalError"
path=
"externalError"
template=
"default"
>
<description>
ExternalError
</description>
</page>
<page
name=
"bug"
title=
"Bug"
path=
"bug"
template=
"default"
>
<description>
Bug
</description>
</page>
</module>
<module
name=
"system"
path=
"s"
default=
"false"
>
<page
name=
"alarm"
title=
"Alarm"
default=
"true"
path=
"alarm"
view=
"/jsp/system/alarm/alarm.jsp"
>
...
...
cat-home/src/main/resources/config/default-bug-config.xml
0 → 100644
浏览文件 @
6f6c2343
<?xml version="1.0" encoding="utf-8"?>
<bug-config>
<exception>
om.dianping.dpsf.exception.NetTimeoutException
</exception>
<exception>
com.dianping.dpsf.exception.DPSFTimeoutException
</exception>
<exception>
org.apache.http.conn.HttpHostConnectException
</exception>
<exception>
net.spy.memcached.internal.CheckedOperationTimeoutException
</exception>
<exception>
net.spy.memcached.internal.CheckedOperationTimeoutException
</exception>
<exception>
java.net.ConnectException
</exception>
</bug-config>
\ No newline at end of file
cat-home/src/main/webapp/jsp/report/bug.jsp
0 → 100644
浏览文件 @
6f6c2343
<%@ page
contentType=
"text/html; charset=utf-8"
%>
<jsp:useBean
id=
"ctx"
type=
"com.dianping.cat.report.page.bug.Context"
scope=
"request"
/>
<jsp:useBean
id=
"payload"
type=
"com.dianping.cat.report.page.bug.Payload"
scope=
"request"
/>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.report.page.bug.Model"
scope=
"request"
/>
View of bug page under report
\ No newline at end of file
cat-home/src/main/webapp/jsp/system/bug/bugConfig.jsp
0 → 100644
浏览文件 @
6f6c2343
<%@ page
contentType=
"text/html; charset=utf-8"
%>
<%@ taglib
prefix=
"a"
uri=
"/WEB-INF/app.tld"
%>
<%@ taglib
prefix=
"c"
uri=
"http://java.sun.com/jsp/jstl/core"
%>
<%@ taglib
prefix=
"res"
uri=
"http://www.unidal.org/webres"
%>
<%@ taglib
prefix=
"w"
uri=
"http://www.unidal.org/web/core"
%>
<a:body>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery.validate.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'dependencyConfig.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'alarm_js'
]
}
"
target=
"head-js"
/>
<res:useCss
value=
"
${
res
.
css
.
local
[
'select2.css'
]
}
"
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'select2.min.js'
]
}
"
target=
"head-js"
/>
<div
class=
"row-fluid"
>
<div
class=
"span2"
>
<%@include
file=
"../configTree.jsp"
%>
</div>
<div
class=
"span10"
>
<form
name=
"bugConfigUpdate"
id=
"form"
method=
"post"
action=
"${model.pageUri}?op=bugConfigUpdate"
>
<h4
class=
"text-center text-error"
id=
"state"
>
</h4>
<h4
class=
"text-center text-error"
>
异常规范配置
</h4>
<table
class=
"table table-striped table-bordered table-condensed"
>
<tr>
<td><textarea
name=
"bug"
style=
"width:auto"
rows=
"30"
cols=
"150"
>
${model.bug}
</textarea></td>
</tr>
<tr>
<td><input
class=
'btn btn-primary'
id=
"addOrUpdateEdgeSubmit"
type=
"submit"
name=
"submit"
value=
"提交"
/></td>
</tr>
</table>
</form>
</div>
</div>
</a:body>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
$
(
'
#bugConfigUpdate
'
).
addClass
(
'
active
'
);
var
state
=
'
${model.opState}
'
;
if
(
state
==
'
Success
'
){
$
(
'
#state
'
).
html
(
'
操作成功
'
);
}
else
{
$
(
'
#state
'
).
html
(
'
操作失败
'
);
}
setInterval
(
function
(){
$
(
'
#state
'
).
html
(
'
'
);
},
3000
);
});
</script>
\ No newline at end of file
cat-home/src/main/webapp/jsp/system/configTree.jsp
浏览文件 @
6f6c2343
...
...
@@ -14,6 +14,8 @@
<li
class=
"text-right"
id=
"metricConfigList"
><a
href=
"?op=metricConfigList"
><strong>
业务监控规则
</strong></a></li>
<li
class=
'nav-header'
><h4>
异常监控配置
</h4></li>
<li
class=
"text-right"
id=
"exceptionConfigList"
><a
href=
"?op=exceptionThresholds"
><strong>
异常监控规则
</strong></a></li>
<li
class=
'nav-header'
><h4>
异常规范配置
</h4></li>
<li
class=
"text-right"
id=
"bugConfigUpdate"
><a
href=
"?op=bugConfigUpdate"
><strong>
异常规范配置
</strong></a></li>
</ul>
</div>
<style>
...
...
cat-home/src/test/resources/com/dianping/cat/report/page/bug/bug-config.xml
浏览文件 @
6f6c2343
<?xml version="1.0" encoding="utf-8"?>
<bug-config>
<exception
id=
"NetTimexception1"
/
>
<exception
id=
"NetTimexception2"
/
>
<exception
id=
"NetTimexception3"
/
>
<exception
id=
"NetTimexception4"
/
>
<exception
>
NetTimexception2
</exception
>
<exception
>
NetTimexception2
</exception
>
<exception
>
NetTimexception2
</exception
>
<exception
>
NetTimexception2
</exception
>
<domain
id=
"Cat"
additivity=
"false"
>
<exception
id=
"NetTimexception4"
/>
<exception
id=
"NetTimexception5"
/>
<exception
id=
"NetTimexception6"
/>
<exception>
NetTimexception2
</exception>
<exception>
NetTimexception2
</exception>
<exception>
NetTimexception2
</exception>
<exception>
NetTimexception2
</exception>
</domain>
<domain
id=
"Cat1"
additivity=
"true"
>
<exception
id=
"NetTimexception5"
/>
<exception>
NetTimexception2
</exception>
<exception>
NetTimexception2
</exception>
<exception>
NetTimexception2
</exception>
<exception>
NetTimexception2
</exception>
</domain>
</bug-config>
\ No newline at end of file
cat-home/src/test/resources/com/dianping/cat/report/page/bug/bug.xml
浏览文件 @
6f6c2343
...
...
@@ -2,13 +2,13 @@
<bug-report
startTime=
"2012-05-16 16:00:00"
domain=
"All"
endTime=
"2012-05-16 16:59:59"
>
<domain
id=
"Cat"
>
<problem-url>
http://cat.dianpingoa.com/cat/r/p
?domain=Cat
&
ip=All
&
date=2013080716
&
reportType=
&
op=view
</problem-url>
<exception
id=
"NPE"
count=
"123"
>
<message
url=
"http://cat.dianpingoa.com/cat/r/ShopServer"
>
</message>
<message
url=
"http://cat.dianpingoa.com/cat/r/ShopServer"
>
</message>
<message
url=
"http://cat.dianpingoa.com/cat/r/ShopServer"
>
</message>
</exception>
<exc
petion></excpetion
>
<problem-url>
http://cat.dianpingoa.com/cat/r/p
</problem-url>
<exception
-item
id=
"NPE"
count=
"123"
>
<message
>
http://cat.dianpingoa.com/cat/r/ShopServer
</message>
<message
>
http://cat.dianpingoa.com/cat/r/ShopServer
</message>
<message
>
http://cat.dianpingoa.com/cat/r/ShopServer
</message>
</exception
-item
>
<exc
eption-item></exception-item
>
</domain>
<domain>
</domain>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录