提交 6d65101b 编写于 作者: Y yong.you

modify the cat dependency topology config

上级 7756ada0
......@@ -32,9 +32,8 @@ import com.dianping.cat.report.graph.DefaultValueTranslater;
import com.dianping.cat.report.graph.GraphBuilder;
import com.dianping.cat.report.graph.ValueTranslater;
import com.dianping.cat.report.page.PayloadNormalizer;
import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphManager;
import com.dianping.cat.report.page.externalError.EventCollectManager;
......@@ -208,19 +207,17 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(EventCollectManager.class).req(EventDao.class, ServerConfigManager.class));
all.add(C(TopologyGraphConfigManger.class));
all.add(C(TopologyGraphConfigManager.class));
all.add(C(TopologyGraphItemBuilder.class).req(TopologyGraphConfigManger.class));
all.add(C(TopologyGraphItemBuilder.class).req(TopologyGraphConfigManager.class));
all.add(C(TopologyGraphBuilder.class).req(TopologyGraphItemBuilder.class));
// model service
all.addAll(new ServiceComponentConfigurator().defineComponents());
all.add(C(ProductLineConfig.class));
all.add(C(TopologyGraphManager.class).req(TopologyGraphBuilder.class, ServerConfigManager.class)//
.req(ProductLineConfig.class).req(ModelService.class, "dependency"));
.req(TopologyGraphConfigManager.class).req(ModelService.class, "dependency"));
// database
all.add(C(JdbcDataSourceConfigurationManager.class) //
......
......@@ -38,11 +38,11 @@ import com.dianping.cat.home.dependency.graph.transform.DefaultJsonBuilder;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.LineChart;
import com.dianping.cat.report.page.PayloadNormalizer;
import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig;
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;
......@@ -63,6 +63,9 @@ public class Handler implements PageHandler<Context> {
@Inject
private TopologyGraphManager m_graphManager;
@Inject
private TopologyGraphConfigManager m_graphConfigManager;
@Inject
private ReportService m_reportService;
......@@ -80,9 +83,6 @@ public class Handler implements PageHandler<Context> {
@Inject(type = ModelService.class, value = "top")
private ModelService<TopReport> m_topService;
@Inject
private ProductLineConfig m_productLineConfig;
private SimpleDateFormat m_sdf = new SimpleDateFormat("HH:mm");
private SimpleDateFormat m_dateFormat = new SimpleDateFormat("yyyyMMddHH");
......@@ -394,7 +394,7 @@ public class Handler implements PageHandler<Context> {
model.setReportStart(new Date(payload.getDate()));
model.setReportEnd(new Date(payload.getDate() + TimeUtil.ONE_MINUTE - 1));
model.setProductLineGraph(productLineGraph.toJson());
model.setProductLines(new ArrayList<String>(m_productLineConfig.queryProductLines()));
model.setProductLines(m_graphConfigManager.getConfig().getProductLines());
break;
}
m_jspViewer.view(ctx, model);
......
......@@ -14,6 +14,7 @@ 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.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;
......@@ -44,7 +45,7 @@ public class Model extends AbstractReportModel<Action, Context> {
private ProductLinesDashboard m_dashboardGraphData;
private List<String> m_productLines;
private List<ProductLine> m_productLines;
private String m_productLineGraph;
......@@ -57,11 +58,11 @@ public class Model extends AbstractReportModel<Action, Context> {
private TopReport m_topReport;
public List<String> getProductLines() {
public List<ProductLine> getProductLines() {
return m_productLines;
}
public void setProductLines(List<String> productLines) {
public void setProductLines(List<ProductLine> productLines) {
m_productLines = productLines;
}
......
package com.dianping.cat.report.page.dependency.dashboard;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
public class ProductLineConfig implements Initializable {
private Map<String, Group> m_groups = new TreeMap<String, Group>();
private Set<String> m_allDomains = new HashSet<String>();
public Set<String> queryProductLines() {
return m_groups.keySet();
}
public boolean contains(String domain) {
return m_allDomains.contains(domain);
}
public Map<String, Group> getGroups() {
return m_groups;
}
@Override
public void initialize() throws InitializationException {
addDomain("TuanGou", "TuanGouWeb");
addDomain("TuanGou", "TuanGouApi");
addDomain("TuanGou", "TuanGouRemote");
addDomain("TuanGou", "TuanGouApiMobile");
addDomain("TuanGou", "DealService");
addDomain("TuanGou2", "tuangou-paygate");
addDomain("TuanGou2", "TuanGouWap");
addDomain("TuanGou2", "BCTuangouWeb");
addDomain("TuanGou2", "Unipay");
addDomain("TuanGou3", "PayChannel");
addDomain("TuanGou3", "PayEngine");
addDomain("TuanGou3", "PayOrder");
addDomain("TuanGou3", "BCTuangouServer");
addDomain("TuanGou4", "TuanGouMT");
addDomain("TuanGou4", "TuanGouTracking");
addDomain("TuanGou4", "TuanGouOperation");
}
private void addDomain(String group, String domain) {
Group g = m_groups.get(group);
if (g == null) {
g = new Group();
m_groups.put(group, g);
}
g.addDomain(domain);
m_allDomains.add(domain);
}
public static class Group {
private String m_name;
private List<String> m_domains = new ArrayList<String>();
public Group addDomain(String domain) {
m_domains.add(domain);
return this;
}
public String getName() {
return m_name;
}
public void setName(String name) {
m_name = name;
}
public List<String> getDomains() {
return m_domains;
}
public void setDomains(List<String> domains) {
m_domains = domains;
}
}
}
......@@ -3,9 +3,15 @@ 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.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.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
......@@ -16,13 +22,16 @@ import com.dianping.cat.Cat;
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.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 TopologyGraphConfigManger implements Initializable {
public class TopologyGraphConfigManager implements Initializable {
private TopologyGraphConfig m_config;
......@@ -59,7 +68,7 @@ public class TopologyGraphConfigManger implements Initializable {
return sb.toString();
}
private String buildErrorDes(String... args) {
StringBuilder sb = new StringBuilder("<span style='color:red'>");
int len = args.length;
......@@ -121,15 +130,13 @@ public class TopologyGraphConfigManger implements Initializable {
double avg = index.getAvg();
long error = index.getErrorCount();
if (avg > config.getErrorResponseTime()) {
errorCode = ERROR;
sb.append(buildErrorDes(type, 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));
}else{
} else {
sb.append(buildDes(type, AVG_STR, m_df.format(avg), MILLISECOND));
}
if (error >= config.getErrorThreshold()) {
......@@ -138,7 +145,7 @@ public class TopologyGraphConfigManger implements Initializable {
} else if (error >= config.getWarningThreshold()) {
errorCode = WARN;
sb.append(buildErrorDes(type, ERROR_STR, String.valueOf(error)));
}else if (error > 0) {
} else if (error > 0) {
sb.append(buildDes(type, ERROR_STR, String.valueOf(error)));
}
}
......@@ -228,6 +235,21 @@ public class TopologyGraphConfigManger implements Initializable {
return flushConfig();
}
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 flushConfig();
}
public boolean deleteProductLine(String line) {
m_config.removeProductLine(line);
return flushConfig();
}
public boolean insertEdgeConfig(EdgeConfig config) {
config.setKey(config.getType() + ":" + config.getFrom() + ":" + config.getTo());
m_config.addEdgeConfig(config);
......@@ -272,6 +294,34 @@ public class TopologyGraphConfigManger implements Initializable {
return null;
}
public List<String> queryDomains(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()) {
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 String readConfig() throws IOException {
return Files.forIO().readFrom(new File(m_fileName), "utf-8");
}
......
......@@ -11,7 +11,7 @@ import com.dianping.cat.home.dependency.graph.entity.Node;
public class TopologyGraphItemBuilder {
@Inject
private TopologyGraphConfigManger m_graphConfigManager;
private TopologyGraphConfigManager m_graphConfigManager;
private static final int OK = GraphConstrant.OK;
......
......@@ -2,9 +2,11 @@ package com.dianping.cat.report.page.dependency.graph;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.codehaus.plexus.logging.LogEnabled;
......@@ -19,13 +21,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.dependency.config.entity.Domain;
import com.dianping.cat.home.dependency.config.entity.ProductLine;
import com.dianping.cat.home.dependency.graph.entity.Edge;
import com.dianping.cat.home.dependency.graph.entity.Node;
import com.dianping.cat.home.dependency.graph.entity.TopologyGraph;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig;
import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig.Group;
import com.dianping.cat.report.page.dependency.dashboard.ProductLineDashboard;
import com.dianping.cat.report.page.dependency.dashboard.ProductLinesDashboard;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
......@@ -43,10 +45,10 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
private TopologyGraphBuilder m_graphBuilder;
@Inject
private ServerConfigManager m_manager;
private TopologyGraphConfigManager m_configManger;
@Inject
private ProductLineConfig m_productLineConfig;
private ServerConfigManager m_manager;
private Map<Long, TopologyGraph> m_topologyGraphs = new ConcurrentHashMap<Long, TopologyGraph>(360);
......@@ -57,17 +59,14 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
public ProductLineDashboard buildProductLineGraph(String productLine, long time) {
TopologyGraph topologyGraph = queryGraph(time);
ProductLineDashboard dashboard = new ProductLineDashboard(productLine);
Group group = m_productLineConfig.getGroups().get(productLine);
if (group != null) {
List<String> domains = group.getDomains();
List<String> domains = m_configManger.queryDomains(productLine);
if (topologyGraph != null) {
for (String domain : domains) {
Node node = topologyGraph.findNode(domain);
if (topologyGraph != null) {
for (String domain : domains) {
Node node = topologyGraph.findNode(domain);
if (node != null) {
dashboard.addNode(m_graphBuilder.cloneNode(node));
}
if (node != null) {
dashboard.addNode(m_graphBuilder.cloneNode(node));
}
}
}
......@@ -77,17 +76,19 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
public ProductLinesDashboard buildDashboardGraph(long time) {
TopologyGraph topologyGraph = queryGraph(time);
ProductLinesDashboard dashboardGraph = new ProductLinesDashboard();
Set<String> m_allDomains = new HashSet<String>();
if (topologyGraph != null) {
Map<String, Group> groups = m_productLineConfig.getGroups();
Map<String, ProductLine> groups = m_configManger.queryProductLines();
for (Entry<String, Group> entry : groups.entrySet()) {
for (Entry<String, ProductLine> entry : groups.entrySet()) {
String groupName = entry.getKey();
Group groupDetail = entry.getValue();
for (String nodeName : groupDetail.getDomains()) {
Map<String, Domain> domains = entry.getValue().getDomains();
for (Domain domain : domains.values()) {
String nodeName = domain.getId();
Node node = topologyGraph.findNode(nodeName);
m_allDomains.add(nodeName);
if (node != null) {
dashboardGraph.addNode(groupName, m_graphBuilder.cloneNode(node));
}
......@@ -99,7 +100,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
String self = edge.getSelf();
String to = edge.getTarget();
if (m_productLineConfig.contains(self) && m_productLineConfig.contains(to)) {
if (m_allDomains.contains(self) && m_allDomains.contains(to)) {
dashboardGraph.addEdge(m_graphBuilder.cloneEdge(edge));
}
}
......@@ -162,7 +163,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
TopologyGraph graph = m_topologyGraphs.get(time);
long current = System.currentTimeMillis();
long minute = current - current % TimeUtil.ONE_MINUTE;
if (minute == time && graph == null) {
graph = m_topologyGraphs.get(time - TimeUtil.ONE_MINUTE);
......
......@@ -29,7 +29,16 @@ public enum Action implements org.unidal.web.mvc.Action {
TOPOLOGY_GRAPH_EDGE_CONFIG_DELETE("topologyGraphEdgeConfigDelete"),
TOPOLOGY_GRAPH_EDGE_CONFIG_LIST("topologyGraphEdgeConfigList");
TOPOLOGY_GRAPH_EDGE_CONFIG_LIST("topologyGraphEdgeConfigList"),
TOPOLOGY_GRAPH_PRODUCT_LINE("topologyProductLines"),
TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE("topologyProductLineAdd"),
TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE_SUBMIT("topologyProductLineAddSubmit"),
TOPOLOGY_GRAPH_PRODUCT_LINE_DELETE("topologyProductLineDelete")
;
public static Action getByName(String name, Action defaultAction) {
for (Action action : Action.values()) {
......
......@@ -27,7 +27,8 @@ 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.report.page.dependency.graph.TopologyGraphConfigManger;
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;
......@@ -42,7 +43,7 @@ public class Handler implements PageHandler<Context> {
private AggregationRuleDao m_aggregationRuleDao;
@Inject
private TopologyGraphConfigManger m_topologyConfigManager;
private TopologyGraphConfigManager m_topologyConfigManager;
@Override
@PayloadMeta(Payload.class)
......@@ -122,10 +123,41 @@ public class Handler implements PageHandler<Context> {
model.setOpState(graphEdgeConfigDelete(payload));
model.buildEdgeInfo();
break;
case TOPOLOGY_GRAPH_PRODUCT_LINE:
model.setGraphConfig(m_topologyConfigManager.getConfig());
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_topologyConfigManager.deleteProductLine(payload.getProductLineName()));
model.setGraphConfig(m_topologyConfigManager.getConfig());
break;
case TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE_SUBMIT:
model.setOpState(graphProductLineConfigAddOrUpdateSubmit(payload, model));
model.setGraphConfig(m_topologyConfigManager.getConfig());
break;
}
m_jspViewer.view(ctx, model);
}
private boolean graphProductLineConfigAddOrUpdateSubmit(Payload payload, Model model) {
ProductLine line = payload.getProductLine();
String[] domains = payload.getDomains();
return m_topologyConfigManager.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));
}
}
private boolean graphEdgeConfigAddOrUpdateSubmit(Payload payload, Model model) {
EdgeConfig config = payload.getEdgeConfig();
......
......@@ -17,7 +17,10 @@ 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_ADD_OR_UPDATE("/jsp/system/topology/topologyProductLineAdd.jsp"),
;
private String m_path;
......
......@@ -42,6 +42,15 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
return JspFile.TOPOLOGY_GRAPH_EDGE_CONFIG_LIST.getPath();
case TOPOLOGY_GRAPH_EDGE_CONFIG_ADD_OR_UPDATE_SUBMIT:
return JspFile.TOPOLOGY_GRAPH_EDGE_CONFIG_LIST.getPath();
//Product Line
case TOPOLOGY_GRAPH_PRODUCT_LINE:
return JspFile.TOPOLOGY_GRAPH_PRODUCT_LINE.getPath();
case TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE:
return JspFile.TOPOLOGY_GRAPH_PRODUCT_ADD_OR_UPDATE.getPath();
case TOPOLOGY_GRAPH_PRODUCT_LINE_DELETE:
return JspFile.TOPOLOGY_GRAPH_PRODUCT_LINE.getPath();
case TOPOLOGY_GRAPH_PRODUCT_LINE_ADD_OR_UPDATE_SUBMIT:
return JspFile.TOPOLOGY_GRAPH_PRODUCT_LINE.getPath();
}
throw new RuntimeException("Unknown action: " + action);
......
......@@ -14,6 +14,7 @@ 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;
......@@ -36,6 +37,8 @@ public class Model extends ViewModel<SystemPage, Action, Context> {
private DomainConfig m_domainConfig;
private EdgeConfig m_edgeConfig;
private ProductLine m_productLine;
public Model(Context ctx) {
super(ctx);
......@@ -173,4 +176,12 @@ public class Model extends ViewModel<SystemPage, Action, Context> {
}
}
public ProductLine getProductLine() {
return m_productLine;
}
public void setProductLine(ProductLine productLine) {
m_productLine = productLine;
}
}
......@@ -9,6 +9,7 @@ import com.dianping.cat.consumer.core.dal.Project;
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> {
......@@ -20,6 +21,9 @@ public class Payload implements ActionPayload<SystemPage, Action> {
@ObjectMeta("project")
private Project m_project = new Project();
@ObjectMeta("productLine")
private ProductLine m_productLine = new ProductLine();
@ObjectMeta("aggregation")
private AggregationRule m_rule = new AggregationRule();
......@@ -32,9 +36,15 @@ public class Payload implements ActionPayload<SystemPage, Action> {
@FieldMeta("projectId")
private int m_projectId;
@FieldMeta("productLineName")
private String m_productLineName;
@FieldMeta("domain")
private String m_domain;
@FieldMeta("domains")
private String[] m_domains = new String[100];
@FieldMeta("from")
private String m_from;
......@@ -166,4 +176,28 @@ public class Payload implements ActionPayload<SystemPage, Action> {
m_from = from;
}
public ProductLine getProductLine() {
return m_productLine;
}
public void setProductLine(ProductLine productLine) {
m_productLine = productLine;
}
public String getProductLineName() {
return m_productLineName;
}
public void setProductLineName(String productLineName) {
m_productLineName = productLineName;
}
public String[] getDomains() {
return m_domains;
}
public void setDomains(String[] domains) {
m_domains = domains;
}
}
......@@ -586,15 +586,15 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
</requirement>
</requirements>
</component>
......@@ -1193,10 +1193,6 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</role>
<implementation>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</implementation>
......@@ -1208,7 +1204,7 @@
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
......@@ -2539,6 +2535,9 @@
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
......@@ -2558,9 +2557,6 @@
<role-hint>top</role-hint>
<field-name>m_topService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</role>
</requirement>
</requirements>
</component>
<component>
......@@ -2597,10 +2593,10 @@
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</role>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
</requirements>
</component>
......@@ -2609,8 +2605,8 @@
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</role>
<implementation>com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.JspViewer</role>
......@@ -2875,7 +2871,7 @@
<role>com.dianping.cat.home.dal.report.AggregationRuleDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
</requirement>
</requirements>
</component>
......@@ -2906,10 +2902,6 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger</implementation>
</component>
<component>
<role>com.dianping.cat.system.alarm.AlarmContentBuilder</role>
<implementation>com.dianping.cat.system.alarm.AlarmContentBuilder</implementation>
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -29,7 +29,7 @@
<div class="well sidebar-nav">
<ul class="nav nav-list">
<c:forEach var="item" items="${model.productLines}" varStatus="status">
<li class="text-left" id="tab${item}"><a href="?op=productLine&productLine=${item}&minute=${model.minute}&domain=${model.domain}&date=${model.date}">${item}</a></li>
<li class="text-left" id="tab${item.id}"><a href="?op=productLine&productLine=${item.id}&minute=${model.minute}&domain=${model.domain}&date=${model.date}">${item.title}</a></li>
</c:forEach></ul></div></div>
<div class="span10">
<div class="text-center" id="container" style="width:1000px;height:600px;border:solid 1px #ccc;"></div>
......
......@@ -8,6 +8,7 @@
<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>
......
......@@ -73,7 +73,7 @@
<tr>
<td>&nbsp;</td>
<td><input class='btn btn-primary' id="addOrUpdateEdgeSubmit" type="submit"
name="submit" value="submit"/></td>
name="submit" value="提交"/></td>
</tr>
</table>
</form>
\ No newline at end of file
......@@ -52,7 +52,7 @@
</c:if>
<tr>
<td>&nbsp;</td>
<td><input class='btn btn-primary' id="addOrUpdateNodeSubmit" type="submit" name="submit" value="submit" /></td>
<td><input class='btn btn-primary' id="addOrUpdateNodeSubmit" type="submit" name="submit" value="提交" /></td>
</tr>
</table>
</form>
\ No newline at end of file
<%@ 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="topologyGraphEdgeConfigAddSumbit" id="form" method="post"
action="${model.pageUri}?op=topologyProductLineAddSubmit">
<h4 class="text-center text-error" id="state">&nbsp;</h4>
<h4 class="text-center text-error">修改产品线配置信息</h4>
<table class="table table-striped table-bordered table-condensed">
<tr>
<td style="text-align: right" class="text-success">产品线名称</td>
<td><input name="productLine.id"
value="${model.productLine.id}" required /></td>
</tr>
<tr>
<td style="text-align: right" class="text-success">产品线标题</td>
<td><input name="productLine.title"
value="${model.productLine.title}" required /></td>
</tr>
<tr>
<td style="text-align: right" class="text-success">产品线顺序</td>
<td><input name="productLine.order"
value="${model.productLine.order}" 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>
<c:otherwise>
<input type="radio" name="productLine.important" value="true" />
<input type="radio" name="productLine.important" value="false" checked />
</c:otherwise>
</c:choose></td>
</tr>
<tr>
<td style="text-align: right" class="text-success">选择产品线的项目</td>
<td><select style="width: 500px;" name="domains" multiple=""
id="domainSelect">
<c:forEach var="item" items="${model.projects}">
<option value="${item.domain}">${item.domain}</option>
</c:forEach>
</select></td>
</tr>
<tr>
<td>&nbsp;</td>
<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() {
$('#topologyProductLines').addClass('active');
$("#domainSelect").select2({
placeholder : "选择属于这个产品线的项目",
allowClear : true
});
var initDomains = [];
<c:forEach var="domain" items="${model.productLine.domains}">
initDomains.push("${domain.key}");
</c:forEach>
$("#domainSelect").val(initDomains).trigger("change");
});
</script>
\ No newline at end of file
<%@ 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"%>
<jsp:useBean id="ctx" type="com.dianping.cat.system.page.config.Context" scope="request"/>
<jsp:useBean id="payload" type="com.dianping.cat.system.page.config.Payload" scope="request"/>
<jsp:useBean id="model" type="com.dianping.cat.system.page.config.Model" scope="request"/>
<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" />
<script type="text/javascript">
$(document).ready(function() {
$('#topologyProductLines').addClass('active');
$('#content .nav-tabs a').mouseenter(function (e) {
e.preventDefault();
$(this).tab('show');
});
$(".delete").bind("click", function() {
return confirm("确定要删除此项目吗(不可恢复)?");
});
var action = '${payload.action.name}';
if(action=='topologyProductLineDelete'||action=='topologyProductLineAddSubmit'){
var state = '${model.opState}';
if(state=='Success'){
$('#state').html('操作成功');
}else{
$('#state').html('操作失败');
}
setInterval(function(){
$('#state').html('&nbsp;');
},3000);
}
});
</script>
<div class="row-fluid">
<div class="span2">
<%@include file="../configTree.jsp"%>
</div>
<div class="span10">
<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
</div>
<h4 id="state" class="text-center text-error">&nbsp;</h4>
<table class="table table-striped table-bordered">
<tr class="text-success">
<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="item" items="${model.config.productLines}" varStatus="status">
<tr><td>${item.id}</td><td>${item.title}</td>
<td>${item.order}</td><td>${item.important }</td>
<td>
<c:forEach var="domain" items="${item.domains}">
${domain.key},
</c:forEach>
</td>
<td><a href="?op=topologyProductLineAdd&productLineName=${item.id}" class='update btn btn-primary btn-small'>修改</a>
<a href="?op=topologyProductLineDelete&productLineName=${item.id}" class='delete btn-danger btn btn-primary btn-small'>删除</a></td>
</tr>
</c:forEach>
</table>
</div>
</div>
</a:body>
\ No newline at end of file
......@@ -18,7 +18,7 @@ import com.dianping.cat.home.dependency.config.entity.DomainConfig;
import com.dianping.cat.home.dependency.config.entity.EdgeConfig;
public class GraphConfigManagerTest {
private TopologyGraphConfigManger m_manager;
private TopologyGraphConfigManager m_manager;
private File m_file;
......@@ -31,7 +31,7 @@ public class GraphConfigManagerTest {
@Before
public void setUp() throws InitializationException, IOException {
m_manager = new TopologyGraphConfigManger();
m_manager = new TopologyGraphConfigManager();
m_file = new File("src/test/resources/com/dianping/cat/report/page/dependency/graph/ConfigForTest.xml");
m_orginalContent = Files.forIO().readFrom(m_file, "utf-8");
m_manager.setFileName(m_file.getAbsolutePath());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册