diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/Action.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/Action.java index adda3b451d6940d62fc8ad2b1bd0b0c121a0087a..d97bc8a982adf4457db22f2c0f5a878743bed93c 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/Action.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/Action.java @@ -2,7 +2,9 @@ package com.dianping.cat.report.page.app; public enum Action implements org.unidal.web.mvc.Action { VIEW("view"), + LINECHART_JSON("linechartJson"), PIECHART("piechart"), + PIECHART_JSON("piechartJson"), APP_ADD("appAdd"), APP_DELETE("appDelete"); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/Handler.java index 068b384bbcdb673def1cd3f9c30417745b0b223b..273b3039a9af69b7c770b85ba98379a728fdb495 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/Handler.java @@ -3,7 +3,9 @@ package com.dianping.cat.report.page.app; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.servlet.ServletException; @@ -23,10 +25,13 @@ import com.dianping.cat.config.app.AppDataSpreadInfo; import com.dianping.cat.config.app.QueryEntity; import com.dianping.cat.configuration.app.entity.Command; import com.dianping.cat.report.ReportPage; +import com.dianping.cat.report.page.JsonBuilder; import com.dianping.cat.report.page.LineChart; import com.dianping.cat.report.page.PayloadNormalizer; import com.dianping.cat.report.page.PieChart; import com.dianping.cat.report.page.app.graph.AppGraphCreator; +import com.dianping.cat.report.page.app.graph.PieChartDetailInfo; +import com.dianping.cat.report.page.app.graph.Sorter; import com.dianping.cat.system.config.AppRuleConfigManager; public class Handler implements PageHandler { @@ -90,34 +95,41 @@ public class Handler implements PageHandler { switch (action) { case VIEW: - QueryEntity linechartEntity1 = payload.getQueryEntity1(); - QueryEntity linechartEntity2 = payload.getQueryEntity2(); - String type = payload.getType(); - try { - filterCommands(model, payload.isShowActivity()); - - LineChart lineChart = m_appGraphCreator.buildLineChart(linechartEntity1, linechartEntity2, type); - List appDataSpreadInfos = m_appDataService.buildAppDataSpreadInfo(linechartEntity1, - field); - Collections.sort(appDataSpreadInfos, new Sorter(sortBy).buildLineChartInfoComparator()); - - model.setLineChart(lineChart); - model.setAppDataSpreadInfos(appDataSpreadInfos); - } catch (Exception e) { - Cat.logError(e); + Pair> lineChartPair = buildLineChart(model, payload, field, sortBy); + + if (lineChartPair != null) { + model.setLineChart(lineChartPair.getKey()); + model.setAppDataSpreadInfos(lineChartPair.getValue()); + } + break; + case LINECHART_JSON: + Pair> lineChartJsonPair = buildLineChart(model, payload, field, sortBy); + + if (lineChartJsonPair != null) { + Map lineChartObjs = new HashMap(); + + lineChartObjs.put("lineCharts", lineChartJsonPair.getKey()); + lineChartObjs.put("lineChartDetails", lineChartJsonPair.getValue()); + model.setJson(new JsonBuilder().toJson(lineChartObjs)); } break; case PIECHART: - try { - Pair> pair = m_appGraphCreator.buildPieChart(payload.getQueryEntity1(), - field); - List infos = pair.getValue(); - Collections.sort(infos, new Sorter().buildPieChartInfoComparator()); - - model.setPieChart(pair.getKey()); - model.setPieChartDetailInfos(infos); - } catch (Exception e) { - Cat.logError(e); + Pair> pieChartPair = buildPieChart(model, payload, field); + + if (pieChartPair != null) { + model.setPieChart(pieChartPair.getKey()); + model.setPieChartDetailInfos(pieChartPair.getValue()); + } + break; + case PIECHART_JSON: + Pair> pieChartJsonPair = buildPieChart(model, payload, field); + + if (pieChartJsonPair != null) { + Map pieChartObjs = new HashMap(); + + pieChartObjs.put("pieCharts", pieChartJsonPair.getKey()); + pieChartObjs.put("pieChartDetails", pieChartJsonPair.getValue()); + model.setJson(new JsonBuilder().toJson(pieChartObjs)); } break; case APP_ADD: @@ -165,6 +177,43 @@ public class Handler implements PageHandler { } } + private Pair> buildPieChart(Model model, Payload payload, + AppDataGroupByField field) { + try { + Pair> pair = m_appGraphCreator.buildPieChart(payload.getQueryEntity1(), + field); + List infos = pair.getValue(); + Collections.sort(infos, new Sorter().buildPieChartInfoComparator()); + + return pair; + } catch (Exception e) { + Cat.logError(e); + } + return null; + } + + private Pair> buildLineChart(Model model, Payload payload, + AppDataGroupByField field, String sortBy) { + QueryEntity linechartEntity1 = payload.getQueryEntity1(); + QueryEntity linechartEntity2 = payload.getQueryEntity2(); + String type = payload.getType(); + + try { + filterCommands(model, payload.isShowActivity()); + + LineChart lineChart = m_appGraphCreator.buildLineChart(linechartEntity1, linechartEntity2, type); + List appDataSpreadInfos = m_appDataService.buildAppDataSpreadInfo(linechartEntity1, field); + Collections.sort(appDataSpreadInfos, new Sorter(sortBy).buildLineChartInfoComparator()); + + model.setLineChart(lineChart); + model.setAppDataSpreadInfos(appDataSpreadInfos); + return new Pair>(lineChart, appDataSpreadInfos); + } catch (Exception e) { + Cat.logError(e); + } + return null; + } + private void normalize(Model model, Payload payload) { model.setAction(Action.VIEW); model.setPage(ReportPage.APP); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/JspFile.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/JspFile.java index 66d6614faecfb183a45df16badec2b6f03622c87..9bbb7de2a016cb62153e2be07bea39b06aecf76a 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/JspFile.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/JspFile.java @@ -4,6 +4,7 @@ public enum JspFile { VIEW("/jsp/report/app/appLinechart.jsp"), PIECHART("/jsp/report/app/appPiechart.jsp"), APP_MODIFY_RESULT("/jsp/report/app/result.jsp"), + JSON("/jsp/report/app/json.jsp") ; private String m_path; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/JspViewer.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/JspViewer.java index c6ec3463b33d679d8e5a74a208dfbcb005fe199f..77bb4d4acde89dabfe8d884aa80ca41f1aef72c9 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/JspViewer.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/JspViewer.java @@ -17,6 +17,9 @@ public class JspViewer extends BaseJspViewer case APP_ADD: case APP_DELETE: return JspFile.APP_MODIFY_RESULT.getPath(); + case LINECHART_JSON: + case PIECHART_JSON: + return JspFile.JSON.getPath(); } throw new RuntimeException("Unknown action: " + action); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/Model.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/Model.java index 93399c78975195c336dd122a7cdf6a9a00448cb3..cd198362035b488ff0805699d43ecbccde1f5c56 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/Model.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/Model.java @@ -17,6 +17,7 @@ import com.dianping.cat.report.page.AbstractReportModel; import com.dianping.cat.report.page.JsonBuilder; import com.dianping.cat.report.page.LineChart; import com.dianping.cat.report.page.PieChart; +import com.dianping.cat.report.page.app.graph.PieChartDetailInfo; public class Model extends AbstractReportModel { @@ -46,6 +47,8 @@ public class Model extends AbstractReportModel { private String m_content; + private String m_json; + public Model(Context ctx) { super(ctx); } @@ -119,6 +122,10 @@ public class Model extends AbstractReportModel { return new JsonBuilder().toJson(map); } + public String getJson() { + return m_json; + } + public LineChart getLineChart() { return m_lineChart; } @@ -167,6 +174,10 @@ public class Model extends AbstractReportModel { m_content = content; } + public void setJson(String json) { + m_json = json; + } + public void setLineChart(LineChart lineChart) { m_lineChart = lineChart; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/AppGraphCreator.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/AppGraphCreator.java index 55c240bb76988a580a19644eb35124bd6cf57861..5bc167d070d5247e6895b39612d6b65341a977a5 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/AppGraphCreator.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/AppGraphCreator.java @@ -23,7 +23,6 @@ import com.dianping.cat.report.chart.AbstractGraphCreator; import com.dianping.cat.report.page.LineChart; import com.dianping.cat.report.page.PieChart; import com.dianping.cat.report.page.PieChart.Item; -import com.dianping.cat.report.page.app.PieChartDetailInfo; public class AppGraphCreator extends AbstractGraphCreator { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/PieChartDetailInfo.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/PieChartDetailInfo.java similarity index 93% rename from cat-home/src/main/java/com/dianping/cat/report/page/app/PieChartDetailInfo.java rename to cat-home/src/main/java/com/dianping/cat/report/page/app/graph/PieChartDetailInfo.java index f428b7a895b2699eaa4754af05651f3e963a243d..ad06463bf9166bc596d46b39e2a1e21d840ba148 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/PieChartDetailInfo.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/PieChartDetailInfo.java @@ -1,4 +1,4 @@ -package com.dianping.cat.report.page.app; +package com.dianping.cat.report.page.app.graph; public class PieChartDetailInfo { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/app/Sorter.java b/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/Sorter.java similarity index 97% rename from cat-home/src/main/java/com/dianping/cat/report/page/app/Sorter.java rename to cat-home/src/main/java/com/dianping/cat/report/page/app/graph/Sorter.java index c6dad1cc3ea3f75f6a9e715b81b9471a8795f20e..a2b028eddee7cb6612939b503757ee381bebfb1e 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/app/Sorter.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/app/graph/Sorter.java @@ -1,4 +1,4 @@ -package com.dianping.cat.report.page.app; +package com.dianping.cat.report.page.app.graph; import java.util.Comparator; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/web/Action.java b/cat-home/src/main/java/com/dianping/cat/report/page/web/Action.java index 9b4b4d0478215b95e610c9f02cfdc03f492ef9ca..ce63727a3e6ba25c057f943ec30475c4e082e190 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/web/Action.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/web/Action.java @@ -1,7 +1,8 @@ package com.dianping.cat.report.page.web; public enum Action implements org.unidal.web.mvc.Action { - VIEW("view"); + VIEW("view"), + JSON("json"); private String m_name; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/web/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/web/Handler.java index eece72a7c9a078149eea629be0d279f7c3256f14..6135f90f2155dcd4789a87aa0d25fbabb6a13708 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/web/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/web/Handler.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -23,6 +24,7 @@ import com.dianping.cat.config.url.UrlPatternConfigManager; import com.dianping.cat.configuration.url.pattern.entity.PatternItem; import com.dianping.cat.helper.TimeHelper; import com.dianping.cat.report.ReportPage; +import com.dianping.cat.report.page.JsonBuilder; import com.dianping.cat.report.page.LineChart; import com.dianping.cat.report.page.PayloadNormalizer; import com.dianping.cat.report.page.PieChart; @@ -87,28 +89,54 @@ public class Handler implements PageHandler { pars.put("channel", channel); pars.put("city", city); - if (url != null) { - if (Monitor.TYPE_INFO.equals(type)) { - Pair, List> charts = m_graphCreator.queryBaseInfo(startDate, endDate, url, - pars); - Map lineCharts = charts.getKey(); - List pieCharts = charts.getValue(); - - model.setLineCharts(lineCharts); - model.setPieCharts(pieCharts); - } else { - Pair pair = m_graphCreator.queryErrorInfo(startDate, endDate, url, pars); - - model.setLineChart(pair.getKey()); - model.setPieChart(pair.getValue()); + Action action = payload.getAction(); + + switch (action) { + case VIEW: + if (url != null) { + if (Monitor.TYPE_INFO.equals(type)) { + Pair, List> charts = m_graphCreator.queryBaseInfo(startDate, endDate, + url, pars); + Map lineCharts = charts.getKey(); + List pieCharts = charts.getValue(); + + model.setLineCharts(lineCharts); + model.setPieCharts(pieCharts); + } else { + Pair pair = m_graphCreator.queryErrorInfo(startDate, endDate, url, pars); + + model.setLineChart(pair.getKey()); + model.setPieChart(pair.getValue()); + } } + model.setStart(startDate); + model.setEnd(endDate); + model.setPattermItems(rules); + model.setAction(Action.VIEW); + model.setPage(ReportPage.WEB); + model.setCityInfo(m_cityManager.getCityInfo()); + break; + + case JSON: + if (url != null) { + Map jsonObjs = new HashMap(); + + if (Monitor.TYPE_INFO.equals(type)) { + Pair, List> charts = m_graphCreator.queryBaseInfo(startDate, endDate, + url, pars); + + jsonObjs.put("lineCharts", charts.getKey()); + jsonObjs.put("pieCharts", charts.getValue()); + } else { + Pair pair = m_graphCreator.queryErrorInfo(startDate, endDate, url, pars); + + jsonObjs.put("lineChart", pair.getKey()); + jsonObjs.put("pieChart", pair.getValue()); + } + model.setJson(new JsonBuilder().toJson(jsonObjs)); + } + break; } - model.setStart(startDate); - model.setEnd(endDate); - model.setPattermItems(rules); - model.setAction(Action.VIEW); - model.setPage(ReportPage.WEB); - model.setCityInfo(m_cityManager.getCityInfo()); if (!ctx.isProcessStopped()) { m_jspViewer.view(ctx, model); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/web/JspFile.java b/cat-home/src/main/java/com/dianping/cat/report/page/web/JspFile.java index 34452b75dfe9679e775624a7efc67cacf008584f..e9d9b7fe3d2b40b6e0ebb7bf78dfd594cdb06335 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/web/JspFile.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/web/JspFile.java @@ -1,7 +1,8 @@ package com.dianping.cat.report.page.web; public enum JspFile { - VIEW("/jsp/report/web.jsp"), + VIEW("/jsp/report/web/web.jsp"), + JSON("/jsp/report/web/json.jsp"), ; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/web/JspViewer.java b/cat-home/src/main/java/com/dianping/cat/report/page/web/JspViewer.java index 46d540ffdf8447f043d61f2f77e8600bb846e1df..706d93d4003eb87a2f342c0bb4b4d1cd5426f801 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/web/JspViewer.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/web/JspViewer.java @@ -12,6 +12,8 @@ public class JspViewer extends BaseJspViewer switch (action) { case VIEW: return JspFile.VIEW.getPath(); + case JSON: + return JspFile.JSON.getPath(); } throw new RuntimeException("Unknown action: " + action); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/web/Model.java b/cat-home/src/main/java/com/dianping/cat/report/page/web/Model.java index 605aa14039d693aa7208f944d147d8a3a9d4c411..c866e49836648d35ad9eca4dc59d61f4e09731df 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/web/Model.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/web/Model.java @@ -33,6 +33,8 @@ public class Model extends AbstractReportModel { private String m_cityInfo; + private String m_json; + public Model(Context ctx) { super(ctx); } @@ -79,6 +81,10 @@ public class Model extends AbstractReportModel { return new JsonBuilder().toJson(maps); } + public String getJson() { + return m_json; + } + public LineChart getLineChart() { return m_lineChart; } @@ -119,6 +125,10 @@ public class Model extends AbstractReportModel { m_end = end; } + public void setJson(String json) { + m_json = json; + } + public void setLineChart(LineChart lineChart) { m_lineChart = lineChart; } diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java index b59312ddd5ce0a6151ee7f08bb201821e1477369..194939827c61d9728971c8e74741966922fffce8 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java @@ -141,6 +141,8 @@ public enum Action implements org.unidal.web.mvc.Action { APP_CONFIG_UPDATE("appConfigUpdate"), + APP_CONFIG_DOWNLOAD("appConfigDownload"), + APP_COMPARISON_CONFIG_UPDATE("appComparisonConfigUpdate"), THIRD_PARTY_CONFIG_UPDATE("thirdPartyConfigUpdate"), diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java index 3124d921b4331917f0db48d83e973703422bccc2..6661dff6aed25626b33e4422513d6d31ef93f3c0 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java @@ -6,6 +6,7 @@ import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; import org.unidal.lookup.annotation.Inject; import org.unidal.web.mvc.PageHandler; @@ -83,6 +84,7 @@ public class Handler implements PageHandler { model.setPage(SystemPage.CONFIG); Action action = payload.getAction(); + HttpServletResponse response = ctx.getHttpServletResponse(); storeModifyInfo(ctx, payload); model.setAction(action); @@ -177,12 +179,13 @@ public class Handler implements PageHandler { case APP_SUBMIT: case APP_PAGE_DELETE: case APP_CONFIG_UPDATE: + case APP_CONFIG_DOWNLOAD: case APP_RULE: case APP_RULE_ADD_OR_UPDATE: case APP_RULE_ADD_OR_UPDATE_SUBMIT: case APP_RULE_DELETE: case APP_COMPARISON_CONFIG_UPDATE: - m_appConfigProcessor.process(action, payload, model); + m_appConfigProcessor.process(action, payload, model, response); break; case ALERT_DEFAULT_RECEIVERS: @@ -190,7 +193,18 @@ public class Handler implements PageHandler { m_alertConfigProcessor.process(action, payload, model); break; } - m_jspViewer.view(ctx, model); + if (needJspViewer(action, payload)) { + m_jspViewer.view(ctx, model); + } + } + + private boolean needJspViewer(Action action, Payload payload) { + if (Action.APP_CONFIG_DOWNLOAD.equals(action) && "xml".equalsIgnoreCase(payload.getType())) { + return false; + } else { + return true; + } + } public void store(String userName, String accountName, Payload payload) { diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java index 16e3a003c9dec9b06e9a44ccc2de703c2f3dcbbc..5fb5d4248a720fd3e6f488e24ee96ca06c4e032f 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java @@ -96,6 +96,8 @@ public enum JspFile { APP_RULE_UPDATE("/jsp/system/appRule/appRuleUpdate.jsp"), APP_CONFIG_UPDATE("/jsp/system/appConfig/appConfig.jsp"), + + APP_CONFIG_DWONLOAD("/jsp/system/appConfig/appConfigJson.jsp"), APP_COMPARISON_CONFIG_UPDATE("/jsp/system/appComparison/appComparison.jsp"), diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java index e161a13ea5534a4c59f354b9166f8222ab73240e..5248c4b6a3d8540afc0886ce8f72f68a9e698863 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java @@ -146,6 +146,8 @@ public class JspViewer extends BaseJspViewer return JspFile.APP_RULE_UPDATE.getPath(); case APP_CONFIG_UPDATE: return JspFile.APP_CONFIG_UPDATE.getPath(); + case APP_CONFIG_DOWNLOAD: + return JspFile.APP_CONFIG_DWONLOAD.getPath(); case APP_COMPARISON_CONFIG_UPDATE: return JspFile.APP_COMPARISON_CONFIG_UPDATE.getPath(); case THIRD_PARTY_CONFIG_UPDATE: diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java index edd3ca0572c32add37197038002adf5f6f7c1ca3..215bf1eb1add0ddb3c402b7718c725ba101a9c4f 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/Model.java @@ -33,6 +33,25 @@ import com.dianping.cat.system.page.config.process.BaseProcesser.RuleItem; public class Model extends ViewModel { + public static class Edge { + private List m_edgeConfigs; + + private NodeConfig m_nodeConfig; + + public Edge(List edgeConfigs, NodeConfig nodeConfig) { + m_edgeConfigs = edgeConfigs; + m_nodeConfig = nodeConfig; + } + + public List getEdgeConfigs() { + return m_edgeConfigs; + } + + public NodeConfig getNodeConfig() { + return m_nodeConfig; + } + } + private Project m_project; private List m_projects; @@ -77,6 +96,8 @@ public class Model extends ViewModel { private String m_content; + private String m_appConfigJson; + private String m_metricItemConfigRule; private Map m_productLineToDomains; @@ -147,6 +168,10 @@ public class Model extends ViewModel { return m_aggregationRules; } + public String getAppConfigJson() { + return m_appConfigJson; + } + public String getBug() { return m_bug; } @@ -400,6 +425,10 @@ public class Model extends ViewModel { m_aggregationRules = aggregationRules; } + public void setAppConfigJson(String appConfigJson) { + m_appConfigJson = appConfigJson; + } + public void setBug(String bug) { m_bug = bug; } @@ -559,23 +588,4 @@ public class Model extends ViewModel { public void setVersions(Map versions) { m_versions = versions; } - - public static class Edge { - private List m_edgeConfigs; - - private NodeConfig m_nodeConfig; - - public Edge(List edgeConfigs, NodeConfig nodeConfig) { - m_edgeConfigs = edgeConfigs; - m_nodeConfig = nodeConfig; - } - - public List getEdgeConfigs() { - return m_edgeConfigs; - } - - public NodeConfig getNodeConfig() { - return m_nodeConfig; - } - } } diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/process/AppConfigProcessor.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/process/AppConfigProcessor.java index cd2ef537ada20ae9b60330bf680bdc9f9d3ffbc2..5d1bdac79bbe06a732ee4594e84d575e17811cb2 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/process/AppConfigProcessor.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/process/AppConfigProcessor.java @@ -1,13 +1,21 @@ package com.dianping.cat.system.page.config.process; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.List; +import java.util.zip.GZIPOutputStream; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import org.codehaus.plexus.util.StringUtils; import org.unidal.lookup.annotation.Inject; +import com.dianping.cat.Cat; import com.dianping.cat.config.app.AppComparisonConfigManager; import com.dianping.cat.config.app.AppConfigManager; import com.dianping.cat.configuration.app.entity.Command; +import com.dianping.cat.report.page.JsonBuilder; import com.dianping.cat.system.config.AppRuleConfigManager; import com.dianping.cat.system.page.config.Action; import com.dianping.cat.system.page.config.Model; @@ -34,7 +42,7 @@ public class AppConfigProcessor extends BaseProcesser { model.setCommands(appConfigManager.queryCommands()); } - public void process(Action action, Payload payload, Model model) { + public void process(Action action, Payload payload, Model model, HttpServletResponse httpResponse) { int id; switch (action) { @@ -92,6 +100,28 @@ public class AppConfigProcessor extends BaseProcesser { } model.setContent(m_appConfigManager.getConfig().toString()); break; + case APP_CONFIG_DOWNLOAD: + String type = payload.getType(); + + if (StringUtils.isEmpty(type)) { + type = "json"; + } + try { + if ("xml".equalsIgnoreCase(type)) { + ServletOutputStream outputStream = httpResponse.getOutputStream(); + byte[] compress = compress(m_appConfigManager.getConfig().toString()); + + httpResponse.setContentType("application/xml;charset=utf-8"); + httpResponse.addHeader("Content-Encoding", "gzip"); + outputStream.write(compress); + } else if ("json".equalsIgnoreCase(type)) { + model.setAppConfigJson(new JsonBuilder().toJson(m_appConfigManager.getConfig())); + } + + } catch (Exception e) { + Cat.logError(e); + } + break; case APP_RULE: buildAppConfigInfo(m_appConfigManager, model); model.setRules(m_appRuleConfigManager.getMonitorRules().getRules().values()); @@ -122,6 +152,14 @@ public class AppConfigProcessor extends BaseProcesser { } } + private byte[] compress(String str) throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(1024 * 32); + GZIPOutputStream gzip = new GZIPOutputStream(out); + gzip.write(str.getBytes()); + gzip.close(); + return out.toByteArray(); + } + private void generateCommandsForModel(Model model) { List commands = m_appConfigManager.queryCommands(); model.setCommands(commands); diff --git a/cat-home/src/main/webapp/jsp/report/app/appLinechart.jsp b/cat-home/src/main/webapp/jsp/report/app/appLinechart.jsp index 28e79688cf1e65fca2db144432b89f484d78537b..929c2924c656fe68c6ccbcf4d416f97c3a5df021 100644 --- a/cat-home/src/main/webapp/jsp/report/app/appLinechart.jsp +++ b/cat-home/src/main/webapp/jsp/report/app/appLinechart.jsp @@ -20,6 +20,8 @@ if (value == true) { $('#history').slideDown(); + $("#domains2").val($("#domains").val()); + $("#domains2").change(); $("#command2").val($("#command").val()); command2Change(); $("#code2").val($("#code").val()); diff --git a/cat-home/src/main/webapp/jsp/report/app/json.jsp b/cat-home/src/main/webapp/jsp/report/app/json.jsp new file mode 100644 index 0000000000000000000000000000000000000000..fbecdec00ae6c3b4b82fc223a5021bf8afaaf908 --- /dev/null +++ b/cat-home/src/main/webapp/jsp/report/app/json.jsp @@ -0,0 +1,3 @@ +<%@ page contentType="text/html; charset=utf-8" session="false"%> + +${model.json} \ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/report/cross/cross.jsp b/cat-home/src/main/webapp/jsp/report/cross/cross.jsp index 3acdb9e9be974225c29b295c929ad95fbb141508..4217989260476ebfd214a2fa4352cea99d66979c 100644 --- a/cat-home/src/main/webapp/jsp/report/cross/cross.jsp +++ b/cat-home/src/main/webapp/jsp/report/cross/cross.jsp @@ -44,7 +44,7 @@ - + @@ -68,10 +68,10 @@ - + - + diff --git a/cat-home/src/main/webapp/jsp/report/cross/crossHistoryHost.jsp b/cat-home/src/main/webapp/jsp/report/cross/crossHistoryHost.jsp index 93b129a17cd0d72e2ea8f2eae82fcc7046ae9f48..3bf7c32ed7a030d714229cda0dfafa76430c6c7c 100644 --- a/cat-home/src/main/webapp/jsp/report/cross/crossHistoryHost.jsp +++ b/cat-home/src/main/webapp/jsp/report/cross/crossHistoryHost.jsp @@ -46,7 +46,7 @@

调用其他Pigeon服务

调用其他Pigeon服务
Type RemoteProject

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 客户端数据 ]

提供Pigeon服务 [ 客户端数据 ]
- + @@ -69,10 +69,10 @@ - + - + diff --git a/cat-home/src/main/webapp/jsp/report/cross/crossHistoryMethod.jsp b/cat-home/src/main/webapp/jsp/report/cross/crossHistoryMethod.jsp index cd6b76d3969a1a7c49f51f968ca20ef7ada99ec4..37d32b129502e0020007685992cf0076d4b7a675 100644 --- a/cat-home/src/main/webapp/jsp/report/cross/crossHistoryMethod.jsp +++ b/cat-home/src/main/webapp/jsp/report/cross/crossHistoryMethod.jsp @@ -63,7 +63,7 @@ } - + @@ -89,10 +89,10 @@ - + - + diff --git a/cat-home/src/main/webapp/jsp/report/cross/crossHistoryProject.jsp b/cat-home/src/main/webapp/jsp/report/cross/crossHistoryProject.jsp index edda49ee534e03e8fd58f202883b0f016ec4cde2..b2069793a2cffcc2aa17f63caabe54491e40a3c0 100644 --- a/cat-home/src/main/webapp/jsp/report/cross/crossHistoryProject.jsp +++ b/cat-home/src/main/webapp/jsp/report/cross/crossHistoryProject.jsp @@ -46,7 +46,7 @@

调用其他Pigeon服务

调用其他Pigeon服务
Type RemoteIp

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 客户端数据 ]

提供Pigeon服务 [ 客户端数据 ]

调用其他Pigeon服务

调用其他Pigeon服务
Type RemoteIp

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 客户端数据 ]

提供Pigeon服务 [ 客户端数据 ]
- + @@ -69,10 +69,10 @@ - + - + diff --git a/cat-home/src/main/webapp/jsp/report/cross/crossHost.jsp b/cat-home/src/main/webapp/jsp/report/cross/crossHost.jsp index 8346695f9f64da8e3f4368ca40739d463323ad06..f9b1c1e29449f32f0ee2f2844360117133115e6e 100644 --- a/cat-home/src/main/webapp/jsp/report/cross/crossHost.jsp +++ b/cat-home/src/main/webapp/jsp/report/cross/crossHost.jsp @@ -46,7 +46,7 @@

调用其他Pigeon服务

调用其他Pigeon服务
Type RemoteProject

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 客户端数据 ]

提供Pigeon服务 [ 客户端数据 ]
- + @@ -70,10 +70,10 @@ - + - + diff --git a/cat-home/src/main/webapp/jsp/report/cross/crossMethod.jsp b/cat-home/src/main/webapp/jsp/report/cross/crossMethod.jsp index d3d8a0f80761b65c569bd80349b46466b90464ef..822fe1aaeaabf2b1b413409ed7e65df3fac19cfe 100644 --- a/cat-home/src/main/webapp/jsp/report/cross/crossMethod.jsp +++ b/cat-home/src/main/webapp/jsp/report/cross/crossMethod.jsp @@ -84,7 +84,7 @@ } - + @@ -110,10 +110,10 @@ - + - + diff --git a/cat-home/src/main/webapp/jsp/report/web/json.jsp b/cat-home/src/main/webapp/jsp/report/web/json.jsp new file mode 100644 index 0000000000000000000000000000000000000000..481d89d8f85ed75725bce2274cc1a44b4215b64e --- /dev/null +++ b/cat-home/src/main/webapp/jsp/report/web/json.jsp @@ -0,0 +1,9 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="a" uri="/WEB-INF/app.tld"%> +<%@ taglib prefix="w" uri="http://www.unidal.org/web/core"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="res" uri="http://www.unidal.org/webres"%> + + + +${model.json} \ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/report/web.jsp b/cat-home/src/main/webapp/jsp/report/web/web.jsp similarity index 100% rename from cat-home/src/main/webapp/jsp/report/web.jsp rename to cat-home/src/main/webapp/jsp/report/web/web.jsp diff --git a/cat-home/src/main/webapp/jsp/system/appConfig/appConfigJson.jsp b/cat-home/src/main/webapp/jsp/system/appConfig/appConfigJson.jsp new file mode 100644 index 0000000000000000000000000000000000000000..ad52410ad8dc74a9e7995a417162cbad4bf459b4 --- /dev/null +++ b/cat-home/src/main/webapp/jsp/system/appConfig/appConfigJson.jsp @@ -0,0 +1,10 @@ +<%@ page contentType="text/html; charset=utf-8" %> +<%@ 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"%> +<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> + + + + +${model.appConfigJson} \ No newline at end of file

调用其他Pigeon服务

调用其他Pigeon服务
Type RemoteIp

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 客户端数据 ]

提供Pigeon服务 [ 客户端数据 ]

调用其他Pigeon服务

调用其他Pigeon服务
Type RemoteIp

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 服务器端数据 ]

提供Pigeon服务 [ 客户端数据 ]

提供Pigeon服务 [ 客户端数据 ]