Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
33480e27
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,发现更多精彩内容 >>
提交
33480e27
编写于
6月 13, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the company productline and fix topology graph
上级
b1f5d1ef
变更
23
显示空白变更内容
内联
并排
Showing
23 changed file
with
360 addition
and
232 deletion
+360
-232
cat-home/pom.xml
cat-home/pom.xml
+12
-0
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+8
-4
cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java
...java/com/dianping/cat/report/page/dependency/Handler.java
+6
-6
cat-home/src/main/java/com/dianping/cat/report/page/dependency/Model.java
...n/java/com/dianping/cat/report/page/dependency/Model.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphBuilder.java
...at/report/page/dependency/graph/TopologyGraphBuilder.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphConfigManager.java
...ort/page/dependency/graph/TopologyGraphConfigManager.java
+25
-151
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java
...at/report/page/dependency/graph/TopologyGraphManager.java
+10
-9
cat-home/src/main/java/com/dianping/cat/report/view/DomainNavManager.java
...n/java/com/dianping/cat/report/view/DomainNavManager.java
+0
-3
cat-home/src/main/java/com/dianping/cat/system/config/ProductLineConfigManager.java
.../dianping/cat/system/config/ProductLineConfigManager.java
+206
-0
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
...ain/java/com/dianping/cat/system/page/config/Handler.java
+12
-8
cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java
...ain/java/com/dianping/cat/system/page/config/JspFile.java
+2
-2
cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java
.../main/java/com/dianping/cat/system/page/config/Model.java
+1
-1
cat-home/src/main/java/com/dianping/cat/system/page/config/Payload.java
...ain/java/com/dianping/cat/system/page/config/Payload.java
+1
-1
cat-home/src/main/resources/META-INF/dal/model/company-codegen.xml
...src/main/resources/META-INF/dal/model/company-codegen.xml
+2
-0
cat-home/src/main/resources/META-INF/dal/model/company-model.xml
...e/src/main/resources/META-INF/dal/model/company-model.xml
+8
-3
cat-home/src/main/resources/META-INF/dal/model/topology-graph-config-model.xml
...ources/META-INF/dal/model/topology-graph-config-model.xml
+0
-8
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+26
-5
cat-home/src/main/resources/config/default-product-line-config.xml
...src/main/resources/config/default-product-line-config.xml
+19
-0
cat-home/src/main/resources/config/default-topology-config.xml
...ome/src/main/resources/config/default-topology-config.xml
+0
-19
cat-home/src/main/webapp/jsp/system/configTree.jsp
cat-home/src/main/webapp/jsp/system/configTree.jsp
+2
-2
cat-home/src/main/webapp/jsp/system/productLine/topologyProductLineAdd.jsp
.../webapp/jsp/system/productLine/topologyProductLineAdd.jsp
+15
-5
cat-home/src/main/webapp/jsp/system/productLine/topologyProductLines.jsp
...in/webapp/jsp/system/productLine/topologyProductLines.jsp
+2
-2
cat-home/src/test/resources/com/dianping/cat/system/config/company.xml
...test/resources/com/dianping/cat/system/config/company.xml
+1
-1
未找到文件。
cat-home/pom.xml
浏览文件 @
33480e27
...
...
@@ -193,6 +193,18 @@
${basedir}/src/main/resources/META-INF/dal/jdbc/alarm-manifest.xml,]]>
</manifest>
</configuration>
</execution>
<execution>
<id>
generate dal model files
</id>
<phase>
generate-sources
</phase>
<goals>
<goal>
dal-model
</goal>
</goals>
<configuration>
<manifest>
<![CDATA[${basedir}/src/main/resources/META-INF/dal/model/topology-graph-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/topology-graph-config-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/company-manifest.xml,]]>
</manifest>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
...
...
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
33480e27
...
...
@@ -83,6 +83,7 @@ import com.dianping.cat.report.task.transaction.TransactionGraphCreator;
import
com.dianping.cat.report.task.transaction.TransactionMerger
;
import
com.dianping.cat.report.task.transaction.TransactionReportBuilder
;
import
com.dianping.cat.report.view.DomainNavManager
;
import
com.dianping.cat.system.config.ProductLineConfigManager
;
public
class
ComponentsConfigurator
extends
AbstractResourceConfigurator
{
public
static
void
main
(
String
[]
args
)
{
...
...
@@ -163,7 +164,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
DependencyReportBuilder
.
class
)
//
.
req
(
GraphDao
.
class
,
DailygraphDao
.
class
,
ReportDao
.
class
,
DailyreportDao
.
class
)
//
.
req
(
WeeklyreportDao
.
class
,
MonthreportDao
.
class
)
//
.
req
(
ReportService
.
class
,
TopologyGraphBuilder
.
class
,
TopologyGraphDao
.
class
));
.
req
(
ReportService
.
class
,
TopologyGraphBuilder
.
class
,
TopologyGraphDao
.
class
));
all
.
add
(
C
(
TaskProducer
.
class
,
TaskProducer
.
class
)
//
.
req
(
TaskDao
.
class
,
ReportDao
.
class
));
...
...
@@ -176,7 +177,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.
req
(
TransactionReportBuilder
.
class
,
EventReportBuilder
.
class
,
ProblemReportBuilder
.
class
,
//
HeartbeatReportBuilder
.
class
,
MatrixReportBuilder
.
class
,
CrossReportBuilder
.
class
,
//
DatabaseReportBuilder
.
class
,
SqlReportBuilder
.
class
,
HealthReportBuilder
.
class
,
//
StateReportBuilder
.
class
,
DependencyReportBuilder
.
class
));
StateReportBuilder
.
class
,
DependencyReportBuilder
.
class
));
all
.
add
(
C
(
PayloadNormalizer
.
class
).
req
(
ServerConfigManager
.
class
));
...
...
@@ -219,6 +220,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
EventCollectManager
.
class
).
req
(
EventDao
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
ProductLineConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
TopologyGraphConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
TopologyGraphItemBuilder
.
class
).
req
(
TopologyGraphConfigManager
.
class
));
...
...
@@ -228,8 +231,9 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
// model service
all
.
addAll
(
new
ServiceComponentConfigurator
().
defineComponents
());
all
.
add
(
C
(
TopologyGraphManager
.
class
).
req
(
TopologyGraphBuilder
.
class
,
ServerConfigManager
.
class
)
//
.
req
(
TopologyGraphConfigManager
.
class
,
TopologyGraphDao
.
class
).
req
(
ModelService
.
class
,
"dependency"
));
all
.
add
(
C
(
TopologyGraphManager
.
class
).
req
(
TopologyGraphBuilder
.
class
,
ServerConfigManager
.
class
)
//
.
req
(
ProductLineConfigManager
.
class
,
TopologyGraphDao
.
class
)
//
.
req
(
ModelService
.
class
,
"dependency"
));
// database
all
.
add
(
C
(
JdbcDataSourceConfigurationManager
.
class
)
//
...
...
cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java
浏览文件 @
33480e27
...
...
@@ -30,11 +30,11 @@ import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import
com.dianping.cat.consumer.top.model.entity.TopReport
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.dal.report.Event
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyEdge
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyNode
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyGraph
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyNode
;
import
com.dianping.cat.home.dependency.graph.transform.DefaultJsonBuilder
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.report.page.LineChart
;
...
...
@@ -43,7 +43,6 @@ import com.dianping.cat.report.page.dependency.dashboard.ProductLineDashboard;
import
com.dianping.cat.report.page.dependency.dashboard.ProductLinesDashboard
;
import
com.dianping.cat.report.page.dependency.graph.GraphConstrant
;
import
com.dianping.cat.report.page.dependency.graph.LineGraphBuilder
;
import
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
;
import
com.dianping.cat.report.page.dependency.graph.TopologyGraphManager
;
import
com.dianping.cat.report.page.externalError.EventCollectManager
;
import
com.dianping.cat.report.page.model.dependency.DependencyReportMerger
;
...
...
@@ -52,6 +51,7 @@ import com.dianping.cat.report.page.model.spi.ModelResponse;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.page.top.TopMetric
;
import
com.dianping.cat.report.service.ReportService
;
import
com.dianping.cat.system.config.ProductLineConfigManager
;
public
class
Handler
implements
PageHandler
<
Context
>
{
...
...
@@ -65,7 +65,7 @@ public class Handler implements PageHandler<Context> {
private
TopologyGraphManager
m_graphManager
;
@Inject
private
TopologyGraphConfigManager
m_graphConfigMana
ger
;
private
ProductLineConfigManager
m_productLineConfigMan
ger
;
@Inject
private
ReportService
m_reportService
;
...
...
@@ -395,7 +395,7 @@ public class Handler implements PageHandler<Context> {
model
.
setReportStart
(
new
Date
(
payload
.
getDate
()));
model
.
setReportEnd
(
new
Date
(
payload
.
getDate
()
+
TimeUtil
.
ONE_HOUR
-
1
));
model
.
setProductLineGraph
(
productLineGraph
.
toJson
());
model
.
setProductLines
(
new
ArrayList
<
ProductLine
>(
m_
graphConfigMana
ger
.
queryProductLines
().
values
()));
model
.
setProductLines
(
new
ArrayList
<
ProductLine
>(
m_
productLineConfigMan
ger
.
queryProductLines
().
values
()));
break
;
}
m_jspViewer
.
view
(
ctx
,
model
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/dependency/Model.java
浏览文件 @
33480e27
...
...
@@ -13,8 +13,8 @@ import org.unidal.web.mvc.view.annotation.ModelMeta;
import
com.dianping.cat.consumer.dependency.model.entity.DependencyReport
;
import
com.dianping.cat.consumer.dependency.model.entity.Segment
;
import
com.dianping.cat.consumer.top.model.entity.TopReport
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.dal.report.Event
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
import
com.dianping.cat.report.page.AbstractReportModel
;
import
com.dianping.cat.report.page.dependency.dashboard.ProductLinesDashboard
;
import
com.dianping.cat.report.page.top.TopMetric
;
...
...
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphBuilder.java
浏览文件 @
33480e27
...
...
@@ -16,8 +16,8 @@ import com.dianping.cat.consumer.dependency.model.entity.Segment;
import
com.dianping.cat.consumer.dependency.model.transform.BaseVisitor
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyEdge
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyNode
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyGraph
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyNode
;
public
class
TopologyGraphBuilder
extends
BaseVisitor
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphConfigManager.java
浏览文件 @
33480e27
...
...
@@ -3,24 +3,13 @@ package com.dianping.cat.report.page.dependency.graph;
import
java.io.File
;
import
java.io.IOException
;
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.TreeMap
;
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.Threads
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.tuple.Pair
;
import
org.unidal.webres.helper.Files
;
...
...
@@ -32,24 +21,18 @@ import com.dianping.cat.consumer.core.config.ConfigEntity;
import
com.dianping.cat.consumer.dependency.model.entity.Dependency
;
import
com.dianping.cat.consumer.dependency.model.entity.Index
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.helper.MapUtils
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.dependency.config.entity.Domain
;
import
com.dianping.cat.home.dependency.config.entity.DomainConfig
;
import
com.dianping.cat.home.dependency.config.entity.EdgeConfig
;
import
com.dianping.cat.home.dependency.config.entity.NodeConfig
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
import
com.dianping.cat.home.dependency.config.entity.TopologyGraphConfig
;
import
com.dianping.cat.home.dependency.config.transform.DefaultSaxParser
;
public
class
TopologyGraphConfigManager
implements
Initializable
,
LogEnabled
{
public
class
TopologyGraphConfigManager
implements
Initializable
{
@Inject
private
ConfigDao
m_configDao
;
private
TopologyGraphConfig
m_config
;
private
Map
<
String
,
String
>
m_domainToProductLine
=
new
HashMap
<
String
,
String
>();
private
DecimalFormat
m_df
=
new
DecimalFormat
(
"0.0"
);
private
static
final
String
AVG_STR
=
CatString
.
RESPONSE_TIME
;
...
...
@@ -72,22 +55,17 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
private
String
m_fileName
;
private
long
m_modifyTime
;
private
Set
<
String
>
m_pigeonCalls
=
new
HashSet
<
String
>(
Arrays
.
asList
(
"Call"
,
"PigeonCall"
,
"PigeonClient"
));
private
Set
<
String
>
m_pigeonServices
=
new
HashSet
<
String
>(
Arrays
.
asList
(
"Service"
,
"PigeonService"
,
"PigeonServer"
));
private
Logger
m_logger
;
private
String
buildDes
(
String
...
args
)
{
StringBuilder
sb
=
new
StringBuilder
();
int
len
=
args
.
length
;
for
(
int
i
=
0
;
i
<
len
-
1
;
i
++)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
sb
.
append
(
args
[
i
]).
append
(
GraphConstrant
.
DELIMITER
);
}
sb
.
append
(
args
[
len
-
1
]).
append
(
GraphConstrant
.
ENTER
);
return
sb
.
toString
();
}
...
...
@@ -103,25 +81,25 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
if
(
config
!=
null
)
{
double
avg
=
dependency
.
getAvg
();
sb
.
append
(
buildDes
(
type
,
TOTAL_STR
,
String
.
valueOf
(
dependency
.
getTotalCount
())));
sb
.
append
(
buildDes
(
type
,
TOTAL_STR
,
String
.
valueOf
(
dependency
.
getTotalCount
())))
.
append
(
GraphConstrant
.
ENTER
)
;
if
(
avg
>=
config
.
getErrorResponseTime
())
{
errorCode
=
ERROR
;
sb
.
append
(
buildErrorDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
sb
.
append
(
buildErrorDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
))
.
append
(
GraphConstrant
.
ENTER
)
;
}
else
if
(
avg
>=
config
.
getWarningResponseTime
())
{
errorCode
=
WARN
;
sb
.
append
(
buildErrorDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
sb
.
append
(
buildErrorDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
))
.
append
(
GraphConstrant
.
ENTER
)
;
}
else
{
sb
.
append
(
buildDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
sb
.
append
(
buildDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
))
.
append
(
GraphConstrant
.
ENTER
)
;
}
if
(
error
>=
config
.
getErrorThreshold
())
{
errorCode
=
ERROR
;
sb
.
append
(
buildErrorDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)));
sb
.
append
(
buildErrorDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)))
.
append
(
GraphConstrant
.
ENTER
)
;
}
else
if
(
error
>=
config
.
getWarningThreshold
())
{
errorCode
=
WARN
;
sb
.
append
(
buildErrorDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)));
sb
.
append
(
buildErrorDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)))
.
append
(
GraphConstrant
.
ENTER
)
;
}
else
if
(
error
>
0
)
{
sb
.
append
(
buildDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)));
sb
.
append
(
buildDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)))
.
append
(
GraphConstrant
.
ENTER
)
;
}
}
Pair
<
Integer
,
String
>
result
=
new
Pair
<
Integer
,
String
>();
...
...
@@ -133,12 +111,9 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
private
String
buildErrorDes
(
String
...
args
)
{
StringBuilder
sb
=
new
StringBuilder
(
"<span style='color:red'>"
);
int
len
=
args
.
length
;
String
content
=
buildDes
(
args
)
;
for
(
int
i
=
0
;
i
<
len
-
1
;
i
++)
{
sb
.
append
(
args
[
i
]).
append
(
GraphConstrant
.
DELIMITER
);
}
sb
.
append
(
args
[
len
-
1
]).
append
(
"</span>"
).
append
(
GraphConstrant
.
ENTER
);
sb
.
append
(
content
).
append
(
"</span>"
);
return
sb
.
toString
();
}
...
...
@@ -152,28 +127,34 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
if
(
config
!=
null
)
{
double
avg
=
index
.
getAvg
();
long
error
=
index
.
getErrorCount
();
sb
.
append
(
buildDes
(
type
,
TOTAL_STR
,
String
.
valueOf
(
index
.
getTotalCount
())));
sb
.
append
(
type
).
append
(
GraphConstrant
.
DELIMITER
);
if
(
index
.
getTotalCount
()
>
0
)
{
sb
.
append
(
buildDes
(
TOTAL_STR
,
String
.
valueOf
(
index
.
getTotalCount
())));
}
if
(
avg
>=
config
.
getErrorResponseTime
())
{
errorCode
=
ERROR
;
sb
.
append
(
buildErrorDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
sb
.
append
(
buildErrorDes
(
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
}
else
if
(
avg
>=
config
.
getWarningResponseTime
())
{
errorCode
=
WARN
;
sb
.
append
(
buildErrorDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
sb
.
append
(
buildErrorDes
(
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
}
else
{
if
(!
type
.
equals
(
"Exception"
))
{
sb
.
append
(
buildDes
(
type
,
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
if
(!
type
.
equals
IgnoreCase
(
"Exception"
))
{
sb
.
append
(
buildDes
(
AVG_STR
,
m_df
.
format
(
avg
),
MILLISECOND
));
}
}
if
(
error
>=
config
.
getErrorThreshold
())
{
errorCode
=
ERROR
;
sb
.
append
(
buildErrorDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)));
sb
.
append
(
buildErrorDes
(
ERROR_STR
,
String
.
valueOf
(
error
)));
}
else
if
(
error
>=
config
.
getWarningThreshold
())
{
errorCode
=
WARN
;
sb
.
append
(
buildErrorDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)));
sb
.
append
(
buildErrorDes
(
ERROR_STR
,
String
.
valueOf
(
error
)));
}
else
if
(
error
>
0
)
{
sb
.
append
(
buildDes
(
type
,
ERROR_STR
,
String
.
valueOf
(
error
)));
sb
.
append
(
buildDes
(
ERROR_STR
,
String
.
valueOf
(
error
)));
}
sb
.
append
(
GraphConstrant
.
ENTER
);
}
Pair
<
Integer
,
String
>
result
=
new
Pair
<
Integer
,
String
>();
...
...
@@ -204,16 +185,6 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
return
storeConfig
();
}
public
boolean
deleteProductLine
(
String
line
)
{
m_config
.
removeProductLine
(
line
);
return
storeConfig
();
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
private
String
formatType
(
String
type
)
{
String
realType
=
type
;
if
(
type
.
startsWith
(
"Cache."
))
{
...
...
@@ -246,7 +217,6 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
m_config
=
DefaultSaxParser
.
parse
(
content
);
m_configId
=
config
.
getId
();
m_modifyTime
=
config
.
getModifyDate
().
getTime
();
}
catch
(
DalNotFoundException
e
)
{
try
{
String
content
=
Files
.
forIO
().
readFrom
(
...
...
@@ -259,7 +229,6 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
m_config
=
DefaultSaxParser
.
parse
(
content
);
m_configId
=
config
.
getId
();
m_modifyTime
=
config
.
getModifyDate
().
getTime
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
ex
);
}
...
...
@@ -270,8 +239,6 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
m_config
=
new
TopologyGraphConfig
();
}
}
Threads
.
forGroup
(
"Cat"
).
start
(
new
Reload
());
}
public
boolean
insertDomainConfig
(
String
type
,
DomainConfig
config
)
{
...
...
@@ -295,16 +262,6 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
return
storeConfig
();
}
public
boolean
insertProductLine
(
ProductLine
line
,
String
[]
domains
)
{
m_config
.
removeProductLine
(
line
.
getId
());
m_config
.
addProductLine
(
line
);
for
(
String
domain
:
domains
)
{
line
.
addDomain
(
new
Domain
(
domain
));
}
return
storeConfig
();
}
public
EdgeConfig
queryEdgeConfig
(
String
type
,
String
from
,
String
to
)
{
EdgeConfig
edgeConfig
=
m_config
.
findEdgeConfig
(
type
+
":"
+
from
+
":"
+
to
);
...
...
@@ -343,38 +300,6 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
return
null
;
}
public
String
queryProductLineByDomain
(
String
domain
)
{
return
m_domainToProductLine
.
get
(
domain
);
}
public
List
<
String
>
queryProductLineDomains
(
String
productLine
)
{
List
<
String
>
domains
=
new
ArrayList
<
String
>();
ProductLine
line
=
m_config
.
findProductLine
(
productLine
);
if
(
line
!=
null
)
{
for
(
Domain
domain
:
line
.
getDomains
().
values
())
{
domains
.
add
(
domain
.
getId
());
}
}
return
domains
;
}
public
Map
<
String
,
ProductLine
>
queryProductLines
()
{
Map
<
String
,
ProductLine
>
productLines
=
new
TreeMap
<
String
,
ProductLine
>();
for
(
ProductLine
line
:
m_config
.
getProductLines
().
values
())
{
productLines
.
put
(
line
.
getId
(),
line
);
}
return
MapUtils
.
sortMap
(
productLines
,
new
Comparator
<
Map
.
Entry
<
String
,
ProductLine
>>()
{
@Override
public
int
compare
(
Entry
<
String
,
ProductLine
>
o1
,
Entry
<
String
,
ProductLine
>
o2
)
{
return
(
int
)
(
o2
.
getValue
().
getOrder
()
*
100
-
o1
.
getValue
().
getOrder
()
*
100
);
}
});
}
public
void
setFileName
(
String
file
)
{
m_fileName
=
file
;
}
...
...
@@ -401,58 +326,7 @@ public class TopologyGraphConfigManager implements Initializable, LogEnabled {
}
}
Map
<
String
,
ProductLine
>
productLines
=
m_config
.
getProductLines
();
Map
<
String
,
String
>
domainToProductLine
=
new
HashMap
<
String
,
String
>();
for
(
ProductLine
product
:
productLines
.
values
())
{
for
(
Domain
domain
:
product
.
getDomains
().
values
())
{
domainToProductLine
.
put
(
domain
.
getId
(),
product
.
getId
());
}
}
m_domainToProductLine
=
domainToProductLine
;
return
true
;
}
public
class
Reload
implements
Task
{
@Override
public
String
getName
()
{
return
null
;
}
@Override
public
void
run
()
{
boolean
active
=
true
;
while
(
active
)
{
try
{
Config
config
=
m_configDao
.
findByName
(
CONFIG_NAME
,
ConfigEntity
.
READSET_FULL
);
long
modifyTime
=
config
.
getModifyDate
().
getTime
();
if
(
modifyTime
>
m_modifyTime
)
{
String
content
=
config
.
getContent
();
synchronized
(
m_config
)
{
m_config
=
DefaultSaxParser
.
parse
(
content
);
}
m_modifyTime
=
modifyTime
;
m_logger
.
info
(
"Topology config refresh done!"
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
try
{
Thread
.
sleep
(
TimeUtil
.
ONE_MINUTE
);
}
catch
(
InterruptedException
e
)
{
active
=
false
;
}
}
}
@Override
public
void
shutdown
()
{
}
}
}
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java
浏览文件 @
33480e27
...
...
@@ -23,13 +23,13 @@ import com.dianping.cat.Cat;
import
com.dianping.cat.configuration.ServerConfigManager
;
import
com.dianping.cat.consumer.dependency.model.entity.DependencyReport
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.company.entity.Domain
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.dal.report.TopologyGraphDao
;
import
com.dianping.cat.home.dal.report.TopologyGraphEntity
;
import
com.dianping.cat.home.dependency.config.entity.Domain
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyEdge
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyNode
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyGraph
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyNode
;
import
com.dianping.cat.home.dependency.graph.transform.DefaultNativeParser
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.Transaction
;
...
...
@@ -40,6 +40,7 @@ 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.view.DomainNavManager
;
import
com.dianping.cat.system.config.ProductLineConfigManager
;
public
class
TopologyGraphManager
implements
Initializable
,
LogEnabled
{
...
...
@@ -50,7 +51,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
private
TopologyGraphBuilder
m_graphBuilder
;
@Inject
private
TopologyGraphConfigManager
m_c
onfigManger
;
private
ProductLineConfigManager
m_productLineC
onfigManger
;
@Inject
private
ServerConfigManager
m_manager
;
...
...
@@ -70,7 +71,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
Set
<
String
>
m_allDomains
=
new
HashSet
<
String
>();
if
(
topologyGraph
!=
null
)
{
Map
<
String
,
ProductLine
>
groups
=
m_
c
onfigManger
.
queryProductLines
();
Map
<
String
,
ProductLine
>
groups
=
m_
productLineC
onfigManger
.
queryProductLines
();
for
(
Entry
<
String
,
ProductLine
>
entry
:
groups
.
entrySet
())
{
String
groupName
=
entry
.
getKey
();
...
...
@@ -102,7 +103,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
public
ProductLineDashboard
buildProductLineGraph
(
String
productLine
,
long
time
)
{
TopologyGraph
topologyGraph
=
queryGraph
(
time
);
ProductLineDashboard
dashboard
=
new
ProductLineDashboard
(
productLine
);
List
<
String
>
domains
=
m_
c
onfigManger
.
queryProductLineDomains
(
productLine
);
List
<
String
>
domains
=
m_
productLineC
onfigManger
.
queryProductLineDomains
(
productLine
);
if
(
topologyGraph
!=
null
)
{
for
(
String
domain
:
domains
)
{
...
...
@@ -174,7 +175,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
@Override
public
void
initialize
()
throws
InitializationException
{
// if(!m_manager.isLocalMode()&&m_manager.isJobMachine())
{
// if (!m_manager.isLocalMode() && m_manager.isJobMachine())
{
Threads
.
forGroup
(
"Cat"
).
start
(
new
Reload
());
// }
}
...
...
cat-home/src/main/java/com/dianping/cat/report/view/DomainNavManager.java
浏览文件 @
33480e27
...
...
@@ -33,9 +33,6 @@ public class DomainNavManager implements Initializable {
// key is domain
private
static
Map
<
String
,
Project
>
m_projects
=
new
ConcurrentHashMap
<
String
,
Project
>();
// key is product line
private
static
Map
<
String
,
Map
<
String
,
Project
>>
m_productLines
=
new
ConcurrentHashMap
<
String
,
Map
<
String
,
Project
>>();
public
static
final
String
DEFAULT
=
"Default"
;
public
static
Collection
<
String
>
getDomains
()
{
...
...
cat-home/src/main/java/com/dianping/cat/system/config/ProductLineConfigManager.java
0 → 100644
浏览文件 @
33480e27
package
com.dianping.cat.system.config
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.TreeMap
;
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.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.webres.helper.Files
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.consumer.core.config.Config
;
import
com.dianping.cat.consumer.core.config.ConfigDao
;
import
com.dianping.cat.consumer.core.config.ConfigEntity
;
import
com.dianping.cat.helper.MapUtils
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.company.entity.Company
;
import
com.dianping.cat.home.company.entity.Domain
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.company.transform.DefaultSaxParser
;
public
class
ProductLineConfigManager
implements
Initializable
,
LogEnabled
{
@Inject
private
ConfigDao
m_configDao
;
private
int
m_configId
;
private
Company
m_company
;
private
Map
<
String
,
String
>
m_domainToProductLine
=
new
HashMap
<
String
,
String
>();
private
long
m_modifyTime
;
private
Logger
m_logger
;
private
static
final
String
CONFIG_NAME
=
"productLineConfig"
;
public
boolean
deleteProductLine
(
String
line
)
{
m_company
.
removeProductLine
(
line
);
return
storeConfig
();
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
public
Company
getCompany
()
{
return
m_company
;
}
@Override
public
void
initialize
()
throws
InitializationException
{
try
{
Config
config
=
m_configDao
.
findByName
(
CONFIG_NAME
,
ConfigEntity
.
READSET_FULL
);
String
content
=
config
.
getContent
();
m_company
=
DefaultSaxParser
.
parse
(
content
);
m_configId
=
config
.
getId
();
m_modifyTime
=
config
.
getModifyDate
().
getTime
();
}
catch
(
DalNotFoundException
e
)
{
try
{
String
content
=
Files
.
forIO
().
readFrom
(
this
.
getClass
().
getResourceAsStream
(
"/config/default-product-line-config.xml"
),
"utf-8"
);
Config
config
=
m_configDao
.
createLocal
();
config
.
setName
(
CONFIG_NAME
);
config
.
setContent
(
content
);
m_configDao
.
insert
(
config
);
m_company
=
DefaultSaxParser
.
parse
(
content
);
m_configId
=
config
.
getId
();
m_modifyTime
=
config
.
getModifyDate
().
getTime
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
ex
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
if
(
m_company
==
null
)
{
m_company
=
new
Company
();
}
}
public
boolean
insertProductLine
(
ProductLine
line
,
String
[]
domains
)
{
m_company
.
removeProductLine
(
line
.
getId
());
m_company
.
addProductLine
(
line
);
for
(
String
domain
:
domains
)
{
line
.
addDomain
(
new
Domain
(
domain
));
}
return
storeConfig
();
}
public
String
queryProductLineByDomain
(
String
domain
)
{
String
productLine
=
m_domainToProductLine
.
get
(
domain
);
return
productLine
==
null
?
"Default"
:
productLine
;
}
public
List
<
String
>
queryProductLineDomains
(
String
productLine
)
{
List
<
String
>
domains
=
new
ArrayList
<
String
>();
ProductLine
line
=
m_company
.
findProductLine
(
productLine
);
if
(
line
!=
null
)
{
for
(
Domain
domain
:
line
.
getDomains
().
values
())
{
domains
.
add
(
domain
.
getId
());
}
}
return
domains
;
}
public
Map
<
String
,
ProductLine
>
queryProductLines
()
{
Map
<
String
,
ProductLine
>
productLines
=
new
TreeMap
<
String
,
ProductLine
>();
for
(
ProductLine
line
:
m_company
.
getProductLines
().
values
())
{
productLines
.
put
(
line
.
getId
(),
line
);
}
return
MapUtils
.
sortMap
(
productLines
,
new
Comparator
<
Map
.
Entry
<
String
,
ProductLine
>>()
{
@Override
public
int
compare
(
Entry
<
String
,
ProductLine
>
o1
,
Entry
<
String
,
ProductLine
>
o2
)
{
return
(
int
)
(
o2
.
getValue
().
getOrder
()
*
100
-
o1
.
getValue
().
getOrder
()
*
100
);
}
});
}
private
boolean
storeConfig
()
{
try
{
Config
config
=
m_configDao
.
createLocal
();
config
.
setId
(
m_configId
);
config
.
setKeyId
(
m_configId
);
config
.
setName
(
CONFIG_NAME
);
config
.
setContent
(
m_company
.
toString
());
m_configDao
.
updateByPK
(
config
,
ConfigEntity
.
UPDATESET_FULL
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
return
false
;
}
Map
<
String
,
ProductLine
>
productLines
=
m_company
.
getProductLines
();
Map
<
String
,
String
>
domainToProductLine
=
new
HashMap
<
String
,
String
>();
for
(
ProductLine
product
:
productLines
.
values
())
{
for
(
Domain
domain
:
product
.
getDomains
().
values
())
{
domainToProductLine
.
put
(
domain
.
getId
(),
product
.
getId
());
}
}
m_domainToProductLine
=
domainToProductLine
;
return
true
;
}
public
class
Reload
implements
Task
{
@Override
public
String
getName
()
{
return
null
;
}
@Override
public
void
run
()
{
boolean
active
=
true
;
while
(
active
)
{
try
{
Config
config
=
m_configDao
.
findByName
(
CONFIG_NAME
,
ConfigEntity
.
READSET_FULL
);
long
modifyTime
=
config
.
getModifyDate
().
getTime
();
if
(
modifyTime
>
m_modifyTime
)
{
String
content
=
config
.
getContent
();
synchronized
(
m_company
)
{
m_company
=
DefaultSaxParser
.
parse
(
content
);
}
m_modifyTime
=
modifyTime
;
m_logger
.
info
(
"product line config refresh done!"
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
try
{
Thread
.
sleep
(
TimeUtil
.
ONE_MINUTE
);
}
catch
(
InterruptedException
e
)
{
active
=
false
;
}
}
}
@Override
public
void
shutdown
()
{
}
}
}
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
浏览文件 @
33480e27
...
...
@@ -22,15 +22,16 @@ import com.dianping.cat.consumer.core.dal.Project;
import
com.dianping.cat.consumer.core.dal.ProjectDao
;
import
com.dianping.cat.consumer.core.dal.ProjectEntity
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.dal.report.AggregationRule
;
import
com.dianping.cat.home.dal.report.AggregationRuleDao
;
import
com.dianping.cat.home.dal.report.AggregationRuleEntity
;
import
com.dianping.cat.home.dependency.config.entity.DomainConfig
;
import
com.dianping.cat.home.dependency.config.entity.EdgeConfig
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
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.ProductLineConfigManager
;
public
class
Handler
implements
PageHandler
<
Context
>
{
@Inject
...
...
@@ -45,6 +46,9 @@ public class Handler implements PageHandler<Context> {
@Inject
private
TopologyGraphConfigManager
m_topologyConfigManager
;
@Inject
private
ProductLineConfigManager
m_productLineConfigManger
;
@Override
@PayloadMeta
(
Payload
.
class
)
@InboundActionMeta
(
name
=
"config"
)
...
...
@@ -125,19 +129,19 @@ public class Handler implements PageHandler<Context> {
break
;
case
TOPOLOGY_GRAPH_PRODUCT_LINE:
model
.
setProductLines
(
m_
topologyConfigMana
ger
.
queryProductLines
());
model
.
setProductLines
(
m_
productLineConfigMan
ger
.
queryProductLines
());
break
;
case
TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE:
graphPruductLineAddOrUpdate
(
payload
,
model
);
model
.
setProjects
(
queryAllProjects
());
break
;
case
TOPOLOGY_GRAPH_PRODUCT_LINE_DELETE:
model
.
setOpState
(
m_
topologyConfigMana
ger
.
deleteProductLine
(
payload
.
getProductLineName
()));
model
.
setProductLines
(
m_
topologyConfigMana
ger
.
queryProductLines
());
model
.
setOpState
(
m_
productLineConfigMan
ger
.
deleteProductLine
(
payload
.
getProductLineName
()));
model
.
setProductLines
(
m_
productLineConfigMan
ger
.
queryProductLines
());
break
;
case
TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE_SUBMIT:
model
.
setOpState
(
graphProductLineConfigAddOrUpdateSubmit
(
payload
,
model
));
model
.
setProductLines
(
m_
topologyConfigMana
ger
.
queryProductLines
());
model
.
setProductLines
(
m_
productLineConfigMan
ger
.
queryProductLines
());
break
;
}
m_jspViewer
.
view
(
ctx
,
model
);
...
...
@@ -147,14 +151,14 @@ public class Handler implements PageHandler<Context> {
ProductLine
line
=
payload
.
getProductLine
();
String
[]
domains
=
payload
.
getDomains
();
return
m_
topologyConfigMana
ger
.
insertProductLine
(
line
,
domains
);
return
m_
productLineConfigMan
ger
.
insertProductLine
(
line
,
domains
);
}
private
void
graphPruductLineAddOrUpdate
(
Payload
payload
,
Model
model
)
{
String
name
=
payload
.
getProductLineName
();
if
(!
StringUtil
.
isEmpty
(
name
))
{
model
.
setProductLine
(
m_
topologyConfigManager
.
getConfig
().
findProductLine
(
name
));
model
.
setProductLine
(
m_
productLineConfigManger
.
getCompany
().
findProductLine
(
name
));
}
}
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java
浏览文件 @
33480e27
...
...
@@ -17,9 +17,9 @@ public enum JspFile {
TOPOLOGY_GRAPH_EDGE_CONFIG_LIST
(
"/jsp/system/topology/topologyGraphEdgeConfigs.jsp"
),
TOPOLOGY_GRAPH_PRODUCT_LINE
(
"/jsp/system/
topology
/topologyProductLines.jsp"
),
TOPOLOGY_GRAPH_PRODUCT_LINE
(
"/jsp/system/
productLine
/topologyProductLines.jsp"
),
TOPOLOGY_GRAPH_PRODUCT_ADD_OR_UPDATE
(
"/jsp/system/
topology
/topologyProductLineAdd.jsp"
),
TOPOLOGY_GRAPH_PRODUCT_ADD_OR_UPDATE
(
"/jsp/system/
productLine
/topologyProductLineAdd.jsp"
),
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java
浏览文件 @
33480e27
...
...
@@ -10,11 +10,11 @@ import org.unidal.web.mvc.ViewModel;
import
com.dianping.cat.consumer.core.dal.Project
;
import
com.dianping.cat.helper.CatString
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.dal.report.AggregationRule
;
import
com.dianping.cat.home.dependency.config.entity.DomainConfig
;
import
com.dianping.cat.home.dependency.config.entity.EdgeConfig
;
import
com.dianping.cat.home.dependency.config.entity.NodeConfig
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
import
com.dianping.cat.home.dependency.config.entity.TopologyGraphConfig
;
import
com.dianping.cat.system.SystemPage
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Payload.java
浏览文件 @
33480e27
...
...
@@ -6,10 +6,10 @@ import org.unidal.web.mvc.payload.annotation.FieldMeta;
import
org.unidal.web.mvc.payload.annotation.ObjectMeta
;
import
com.dianping.cat.consumer.core.dal.Project
;
import
com.dianping.cat.home.company.entity.ProductLine
;
import
com.dianping.cat.home.dal.report.AggregationRule
;
import
com.dianping.cat.home.dependency.config.entity.DomainConfig
;
import
com.dianping.cat.home.dependency.config.entity.EdgeConfig
;
import
com.dianping.cat.home.dependency.config.entity.ProductLine
;
import
com.dianping.cat.system.SystemPage
;
public
class
Payload
implements
ActionPayload
<
SystemPage
,
Action
>
{
...
...
cat-home/src/main/resources/META-INF/dal/model/company-codegen.xml
浏览文件 @
33480e27
...
...
@@ -6,6 +6,8 @@
</entity>
<entity
name=
"product-line"
>
<attribute
name=
"id"
value-type=
"String"
/>
<attribute
name=
"owner"
value-type=
"String"
/>
<attribute
name=
"email"
value-type=
"String"
/>
<attribute
name=
"title"
value-type=
"String"
/>
<attribute
name=
"order"
value-type=
"int"
/>
<attribute
name=
"dashboard"
value-type=
"boolean"
/>
...
...
cat-home/src/main/resources/META-INF/dal/model/company-model.xml
浏览文件 @
33480e27
<?xml version="1.0" encoding="UTF-8"?>
<model
model-package=
"com.dianping.cat.home.company"
enable-merger=
"true"
enable-sax-parser=
"true"
enable-base-visitor=
"true"
>
<entity
name=
"company"
root=
"true"
>
<attribute
name=
"name"
value-type=
"String"
/>
<entity-ref
name=
"product-line"
type=
"map"
names=
"product-lines"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"product-line"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"title"
value-type=
"String"
/>
<attribute
name=
"owner"
value-type=
"String"
/>
<attribute
name=
"email"
value-type=
"String"
/>
<attribute
name=
"title"
value-type=
"String"
/>
<attribute
name=
"order"
value-type=
"double"
primitive=
"true"
/>
<attribute
name=
"
important"
value-type=
"boolean"
primitive=
"true"
/>
<attribute
name=
"
dashboard"
value-type=
"boolean"
primitive=
"true"
/>
<entity-ref
name=
"domain"
type=
"map"
names=
"domains"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"domain"
>
...
...
@@ -15,3 +19,4 @@
</entity>
</model>
cat-home/src/main/resources/META-INF/dal/model/topology-graph-config-model.xml
浏览文件 @
33480e27
...
...
@@ -4,7 +4,6 @@
<entity
name=
"topology-graph-config"
root=
"true"
>
<entity-ref
name=
"node-config"
type=
"map"
names=
"node-configs"
method-find-or-create=
"true"
/>
<entity-ref
name=
"edge-config"
type=
"map"
names=
"edge-configs"
method-find-or-create=
"true"
/>
<entity-ref
name=
"product-line"
type=
"map"
names=
"product-lines"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"node-config"
>
<attribute
name=
"type"
value-type=
"String"
key=
"true"
/>
...
...
@@ -31,13 +30,6 @@
<attribute
name=
"warning-response-time"
value-type=
"double"
primitive=
"true"
/>
<attribute
name=
"error-response-time"
value-type=
"double"
primitive=
"true"
/>
</entity>
<entity
name=
"product-line"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"title"
value-type=
"String"
/>
<attribute
name=
"order"
value-type=
"double"
primitive=
"true"
/>
<attribute
name=
"important"
value-type=
"boolean"
primitive=
"true"
/>
<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"
/>
</entity>
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
33480e27
...
...
@@ -648,6 +648,15 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.config.ProductLineConfigManager
</role>
<implementation>
com.dianping.cat.system.config.ProductLineConfigManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.core.config.ConfigDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
</role>
<implementation>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
</implementation>
...
...
@@ -1273,7 +1282,7 @@
<role>
com.dianping.cat.configuration.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
report.page.dependency.graph.TopologyGraph
ConfigManager
</role>
<role>
com.dianping.cat.
system.config.ProductLine
ConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.home.dal.report.TopologyGraphDao
</role>
...
...
@@ -2627,7 +2636,7 @@
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
report.page.dependency.graph.TopologyGraph
ConfigManager
</role>
<role>
com.dianping.cat.
system.config.ProductLine
ConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.service.ReportService
</role>
...
...
@@ -2684,7 +2693,7 @@
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
report.page.dependency.graph.TopologyGraph
ConfigManager
</role>
<role>
com.dianping.cat.
system.config.ProductLine
ConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.configuration.ServerConfigManager
</role>
...
...
@@ -2699,8 +2708,8 @@
<implementation>
com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder
</implementation>
</component>
<component>
<role>
com.dianping.cat.
report.page.dependency.graph.TopologyGraph
ConfigManager
</role>
<implementation>
com.dianping.cat.
report.page.dependency.graph.TopologyGraph
ConfigManager
</implementation>
<role>
com.dianping.cat.
system.config.ProductLine
ConfigManager
</role>
<implementation>
com.dianping.cat.
system.config.ProductLine
ConfigManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.core.config.ConfigDao
</role>
...
...
@@ -2990,6 +2999,9 @@
<requirement>
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.ProductLineConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -3019,6 +3031,15 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
</role>
<implementation>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.core.config.ConfigDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.alarm.AlarmContentBuilder
</role>
<implementation>
com.dianping.cat.system.alarm.AlarmContentBuilder
</implementation>
...
...
cat-home/src/main/resources/config/default-product-line-config.xml
0 → 100644
浏览文件 @
33480e27
<company>
<product-line
id=
"TuanGou"
title=
"团购"
order=
"1.0"
dashbord=
"true"
>
<domain
id=
"TuanGou"
/>
<domain
id=
"TuanGouEvent"
/>
<domain
id=
"TuanGouOperation"
/>
<domain
id=
"TuanGouRank"
/>
<domain
id=
"TuanGouWebBA"
/>
<domain
id=
"tuangou-paygate"
/>
<domain
id=
"BCTuangouServer"
/>
<domain
id=
"BCTuangouWeb"
/>
<domain
id=
"TuanGouWeb"
/>
<domain
id=
"TuanGouApiMobile"
/>
<domain
id=
"TuanGouMT"
/>
<domain
id=
"TuanGouWap"
/>
<domain
id=
"TuanGouRemote"
/>
<domain
id=
"TuanGouApi"
/>
<domain
id=
"TuanGouTracking"
/>
</product-line>
</company>
\ No newline at end of file
cat-home/src/main/resources/config/default-topology-config.xml
浏览文件 @
33480e27
...
...
@@ -27,23 +27,4 @@
<edge-config
key=
"PigeonCall:ShopSearchWeb:ShopServer"
type=
"PigeonCall"
from=
"ShopSearchWeb"
to=
"ShopServer"
warning-threshold=
"6"
error-threshold=
"11"
warning-response-time=
"50.01"
error-response-time=
"100.01"
/>
<edge-config
key=
"PigeonCall:UserWeb:ShopServer"
type=
"PigeonCall"
from=
"UserWeb"
to=
"ShopServer"
warning-threshold=
"1"
error-threshold=
"11"
warning-response-time=
"10.0"
error-response-time=
"104.0"
/>
<edge-config
key=
"PigeonCall:Cat:MailServer"
type=
"PigeonCall"
from=
"Cat"
to=
"MailServer"
warning-threshold=
"10"
error-threshold=
"50"
warning-response-time=
"50.0"
error-response-time=
"100.0"
/>
<product-line
id=
"123"
title=
"123"
order=
"123.0"
important=
"true"
>
</product-line>
<product-line
id=
"12344"
title=
"5455"
order=
"5555.0"
important=
"false"
>
</product-line>
<product-line
id=
"12"
title=
"12"
order=
"12.0"
important=
"true"
>
</product-line>
<product-line
id=
"Info"
title=
"主站"
order=
"1.0"
important=
"true"
>
<domain
id=
"TuanGou"
/>
<domain
id=
"TuanGouRank"
/>
<domain
id=
"TuanGouWebBA"
/>
<domain
id=
"MobileApi"
/>
</product-line>
<product-line
id=
"TuanGou"
title=
"团购"
order=
"1.0"
important=
"true"
>
<domain
id=
"Cat0"
/>
<domain
id=
"Cat1"
/>
<domain
id=
"AdwordsWeb"
/>
</product-line>
<product-line
id=
"1234"
title=
"1234"
order=
"6666.0"
important=
"false"
>
</product-line>
</topology-graph-config>
cat-home/src/main/webapp/jsp/system/configTree.jsp
浏览文件 @
33480e27
...
...
@@ -2,13 +2,13 @@
<div
class=
"well sidebar-nav"
>
<ul
class=
"nav nav-list"
>
<li
class=
'nav-header'
><h4>
全局配置
</h4></li>
<li
id=
"projectList"
><a
href=
"?op=projects"
><strong>
项目基本信息
</strong></a></li>
<li
id=
"projectList"
><a
href=
"?op=projects"
><strong>
项目信息
</strong></a></li>
<li
id=
"topologyProductLines"
><a
href=
"?op=topologyProductLines"
><strong>
产品线配置
</strong></a></li>
<li
class=
'nav-header'
><h4>
前端合并配置
</h4></li>
<li
id=
"aggregationList"
><a
href=
"?op=aggregations"
><strong>
前端合并规则
</strong></a></li>
<li
class=
'nav-header'
><h4>
拓扑图配置
</h4></li>
<li
id=
"topylogyNodeConfigList"
><a
href=
"?op=topologyGraphNodeConfigList"
><strong>
拓扑节点阀值
</strong></a></li>
<li
id=
"topylogyEdgeConfigList"
><a
href=
"?op=topologyGraphEdgeConfigList"
><strong>
拓扑依赖阀值
</strong></a></li>
<li
id=
"topologyProductLines"
><a
href=
"?op=topologyProductLines"
><strong>
产品线配置
</strong></a></li>
<li
class=
'nav-header'
><h4>
业务监控配置
</h4></li>
<li
id=
"bussinessConfigList"
><a
href=
"?"
><strong>
业务监控规则
</strong></a></li>
</ul>
...
...
cat-home/src/main/webapp/jsp/system/
topology
/topologyProductLineAdd.jsp
→
cat-home/src/main/webapp/jsp/system/
productLine
/topologyProductLineAdd.jsp
浏览文件 @
33480e27
...
...
@@ -36,16 +36,26 @@
<td><input
name=
"productLine.order"
value=
"${model.productLine.order}"
required
/></td>
</tr>
<tr>
<td
style=
"text-align: right"
class=
"text-success"
>
产品线负责人
</td>
<td><input
name=
"productLine.owner"
value=
"${model.productLine.owner}"
required
/></td>
</tr>
<tr>
<td
style=
"text-align: right"
class=
"text-success"
>
产品线邮件
</td>
<td><input
name=
"productLine.email"
value=
"${model.productLine.email}"
required
/></td>
</tr>
<tr>
<td
style=
"text-align: right"
class=
"text-success"
>
是否显示到监控大盘
</td>
<td><c:choose>
<c:when
test=
"
${
model
.
productLine
.
important
}
"
>
<input
type=
"radio"
name=
"productLine.
important
"
value=
"true"
checked
/>
是
<input
type=
"radio"
name=
"productLine.
important
"
value=
"false"
/>
否
<c:when
test=
"
${
model
.
productLine
.
dashboard
}
"
>
<input
type=
"radio"
name=
"productLine.
dashboard
"
value=
"true"
checked
/>
是
<input
type=
"radio"
name=
"productLine.
dashboard
"
value=
"false"
/>
否
</c:when>
<c:otherwise>
<input
type=
"radio"
name=
"productLine.
important
"
value=
"true"
/>
是
<input
type=
"radio"
name=
"productLine.
important
"
value=
"false"
checked
/>
否
<input
type=
"radio"
name=
"productLine.
dashboard
"
value=
"true"
/>
是
<input
type=
"radio"
name=
"productLine.
dashboard
"
value=
"false"
checked
/>
否
</c:otherwise>
</c:choose></td>
</tr>
...
...
cat-home/src/main/webapp/jsp/system/
topology
/topologyProductLines.jsp
→
cat-home/src/main/webapp/jsp/system/
productLine
/topologyProductLines.jsp
浏览文件 @
33480e27
...
...
@@ -51,13 +51,13 @@
<h4
id=
"state"
class=
"text-center text-error"
>
</h4>
<table
class=
"table table-striped table-bordered"
>
<tr
class=
"text-success"
>
<th>
产品线
</th><th>
显示
标题
</th><th>
顺序
</th><th>
监控大盘显示
</th><th>
项目列表
</th>
<th>
产品线
</th><th>
标题
</th><th>
顺序
</th><th>
监控大盘显示
</th><th>
项目列表
</th>
<th>
操作
<a
href=
"?op=topologyProductLineAdd"
class=
'update btn btn-primary btn-small'
>
新增
</a></th>
</tr>
<c:forEach
var=
"entry"
items=
"
${
model
.
productLines
}
"
varStatus=
"status"
>
<c:set
var=
'item'
value=
'
${
entry
.
value
}
'
/>
<tr><td>
${item.id}
</td><td>
${item.title}
</td>
<td>
${item.order}
</td><td>
${item.
important
}
</td>
<td>
${item.order}
</td><td>
${item.
dashboard
}
</td>
<td>
<c:forEach
var=
"domain"
items=
"
${
item
.
domains
}
"
>
${domain.key},
...
...
cat-home/src/test/resources/com/dianping/cat/system/config/company.xml
浏览文件 @
33480e27
<company
name=
"dianping"
>
<product-line
id=
"TuanGou"
owner=
"youyong"
email=
"youyong"
title=
"TuanGou"
order=
"1"
dashboard=
"true"
>
<domain
id=
"MobileApi"
owner=
"youyong"
email=
"youyong"
member=
"youyong,youyong"
></domain>
<domain
id=
"MobileApi"
></domain>
<domain
id=
"MobileApi"
></domain>
</product-line>
<product-line></product-line>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录