From e4655ac29b1fd83521efd6cca7f587fb4afb20fd Mon Sep 17 00:00:00 2001 From: datagear Date: Mon, 20 Jan 2020 22:05:11 +0800 Subject: [PATCH] =?UTF-8?q?[analysis]DataSet=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E4=B8=BADataSetResult=E3=80=81DataSetFactory=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E4=B8=BADataSet=EF=BC=8C=E5=B9=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=91=BD=E5=90=8D=EF=BC=9B[web]=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E6=95=B0=E6=8D=AE=E9=9B=86=E3=80=81=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/datagear/analysis/Chart.java | 31 +- .../org/datagear/analysis/ChartDataSet.java | 65 ++++ .../analysis/ChartDataSetFactory.java | 142 -------- .../org/datagear/analysis/ChartPlugin.java | 4 +- .../java/org/datagear/analysis/Dashboard.java | 34 +- .../java/org/datagear/analysis/DataSet.java | 66 +++- .../org/datagear/analysis/DataSetExport.java | 6 +- .../org/datagear/analysis/DataSetFactory.java | 81 ----- .../org/datagear/analysis/DataSetParam.java | 2 +- .../org/datagear/analysis/DataSetResult.java | 41 +++ .../java/org/datagear/analysis/DataSign.java | 2 +- ...taSetFactory.java => AbstractDataSet.java} | 16 +- .../analysis/support/ChartWidget.java | 18 +- .../JsonChartPluginPropertiesResolver.java | 4 +- .../analysis/support/MacroDataSetExport.java | 52 +-- .../datagear/analysis/support/MapDataSet.java | 6 +- ...SqlDataSetFactory.java => SqlDataSet.java} | 24 +- .../analysis/support/html/HtmlChart.java | 6 +- .../support/html/HtmlChartPlugin.java | 33 +- .../html/HtmlChartScriptObjectWriter.java | 42 +-- .../support/html/HtmlChartWidget.java | 6 +- ...JsonChartPluginPropertiesResolverTest.java | 4 +- ...etFactoryTest.java => SqlDataSetTest.java} | 18 +- .../support/html/HtmlChartPluginTest.java | 8 +- ...HtmlTplDashboardWidgetFmkRendererTest.java | 4 +- ...tmlTplDashboardWidgetHtmlRendererTest.java | 4 +- .../domain/HtmlChartWidgetEntity.java | 38 ++- ...ctoryEntity.java => SqlDataSetEntity.java} | 13 +- .../service/SqlDataSetEntityService.java | 28 ++ .../SqlDataSetFactoryEntityService.java | 28 -- .../HtmlChartWidgetEntityServiceImpl.java | 291 +++++++++------- ....java => SqlDataSetEntityServiceImpl.java} | 125 +++---- .../org/datagear/management/ddl/datagear.sql | 58 ++-- .../mapper/HtmlChartWidgetEntityMapper.xml | 60 ++-- .../HtmlTplDashboardWidgetEntityMapper.xml | 6 +- .../mapper/SqlDataSetFactoryEntityMapper.xml | 105 +++--- .../AbstractChartPluginAwareController.java | 159 ++++----- .../web/controller/AbstractController.java | 14 + .../web/controller/ChartController.java | 54 +-- .../web/controller/ChartPluginController.java | 8 +- .../web/controller/DashboardController.java | 8 +- .../web/controller/DataSetController.java | 87 +++-- .../datagear-chart-line-0.1.0/properties.json | 5 + .../web/datagear-applicationContext.xml | 4 +- .../datagear/web/locales/datagear.properties | 2 +- .../view/analysis/chart/chart_form.ftl | 141 ++++++-- .../view/analysis/chart/chart_grid.ftl | 4 +- .../analysis/chartPlugin/chartPlugin_grid.ftl | 4 +- .../analysis/dashboard/dashboard_grid.ftl | 2 +- .../view/analysis/dataSet/dataSet_form.ftl | 4 +- .../view/analysis/dataSet/dataSet_grid.ftl | 4 +- .../src/main/webapp/static/css/common.css | 64 ++++ .../static/script/datagear-chart-util.js | 313 ++++++++---------- 53 files changed, 1259 insertions(+), 1089 deletions(-) create mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java delete mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSetFactory.java delete mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/DataSetFactory.java create mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/DataSetResult.java rename datagear-analysis/src/main/java/org/datagear/analysis/support/{AbstractDataSetFactory.java => AbstractDataSet.java} (84%) rename datagear-analysis/src/main/java/org/datagear/analysis/support/{SqlDataSetFactory.java => SqlDataSet.java} (76%) rename datagear-analysis/src/test/java/org/datagear/analysis/support/{SqlDataSetFactoryTest.java => SqlDataSetTest.java} (76%) rename datagear-management/src/main/java/org/datagear/management/domain/{SqlDataSetFactoryEntity.java => SqlDataSetEntity.java} (78%) create mode 100644 datagear-management/src/main/java/org/datagear/management/service/SqlDataSetEntityService.java delete mode 100644 datagear-management/src/main/java/org/datagear/management/service/SqlDataSetFactoryEntityService.java rename datagear-management/src/main/java/org/datagear/management/service/impl/{SqlDataSetFactoryEntityServiceImpl.java => SqlDataSetEntityServiceImpl.java} (60%) diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/Chart.java b/datagear-analysis/src/main/java/org/datagear/analysis/Chart.java index 32d7f70d..10ab9d92 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/Chart.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/Chart.java @@ -24,7 +24,7 @@ public class Chart extends AbstractIdentifiable private Map propertyValues; - private ChartDataSetFactory[] chartDataSetFactories; + private ChartDataSet[] chartDataSets; public Chart() { @@ -37,13 +37,13 @@ public class Chart extends AbstractIdentifiable } public Chart(String id, RenderContext renderContext, ChartPlugin plugin, Map propertyValues, - ChartDataSetFactory[] chartDataSetFactories) + ChartDataSet[] chartDataSets) { super(id); this.renderContext = renderContext; this.plugin = plugin; this.propertyValues = propertyValues; - this.chartDataSetFactories = chartDataSetFactories; + this.chartDataSets = chartDataSets; } public RenderContext getRenderContext() @@ -76,34 +76,35 @@ public class Chart extends AbstractIdentifiable this.propertyValues = propertyValues; } - public ChartDataSetFactory[] getChartDataSetFactories() + public ChartDataSet[] getChartDataSets() { - return chartDataSetFactories; + return chartDataSets; } - public void setChartDataSetFactories(ChartDataSetFactory[] chartDataSetFactories) + public void setChartDataSets(ChartDataSet[] chartDataSets) { - this.chartDataSetFactories = chartDataSetFactories; + this.chartDataSets = chartDataSets; } /** - * 获取数据集。 + * 获取此图表的所有{@linkplain DataSetResult}。 * * @param dataSetParamValues * @return * @throws DataSetException */ - public DataSet[] getDataSets(Map dataSetParamValues) throws DataSetException + public DataSetResult[] getDataSetResults(Map dataSetParamValues) throws DataSetException { - if (this.chartDataSetFactories == null || this.chartDataSetFactories.length == 0) - return new DataSet[0]; + if (this.chartDataSets == null || this.chartDataSets.length == 0) + return new DataSetResult[0]; - DataSet[] dataSets = new DataSet[this.chartDataSetFactories.length]; + DataSetResult[] dataSets = new DataSetResult[this.chartDataSets.length]; - for (int i = 0; i < this.chartDataSetFactories.length; i++) + for (int i = 0; i < this.chartDataSets.length; i++) { - DataSet dataSet = this.chartDataSetFactories[i].getDataSetFactory().getDataSet(dataSetParamValues); - dataSets[i] = dataSet; + DataSetResult dataSetResult = this.chartDataSets[i].getDataSet() + .getResult(dataSetParamValues); + dataSets[i] = dataSetResult; } return dataSets; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java b/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java new file mode 100644 index 00000000..02a93f8e --- /dev/null +++ b/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2018 datagear.tech. All Rights Reserved. + */ + +/** + * + */ +package org.datagear.analysis; + +import java.util.Map; +import java.util.Set; + +/** + * 图表数据集。 + *

+ * 此类描述图表关联的某个{@linkplain DataSet}以及对其{@linkplain DataSet#getProperties()}设置的对应标记,这些标记通常是{@linkplain DataSign#getName()}。 + *

+ * + * @author datagear@163.com + * + */ +public class ChartDataSet +{ + /** 数据集 */ + private DataSet dataSet; + + /** 数据集属性-标记映射表 */ + private Map> propertySigns; + + public ChartDataSet() + { + super(); + } + + public ChartDataSet(DataSet dataSet) + { + super(); + this.dataSet = dataSet; + } + + public DataSet getDataSet() + { + return dataSet; + } + + public void setDataSet(DataSet dataSet) + { + this.dataSet = dataSet; + } + + public boolean hasPropertySign() + { + return (this.propertySigns != null && !this.propertySigns.isEmpty()); + } + + public Map> getPropertySigns() + { + return propertySigns; + } + + public void setPropertySigns(Map> propertySigns) + { + this.propertySigns = propertySigns; + } +} diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSetFactory.java b/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSetFactory.java deleted file mode 100644 index a00f3d20..00000000 --- a/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSetFactory.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2018 datagear.tech. All Rights Reserved. - */ - -/** - * - */ -package org.datagear.analysis; - -import java.util.ArrayList; -import java.util.List; - -/** - * 图表数据集工厂。 - * - * @author datagear@163.com - * - */ -public class ChartDataSetFactory -{ - /** 数据集工厂 */ - private DataSetFactory dataSetFactory; - - /** 数据标记集 */ - private List dataSigns; - - public ChartDataSetFactory() - { - super(); - } - - public ChartDataSetFactory(DataSetFactory dataSetFactory, List dataSigns) - { - super(); - this.dataSetFactory = dataSetFactory; - this.dataSigns = dataSigns; - } - - public DataSetFactory getDataSetFactory() - { - return dataSetFactory; - } - - public void setDataSetFactory(DataSetFactory dataSetFactory) - { - this.dataSetFactory = dataSetFactory; - } - - public List getDataSigns() - { - return dataSigns; - } - - public void setDataSigns(List dataSigns) - { - this.dataSigns = dataSigns; - } - - /** - * 获取{@linkplain #getDataSigns()}的名称分隔字符串。 - *

- * 如果{@linkplain #getDataSigns()}为{@code null},则返回空字符串。 - *

- * - * @param splitter - * @return - */ - public String getDataSignNamesText(String splitter) - { - if (this.dataSigns == null) - return ""; - - StringBuilder sb = new StringBuilder(); - - for (int i = 0; i < this.dataSigns.size(); i++) - { - DataSign dataSign = this.dataSigns.get(i); - - if (i > 0) - sb.append(splitter); - - sb.append(dataSign.getName()); - } - - return sb.toString(); - } - - /** - * 从{@linkplain ChartPlugin#getDataSigns()}查找并设置{@linkplain DataSign}列表。 - *

- * 如果{@code chartPlugin}或{@code names}任一为{@code null},此方法什么也不做。 - *

- * - * @param chartPlugin - * @param names - * @throws IllegalArgumentException - */ - public void setDataSigns(ChartPlugin chartPlugin, String... names) throws IllegalArgumentException - { - List source = (chartPlugin == null ? null : chartPlugin.getDataSigns()); - setDataSigns(source, names); - } - - /** - * 从源列表中查找并设置{@linkplain DataSign}列表。 - *

- * 如果{@code source}或{@code names}任一为{@code null},此方法什么也不做。 - *

- * - * @param source - * @param names - * @throws IllegalArgumentException - * 当{@code source}中找不到指定名称的元素时 - */ - public void setDataSigns(List source, String... names) throws IllegalArgumentException - { - if (source == null || names == null) - return; - - List dataSigns = new ArrayList(); - - for (String name : names) - { - DataSign dataSign = null; - - for (DataSign myDataSign : source) - { - if (myDataSign.getName().equals(name)) - { - dataSign = myDataSign; - break; - } - } - - if (dataSign == null) - throw new IllegalArgumentException( - "No " + DataSign.class.getSimpleName() + " found for name '" + name + "'"); - } - - this.dataSigns = dataSigns; - } -} diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/ChartPlugin.java b/datagear-analysis/src/main/java/org/datagear/analysis/ChartPlugin.java index ba10f802..3f293b2b 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/ChartPlugin.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/ChartPlugin.java @@ -101,11 +101,11 @@ public interface ChartPlugin extends Identifiable * * @param renderContext * @param chartPropertyValues - * @param chartDataSetFactories + * @param chartDataSets * @return * @throws RenderException */ - Chart renderChart(T renderContext, Map chartPropertyValues, ChartDataSetFactory... chartDataSetFactories) + Chart renderChart(T renderContext, Map chartPropertyValues, ChartDataSet... chartDataSets) throws RenderException; /** diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/Dashboard.java b/datagear-analysis/src/main/java/org/datagear/analysis/Dashboard.java index 4d07cea2..46699ff9 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/Dashboard.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/Dashboard.java @@ -93,57 +93,57 @@ public class Dashboard extends AbstractIdentifiable } /** - * 获取此看板的所有数据集。 + * 获取此看板的所有数据集结果。 * * @param dataSetParamValues * @return * @throws DataSetException */ - public Map getDataSets(Map dataSetParamValues) throws DataSetException + public Map getDataSetResults(Map dataSetParamValues) throws DataSetException { - Map dataSetsMap = new HashMap(); + Map resultsMap = new HashMap(); if (this.charts == null || this.charts.isEmpty()) - return dataSetsMap; + return resultsMap; for (Chart chart : this.charts) { - DataSet[] dataSets = chart.getDataSets(dataSetParamValues); + DataSetResult[] results = chart.getDataSetResults(dataSetParamValues); - if (dataSets != null) - dataSetsMap.put(chart.getId(), dataSets); + if (results != null) + resultsMap.put(chart.getId(), results); } - return dataSetsMap; + return resultsMap; } /** - * 获取此看板指定图表ID集的数据集。 + * 获取此看板指定图表ID集的数据集结果。 * * @param chartIds * @param dataSetParamValues * @return * @throws DataSetException */ - public Map getDataSets(Collection chartIds, Map dataSetParamValues) - throws DataSetException + public Map getDataSetResults(Collection chartIds, + Map dataSetParamValues) throws DataSetException { - Map dataSetsMap = new HashMap(); + Map resultsMap = new HashMap(); if (this.charts == null || this.charts.isEmpty()) - return dataSetsMap; + return resultsMap; for (Chart chart : this.charts) { if (!chartIds.contains(chart.getId())) continue; - DataSet[] dataSets = chart.getDataSets(dataSetParamValues); + DataSetResult[] results = chart.getDataSetResults(dataSetParamValues); - if (dataSets != null) - dataSetsMap.put(chart.getId(), dataSets); + if (results != null) + resultsMap.put(chart.getId(), results); } - return dataSetsMap; + return resultsMap; } } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DataSet.java b/datagear-analysis/src/main/java/org/datagear/analysis/DataSet.java index ae3e3353..2c9180b9 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/DataSet.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/DataSet.java @@ -13,29 +13,69 @@ import java.util.Map; * @author datagear@163.com * */ -public interface DataSet +public interface DataSet extends Identifiable { /** - * 获取数据。 + * 获取属性列表。 + *

+ * 此列表描述{@linkplain #getResult(DataSetParamValues)}返回的{@linkplain DataSetResult#getDatas()}元素的属性信息。 + *

* * @return */ - List getDatas(); + List getProperties(); /** - * 获取输出项值集合,返回{@code null}或空表示没有输出项值。 + * 获取指定名称的属性,没有则返回{@code null}。 * - * @return - */ - Map getExportValues(); - - /** - * 获取{@linkplain #getDatas()}中单条数据指定名称的属性值。 - * - * @param data * @param name * @return + */ + DataSetProperty getProperty(String name); + + /** + * 获取参数列表。 + *

+ * 返回{@code null}或空列表,表示没有。 + *

+ * + * @return + */ + List getParams(); + + /** + * 获取指定名称的参数,没有则返回{@code null}。 + * + * @param name + * @return + */ + DataSetParam getParam(String name); + + /** + * 获取输出列表。 + *

+ * 返回{@code null}或空列表,表示没有。 + *

+ * + * @return + */ + List getExports(); + + /** + * 获取指定名称的输出,没有则返回{@code null}。 + * + * @param name + * @return + */ + DataSetExport getExport(String name); + + /** + * 获取{@linkplain DataSetResult}。 + * + * @param paramValues + * 由{@linkplain #getParams()}所描述的参数值映射表,其关键字是{@linkplain DataSetParam#getName()} + * @return * @throws DataSetException */ - Object getDataPropertyValue(Object data, String name) throws DataSetException; + DataSetResult getResult(Map paramValues) throws DataSetException; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetExport.java b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetExport.java index c0851656..83367641 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetExport.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetExport.java @@ -12,7 +12,7 @@ import java.io.Serializable; /** * 数据集输出项。 *

- * 此类描述{@linkplain DataSetFactory}创建的{@linkplain DataSet}可输出的数据信息。 + * 此类描述{@linkplain DataSet}创建的{@linkplain DataSetResult}可输出的数据信息。 *

* * @author datagear@163.com @@ -35,12 +35,12 @@ public abstract class DataSetExport extends DataNameAndType implements Serializa /** * 获取输出项值。 * - * @param dataSetFactory * @param dataSet + * @param dataSetResult * @return * @throws DataSetException */ - public abstract Object getExportValue(DataSetFactory dataSetFactory, DataSet dataSet) throws DataSetException; + public abstract Object getExportValue(DataSet dataSet, DataSetResult dataSetResult) throws DataSetException; @Override public String toString() diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetFactory.java b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetFactory.java deleted file mode 100644 index 9362a144..00000000 --- a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetFactory.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2018 datagear.tech. All Rights Reserved. - */ - -package org.datagear.analysis; - -import java.util.List; -import java.util.Map; - -/** - * 数据集工厂。 - * - * @author datagear@163.com - * - */ -public interface DataSetFactory extends Identifiable -{ - /** - * 获取属性列表。 - *

- * 此列表描述{@linkplain #getDataSet(DataSetParamValues)}返回的{@linkplain DataSet#getDatas()}元素的属性信息。 - *

- * - * @return - */ - List getProperties(); - - /** - * 获取指定名称的属性,没有则返回{@code null}。 - * - * @param name - * @return - */ - DataSetProperty getProperty(String name); - - /** - * 获取参数列表。 - *

- * 返回{@code null}或空列表,表示没有。 - *

- * - * @return - */ - List getParams(); - - /** - * 获取指定名称的参数,没有则返回{@code null}。 - * - * @param name - * @return - */ - DataSetParam getParam(String name); - - /** - * 获取输出列表。 - *

- * 返回{@code null}或空列表,表示没有。 - *

- * - * @return - */ - List getExports(); - - /** - * 获取指定名称的输出,没有则返回{@code null}。 - * - * @param name - * @return - */ - DataSetExport getExport(String name); - - /** - * 获取{@linkplain DataSet}。 - * - * @param paramValues - * 由{@linkplain #getParams()}所描述的参数值映射表,其关键字是{@linkplain DataSetParam#getName()} - * @return - * @throws DataSetException - */ - DataSet getDataSet(Map paramValues) throws DataSetException; -} diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetParam.java b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetParam.java index 85ecdd90..1e0d1e2c 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetParam.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetParam.java @@ -7,7 +7,7 @@ package org.datagear.analysis; /** * 数据集参数。 *

- * 此类描述{@linkplain DataSetFactory}创建{@linkplain DataSet}所需要的输入参数信息。 + * 此类描述{@linkplain DataSet}创建{@linkplain DataSetResult}所需要的输入参数信息。 *

* * @author datagear@163.com diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DataSetResult.java b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetResult.java new file mode 100644 index 00000000..016a9700 --- /dev/null +++ b/datagear-analysis/src/main/java/org/datagear/analysis/DataSetResult.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018 datagear.tech. All Rights Reserved. + */ + +package org.datagear.analysis; + +import java.util.List; +import java.util.Map; + +/** + * 数据集结果。 + * + * @author datagear@163.com + * + */ +public interface DataSetResult +{ + /** + * 获取数据列表。 + * + * @return + */ + List getDatas(); + + /** + * 获取输出项值集合,返回{@code null}或空表示没有输出项值。 + * + * @return + */ + Map getExportValues(); + + /** + * 获取{@linkplain #getDatas()}中单条数据指定名称的属性值。 + * + * @param data + * @param name + * @return + * @throws DataSetException + */ + Object getDataPropertyValue(Object data, String name) throws DataSetException; +} diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DataSign.java b/datagear-analysis/src/main/java/org/datagear/analysis/DataSign.java index f686ae7e..ff108f6a 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/DataSign.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/DataSign.java @@ -17,7 +17,7 @@ import org.datagear.util.i18n.Label; /** * 数据标记。 *

- * {@linkplain ChartPlugin}使用此类标记{@linkplain DataSetFactory}产生的数据,并依此进行图表绘制。 + * {@linkplain ChartPlugin}使用此类标记{@linkplain DataSet}产生的数据,并依此进行图表绘制。 *

* * @author datagear@163.com diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractDataSetFactory.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractDataSet.java similarity index 84% rename from datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractDataSetFactory.java rename to datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractDataSet.java index dfde9b02..91371aad 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractDataSetFactory.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractDataSet.java @@ -14,20 +14,20 @@ import java.util.Map; import org.datagear.analysis.AbstractIdentifiable; import org.datagear.analysis.DataNameAndType; -import org.datagear.analysis.DataSet; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.DataSetException; import org.datagear.analysis.DataSetExport; -import org.datagear.analysis.DataSetFactory; +import org.datagear.analysis.DataSet; import org.datagear.analysis.DataSetParam; import org.datagear.analysis.DataSetProperty; /** - * 抽象{@linkplain DataSetFactory}。 + * 抽象{@linkplain DataSet}。 * * @author datagear@163.com * */ -public abstract class AbstractDataSetFactory extends AbstractIdentifiable implements DataSetFactory +public abstract class AbstractDataSet extends AbstractIdentifiable implements DataSet { private List properties; @@ -35,12 +35,12 @@ public abstract class AbstractDataSetFactory extends AbstractIdentifiable implem private List exports; - public AbstractDataSetFactory() + public AbstractDataSet() { super(); } - public AbstractDataSetFactory(String id, List properties) + public AbstractDataSet(String id, List properties) { super(id); this.properties = properties; @@ -115,7 +115,7 @@ public abstract class AbstractDataSetFactory extends AbstractIdentifiable implem * @return * @throws DataSetException */ - protected Map getExportValues(DataSet dataSet) throws DataSetException + protected Map getExportValues(DataSetResult dataSetResult) throws DataSetException { if (!hasExport()) return null; @@ -124,7 +124,7 @@ public abstract class AbstractDataSetFactory extends AbstractIdentifiable implem for (DataSetExport expt : this.exports) { - Object value = expt.getExportValue(this, dataSet); + Object value = expt.getExportValue(this, dataSetResult); exportValues.put(expt.getName(), value); } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidget.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidget.java index 45fb1228..b2059613 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidget.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidget.java @@ -9,7 +9,7 @@ import java.util.Map; import org.datagear.analysis.AbstractIdentifiable; import org.datagear.analysis.Chart; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; import org.datagear.analysis.RenderContext; @@ -39,7 +39,7 @@ public class ChartWidget extends AbstractIdentifiable private Map chartPropertyValues = new HashMap(); - private ChartDataSetFactory[] chartDataSetFactories = new ChartDataSetFactory[0]; + private ChartDataSet[] chartDataSets = new ChartDataSet[0]; /** 图表更新间隔毫秒数 */ private int updateInterval = -1; @@ -49,12 +49,12 @@ public class ChartWidget extends AbstractIdentifiable super(); } - public ChartWidget(String id, String name, ChartPlugin chartPlugin, ChartDataSetFactory... chartDataSetFactories) + public ChartWidget(String id, String name, ChartPlugin chartPlugin, ChartDataSet... chartDataSets) { super(id); this.name = name; this.chartPlugin = chartPlugin; - this.chartDataSetFactories = chartDataSetFactories; + this.chartDataSets = chartDataSets; } public String getName() @@ -87,14 +87,14 @@ public class ChartWidget extends AbstractIdentifiable this.chartPropertyValues = chartPropertyValues; } - public ChartDataSetFactory[] getChartDataSetFactories() + public ChartDataSet[] getChartDataSets() { - return chartDataSetFactories; + return chartDataSets; } - public void setChartDataSetFactories(ChartDataSetFactory[] chartDataSetFactories) + public void setChartDataSets(ChartDataSet[] chartDataSets) { - this.chartDataSetFactories = chartDataSetFactories; + this.chartDataSets = chartDataSets; } /** @@ -140,7 +140,7 @@ public class ChartWidget extends AbstractIdentifiable if (this.chartPropertyValues != null) propertyValues.putAll(this.chartPropertyValues); - return this.chartPlugin.renderChart(renderContext, propertyValues, this.chartDataSetFactories); + return this.chartPlugin.renderChart(renderContext, propertyValues, this.chartDataSets); } /** diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolver.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolver.java index 9281c720..e438b6da 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolver.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolver.java @@ -678,8 +678,8 @@ public class JsonChartPluginPropertiesResolver dataSign.setOccurRequired(convertToBoolean(map.get(DATA_SIGN_PROPERTY_OCCUR_REQUIRED), true)); dataSign.setOccurMultiple(convertToBoolean(map.get(DATA_SIGN_PROPERTY_OCCUR_MULTIPLE), true)); - dataSign.setNameLabel(convertToLabel(map.get(CHART_PROPERTY_NAME_LABEL))); - dataSign.setDescLabel(convertToLabel(map.get(CHART_PROPERTY_DESC_LABEL))); + dataSign.setNameLabel(convertToLabel(map.get(DATA_SIGN_PROPERTY_NAME_LABEL))); + dataSign.setDescLabel(convertToLabel(map.get(DATA_SIGN_PROPERTY_DESC_LABEL))); return dataSign; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/MacroDataSetExport.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/MacroDataSetExport.java index df5b9c28..cd36dc89 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/MacroDataSetExport.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/MacroDataSetExport.java @@ -11,10 +11,10 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.List; -import org.datagear.analysis.DataSet; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.DataSetException; import org.datagear.analysis.DataSetExport; -import org.datagear.analysis.DataSetFactory; +import org.datagear.analysis.DataSet; import org.datagear.analysis.DataSetProperty; import org.datagear.analysis.DataType; import org.datagear.util.StringUtil; @@ -36,7 +36,7 @@ import org.datagear.util.StringUtil; *
  • SUM(columnName):总和columnName列值;
  • * *

    - * “FIRST”、“LAST”、“MAX”、“MIN”、“AVG”、“SUM”不区分大小写,columnName必须在所属的{@linkplain DataSetFactory#getExports()}中。 + * “FIRST”、“LAST”、“MAX”、“MIN”、“AVG”、“SUM”不区分大小写,columnName必须在所属的{@linkplain DataSet#getExports()}中。 *

    * * @author datagear@163.com @@ -92,28 +92,28 @@ public class MacroDataSetExport extends DataSetExport } @Override - public Object getExportValue(DataSetFactory dataSetFactory, DataSet dataSet) throws DataSetException + public Object getExportValue(DataSet dataSet, DataSetResult dataSetResult) throws DataSetException { Macro macro = resolveMacro(getMacro()); - return getExportValue(dataSetFactory, dataSet, macro, getMacro()); + return getExportValue(dataSet, dataSetResult, macro, getMacro()); } /** * 获取指定宏的输出值。 * - * @param dataSetFactory * @param dataSet + * @param dataSetResult * @param macro * @param macroString * @return * @throws DataSetException */ - protected Object getExportValue(DataSetFactory dataSetFactory, DataSet dataSet, Macro macro, String macroString) + protected Object getExportValue(DataSet dataSet, DataSetResult dataSetResult, Macro macro, String macroString) throws DataSetException { String macroName = macro.getName(); String propertyName = macro.getProperty(); - List datas = dataSet.getDatas(); + List datas = dataSetResult.getDatas(); boolean isEmptyData = (datas == null || datas.isEmpty()); if (MACRO_FIRST.equalsIgnoreCase(macroName)) @@ -121,27 +121,27 @@ public class MacroDataSetExport extends DataSetExport if (isEmptyData) return null; - getDataSetPropertyNotNull(dataSetFactory, propertyName); + getDataSetPropertyNotNull(dataSet, propertyName); Object first = datas.get(0); - return dataSet.getDataPropertyValue(first, propertyName); + return dataSetResult.getDataPropertyValue(first, propertyName); } else if (MACRO_LAST.equalsIgnoreCase(macroName)) { if (isEmptyData) return null; - getDataSetPropertyNotNull(dataSetFactory, propertyName); + getDataSetPropertyNotNull(dataSet, propertyName); Object last = datas.get(datas.size() - 1); - return dataSet.getDataPropertyValue(last, propertyName); + return dataSetResult.getDataPropertyValue(last, propertyName); } else if (MACRO_MAX.equalsIgnoreCase(macroName)) { if (isEmptyData) return null; - DataSetProperty property = getDataSetPropertyNotNull(dataSetFactory, propertyName); + DataSetProperty property = getDataSetPropertyNotNull(dataSet, propertyName); if (!DataType.isNumber(property.getType())) throw new MacroEvalException(macroString, "Property [" + propertyName + "] must be number type"); @@ -151,7 +151,7 @@ public class MacroDataSetExport extends DataSetExport for (int i = 0, len = datas.size(); i < len; i++) { Object row = datas.get(i); - BigDecimal my = DataType.castBigDecimal(dataSet.getDataPropertyValue(row, propertyName)); + BigDecimal my = DataType.castBigDecimal(dataSetResult.getDataPropertyValue(row, propertyName)); if (my == null) continue; @@ -166,7 +166,7 @@ public class MacroDataSetExport extends DataSetExport if (isEmptyData) return null; - DataSetProperty property = getDataSetPropertyNotNull(dataSetFactory, propertyName); + DataSetProperty property = getDataSetPropertyNotNull(dataSet, propertyName); if (!DataType.isNumber(property.getType())) throw new MacroEvalException(macroString, "Property [" + propertyName + "] must be number type"); @@ -176,7 +176,7 @@ public class MacroDataSetExport extends DataSetExport for (int i = 0, len = datas.size(); i < len; i++) { Object row = datas.get(i); - BigDecimal my = DataType.castBigDecimal(dataSet.getDataPropertyValue(row, propertyName)); + BigDecimal my = DataType.castBigDecimal(dataSetResult.getDataPropertyValue(row, propertyName)); if (my == null) continue; @@ -191,7 +191,7 @@ public class MacroDataSetExport extends DataSetExport if (isEmptyData) return null; - DataSetProperty columnMeta = getDataSetPropertyNotNull(dataSetFactory, propertyName); + DataSetProperty columnMeta = getDataSetPropertyNotNull(dataSet, propertyName); if (!DataType.isNumber(columnMeta.getType())) throw new MacroEvalException(macroString, "Property [" + propertyName + "] must be number type"); @@ -202,7 +202,7 @@ public class MacroDataSetExport extends DataSetExport for (int i = 0; i < len; i++) { Object row = datas.get(i); - BigDecimal my = DataType.castBigDecimal(dataSet.getDataPropertyValue(row, propertyName)); + BigDecimal my = DataType.castBigDecimal(dataSetResult.getDataPropertyValue(row, propertyName)); if (my == null) continue; @@ -219,7 +219,7 @@ public class MacroDataSetExport extends DataSetExport if (isEmptyData) return null; - DataSetProperty columnMeta = getDataSetPropertyNotNull(dataSetFactory, propertyName); + DataSetProperty columnMeta = getDataSetPropertyNotNull(dataSet, propertyName); if (!DataType.isNumber(columnMeta.getType())) throw new MacroEvalException(macroString, "Property [" + propertyName + "] must be number type"); @@ -229,7 +229,7 @@ public class MacroDataSetExport extends DataSetExport for (int i = 0, len = datas.size(); i < len; i++) { Object row = datas.get(i); - BigDecimal my = DataType.castBigDecimal(dataSet.getDataPropertyValue(row, propertyName)); + BigDecimal my = DataType.castBigDecimal(dataSetResult.getDataPropertyValue(row, propertyName)); if (my == null) continue; @@ -240,21 +240,21 @@ public class MacroDataSetExport extends DataSetExport return sum; } else - return getExportValueExt(dataSetFactory, dataSet, macro, macroString); + return getExportValueExt(dataSet, dataSetResult, macro, macroString); } /** * 获取扩展宏的输出值。 * - * @param dataSetFactory * @param dataSet + * @param dataSetResult * @param macro * @param macroString * @return * @throws DataSetException * @throws UnsupportedMacroException */ - protected Object getExportValueExt(DataSetFactory dataSetFactory, DataSet dataSet, Macro macro, String macroString) + protected Object getExportValueExt(DataSet dataSet, DataSetResult dataSetResult, Macro macro, String macroString) throws DataSetException, UnsupportedMacroException { throw new UnsupportedMacroException(macroString); @@ -263,14 +263,14 @@ public class MacroDataSetExport extends DataSetExport /** * 获取指定名称的{@linkplain ColumnMeta},没有则抛出异常。 * - * @param dataSetFactory + * @param dataSet * @param name * @return */ - protected DataSetProperty getDataSetPropertyNotNull(DataSetFactory dataSetFactory, String name) + protected DataSetProperty getDataSetPropertyNotNull(DataSet dataSet, String name) throws DataSetPropertyNotFoundException { - DataSetProperty columnMeta = dataSetFactory.getProperty(name); + DataSetProperty columnMeta = dataSet.getProperty(name); if (columnMeta == null) throw new DataSetPropertyNotFoundException(name); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/MapDataSet.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/MapDataSet.java index 4d123665..245edb80 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/MapDataSet.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/MapDataSet.java @@ -10,11 +10,11 @@ package org.datagear.analysis.support; import java.util.List; import java.util.Map; -import org.datagear.analysis.DataSet; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.DataSetException; /** - * 映射表{@linkplain DataSet}。 + * 映射表{@linkplain DataSetResult}。 *

    * 它的{@linkplain #getDatas()}元素为映射表对象。 *

    @@ -22,7 +22,7 @@ import org.datagear.analysis.DataSetException; * @author datagear@163.com * */ -public class MapDataSet implements DataSet +public class MapDataSet implements DataSetResult { private List> datas; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/SqlDataSetFactory.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/SqlDataSet.java similarity index 76% rename from datagear-analysis/src/main/java/org/datagear/analysis/support/SqlDataSetFactory.java rename to datagear-analysis/src/main/java/org/datagear/analysis/support/SqlDataSet.java index 07d8b0f4..feb2f47f 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/SqlDataSetFactory.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/SqlDataSet.java @@ -13,9 +13,9 @@ import java.sql.SQLException; import java.util.List; import java.util.Map; -import org.datagear.analysis.DataSet; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.DataSetException; -import org.datagear.analysis.DataSetFactory; +import org.datagear.analysis.DataSet; import org.datagear.analysis.DataSetParam; import org.datagear.analysis.DataSetProperty; import org.datagear.analysis.support.ParameterSqlResolver.ParameterSql; @@ -24,16 +24,16 @@ import org.datagear.util.JdbcUtil.QueryResultSet; import org.datagear.util.resource.ConnectionFactory; /** - * SQL {@linkplain DataSetFactory}。 + * SQL {@linkplain DataSet}。 *

    * 它的{@linkplain #setSql(String)}中可以包含${parameter}格式的参数(parameter必须是在{@linkplain #getParams()}中预定义的), - * 在{@linkplain #getDataSet(DataSetParamValues)}中会被替换为具体的参数值。 + * 在{@linkplain #getResult(DataSetParamValues)}中会被替换为具体的参数值。 *

    * * @author datagear@163.com * */ -public class SqlDataSetFactory extends AbstractDataSetFactory +public class SqlDataSet extends AbstractDataSet { protected static final SqlDataSetSupport SQL_DATA_SET_SUPPORT = new SqlDataSetSupport(); @@ -41,12 +41,12 @@ public class SqlDataSetFactory extends AbstractDataSetFactory private String sql; - public SqlDataSetFactory() + public SqlDataSet() { super(); } - public SqlDataSetFactory(String id, List properties, ConnectionFactory connectionFactory, + public SqlDataSet(String id, List properties, ConnectionFactory connectionFactory, String sql) { super(id, properties); @@ -75,7 +75,7 @@ public class SqlDataSetFactory extends AbstractDataSetFactory } @Override - public DataSet getDataSet(Map paramValues) throws DataSetException + public DataSetResult getResult(Map paramValues) throws DataSetException { Connection cn = null; @@ -106,14 +106,14 @@ public class SqlDataSetFactory extends AbstractDataSetFactory } /** - * 获取指定SQL的{@linkplain DataSet}。 + * 获取指定SQL的{@linkplain DataSetResult}。 * * @param cn * @param sql * @param paramValues * @return */ - protected DataSet getDataSet(Connection cn, String sql, Map paramValues) throws DataSetException + protected DataSetResult getDataSet(Connection cn, String sql, Map paramValues) throws DataSetException { ParameterSql parameterSql = getSqlDataSetSupport().resolveParameterSql(sql); sql = parameterSql.getSql(); @@ -139,14 +139,14 @@ public class SqlDataSetFactory extends AbstractDataSetFactory } /** - * 将{@linkplain ResultSet}转换为{@linkplain DataSet}。 + * 将{@linkplain ResultSet}转换为{@linkplain DataSetResult}。 * * @param cn * @param rs * @return * @throws SQLException */ - public DataSet toDataSet(Connection cn, ResultSet rs) throws SQLException + public DataSetResult toDataSet(Connection cn, ResultSet rs) throws SQLException { List> datas = getSqlDataSetSupport().resolveDatas(cn, rs, getProperties()); MapDataSet dataSet = new MapDataSet(datas); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChart.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChart.java index 32100560..f8c6cfde 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChart.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChart.java @@ -10,7 +10,7 @@ package org.datagear.analysis.support.html; import java.util.Map; import org.datagear.analysis.Chart; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.RenderContext; @@ -32,10 +32,10 @@ public class HtmlChart extends Chart } public HtmlChart(String id, HtmlRenderContext renderContext, ChartPlugin chartPlugin, - Map chartPropertyValues, ChartDataSetFactory[] chartDataSetFactories, String elementId, + Map chartPropertyValues, ChartDataSet[] chartDataSets, String elementId, String varName) { - super(id, renderContext, chartPlugin, chartPropertyValues, chartDataSetFactories); + super(id, renderContext, chartPlugin, chartPropertyValues, chartDataSets); this.elementId = elementId; this.varName = varName; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPlugin.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPlugin.java index 2a1c785c..482734b3 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPlugin.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPlugin.java @@ -13,7 +13,7 @@ import java.io.Reader; import java.io.Writer; import java.util.Map; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderException; import org.datagear.analysis.support.AbstractChartPlugin; @@ -53,10 +53,10 @@ import org.datagear.util.i18n.Label; * id : "...", * elementId : "[图表HTML元素ID]", * varName : "[图表变量名]", - * plugin : "插件ID", + * plugin : { id : "插件ID", ... }, * renderContext : { attributes : {...} }, * propertyValues : {...}, - * dataSetFactories : [{...}, ...] + * chartDataSets : [{...}, ...] * }; * [图表脚本内容] * [图表变量名].render(); @@ -109,6 +109,8 @@ import org.datagear.util.i18n.Label; */ public class HtmlChartPlugin extends AbstractChartPlugin { + protected static final HtmlChartScriptObjectWriter HTML_CHART_SCRIPT_OBJECT_WRITER = new HtmlChartScriptObjectWriter(); + /** 默认图表对象引用占位符 */ public static final String DEFAULT_SCRIPT_CHART_REF_PLACEHOLDER = "$CHART"; @@ -136,8 +138,6 @@ public class HtmlChartPlugin extends AbstractChartP /** 图表脚本换行符 */ private String newLine = "\r\n"; - private HtmlChartScriptObjectWriter htmlChartScriptObjectWriter = new HtmlChartScriptObjectWriter(); - public HtmlChartPlugin() { super(); @@ -199,19 +199,9 @@ public class HtmlChartPlugin extends AbstractChartP this.newLine = newLine; } - public HtmlChartScriptObjectWriter getHtmlChartScriptObjectWriter() - { - return htmlChartScriptObjectWriter; - } - - public void setHtmlChartScriptObjectWriter(HtmlChartScriptObjectWriter htmlChartScriptObjectWriter) - { - this.htmlChartScriptObjectWriter = htmlChartScriptObjectWriter; - } - @Override - public HtmlChart renderChart(T renderContext, Map chartPropertyValues, - ChartDataSetFactory... chartDataSetFactories) throws RenderException + public HtmlChart renderChart(T renderContext, Map chartPropertyValues, ChartDataSet... chartDataSets) + throws RenderException { boolean notRenderElement = HtmlRenderAttributes.getChartNotRenderElement(renderContext); String chartElementId = HtmlRenderAttributes.getChartElementId(renderContext); @@ -240,7 +230,7 @@ public class HtmlChartPlugin extends AbstractChartP chartVarName = HtmlRenderAttributes.generateChartVarName(nextSequence); } - HtmlChart chart = new HtmlChart(IDUtil.uuid(), renderContext, this, chartPropertyValues, chartDataSetFactories, + HtmlChart chart = new HtmlChart(IDUtil.uuid(), renderContext, this, chartPropertyValues, chartDataSets, chartElementId, chartVarName); try @@ -333,10 +323,15 @@ public class HtmlChartPlugin extends AbstractChartP */ protected void writeChartScriptObject(T renderContext, HtmlChart chart) throws IOException { - this.htmlChartScriptObjectWriter.write(renderContext.getWriter(), chart, + getHtmlChartScriptObjectWriter().write(renderContext.getWriter(), chart, HtmlRenderAttributes.getChartRenderContextVarName(renderContext)); } + protected HtmlChartScriptObjectWriter getHtmlChartScriptObjectWriter() + { + return HTML_CHART_SCRIPT_OBJECT_WRITER; + } + /** * 写图表脚本内容。 * diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java index dbac6f35..205d89cd 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java @@ -14,18 +14,18 @@ import java.util.Map; import org.datagear.analysis.AbstractIdentifiable; import org.datagear.analysis.Chart; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartProperty; import org.datagear.analysis.DataSet; import org.datagear.analysis.DataSetException; -import org.datagear.analysis.DataSetFactory; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.DataSign; import org.datagear.analysis.Icon; import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderException; import org.datagear.analysis.RenderStyle; -import org.datagear.analysis.support.AbstractDataSetFactory; +import org.datagear.analysis.support.AbstractDataSet; import org.datagear.util.StringUtil; import org.datagear.util.i18n.Label; @@ -95,7 +95,7 @@ public class HtmlChartScriptObjectWriter extends AbstractHtmlScriptObjectWriter ? new AttributesHtmlRenderContext(htmlChart.getRenderContext()) : new RefHtmlRenderContext(chartRenderContextVarName)), new IdChartPlugin(htmlChart.getPlugin()), htmlChart.getPropertyValues(), - JsonChartDataSetFactory.valuesOf(htmlChart.getChartDataSetFactories()), htmlChart.getElementId(), + JsonChartDataSet.valuesOf(htmlChart.getChartDataSets()), htmlChart.getElementId(), htmlChart.getVarName()); } } @@ -169,45 +169,45 @@ public class HtmlChartScriptObjectWriter extends AbstractHtmlScriptObjectWriter @Override public Chart renderChart(RenderContext renderContext, Map chartPropertyValues, - ChartDataSetFactory... chartDataSetFactories) throws RenderException + ChartDataSet... chartDataSets) throws RenderException { throw new UnsupportedOperationException(); } } - protected static class JsonChartDataSetFactory extends ChartDataSetFactory + protected static class JsonChartDataSet extends ChartDataSet { - public JsonChartDataSetFactory(DataSetFactory dataSetFactory, List dataSigns) + public JsonChartDataSet(ChartDataSet chartDataSet) { - super(new JsonDataSetFactory(dataSetFactory), dataSigns); + super(new JsonDataSet(chartDataSet.getDataSet())); + setPropertySigns(chartDataSet.getPropertySigns()); } - public static JsonChartDataSetFactory[] valuesOf(ChartDataSetFactory[] chartDataSetFactories) + public static JsonChartDataSet[] valuesOf(ChartDataSet[] chartDataSets) { - if (chartDataSetFactories == null) + if (chartDataSets == null) return null; - JsonChartDataSetFactory[] jsonDataSetFactories = new JsonChartDataSetFactory[chartDataSetFactories.length]; + JsonChartDataSet[] jsonDataSets = new JsonChartDataSet[chartDataSets.length]; - for (int i = 0; i < chartDataSetFactories.length; i++) - jsonDataSetFactories[i] = new JsonChartDataSetFactory(chartDataSetFactories[i].getDataSetFactory(), - chartDataSetFactories[i].getDataSigns()); + for (int i = 0; i < chartDataSets.length; i++) + jsonDataSets[i] = new JsonChartDataSet(chartDataSets[i]); - return jsonDataSetFactories; + return jsonDataSets; } } - protected static class JsonDataSetFactory extends AbstractDataSetFactory + protected static class JsonDataSet extends AbstractDataSet { - public JsonDataSetFactory(DataSetFactory dataSetFactory) + public JsonDataSet(DataSet dataSet) { - super(dataSetFactory.getId(), dataSetFactory.getProperties()); - setParams(dataSetFactory.getParams()); - setExports(dataSetFactory.getExports()); + super(dataSet.getId(), dataSet.getProperties()); + setParams(dataSet.getParams()); + setExports(dataSet.getExports()); } @Override - public DataSet getDataSet(Map paramValues) throws DataSetException + public DataSetResult getResult(Map paramValues) throws DataSetException { return null; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartWidget.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartWidget.java index b43f0523..dc546b7c 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartWidget.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartWidget.java @@ -7,7 +7,7 @@ */ package org.datagear.analysis.support.html; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.RenderException; import org.datagear.analysis.support.ChartWidget; @@ -26,9 +26,9 @@ public class HtmlChartWidget extends ChartWidget } public HtmlChartWidget(String id, String name, HtmlChartPlugin chartPlugin, - ChartDataSetFactory... chartDataSetFactories) + ChartDataSet... chartDataSets) { - super(id, name, chartPlugin, chartDataSetFactories); + super(id, name, chartPlugin, chartDataSets); } @Override diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolverTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolverTest.java index 1dfb7ba5..05473052 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolverTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/JsonChartPluginPropertiesResolverTest.java @@ -8,7 +8,7 @@ import java.util.Map; import java.util.Set; import org.datagear.analysis.Chart; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartProperty; import org.datagear.analysis.DataSign; import org.datagear.analysis.PropertyType; @@ -209,7 +209,7 @@ public class JsonChartPluginPropertiesResolverTest @Override public Chart renderChart(RenderContext renderContext, Map chartPropertyValues, - ChartDataSetFactory... chartDataSetFactories) throws RenderException + ChartDataSet... chartDataSets) throws RenderException { throw new UnsupportedOperationException(); } diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/SqlDataSetFactoryTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/SqlDataSetTest.java similarity index 76% rename from datagear-analysis/src/test/java/org/datagear/analysis/support/SqlDataSetFactoryTest.java rename to datagear-analysis/src/test/java/org/datagear/analysis/support/SqlDataSetTest.java index 106a4504..8e78f14b 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/SqlDataSetFactoryTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/SqlDataSetTest.java @@ -14,7 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.datagear.analysis.DataSet; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.DataSetParam; import org.datagear.analysis.DataSetProperty; import org.datagear.analysis.DataType; @@ -24,20 +24,20 @@ import org.junit.Assert; import org.junit.Test; /** - * {@linkplain SqlDataSetFactory}单元测试类。 + * {@linkplain SqlDataSet}单元测试类。 * * @author datagear@163.com * */ -public class SqlDataSetFactoryTest extends DBTestSupport +public class SqlDataSetTest extends DBTestSupport { @Test - public void getDataSetTest() throws Exception + public void getResultTest() throws Exception { Connection cn = null; long recordId = 999999999; - String recordName = SqlDataSetFactory.class.getSimpleName(); + String recordName = SqlDataSet.class.getSimpleName(); try { @@ -66,17 +66,17 @@ public class SqlDataSetFactoryTest extends DBTestSupport List dataSetParams = Arrays.asList(new DataSetParam("id", DataType.INTEGER, true), new DataSetParam("name", DataType.STRING, true)); - SqlDataSetFactory sqlDataSetFactory = new SqlDataSetFactory("1", dataSetProperties, connectionFactory, sql); - sqlDataSetFactory.setParams(dataSetParams); + SqlDataSet sqlDataSet = new SqlDataSet("1", dataSetProperties, connectionFactory, sql); + sqlDataSet.setParams(dataSetParams); Map dataSetParamValues = new HashMap(); dataSetParamValues.put("id", recordId); dataSetParamValues.put("name", "name-for-test"); - DataSet dataSet = sqlDataSetFactory.getDataSet(dataSetParamValues); + DataSetResult dataSetResult = sqlDataSet.getResult(dataSetParamValues); @SuppressWarnings("unchecked") - List> datas = (List>) dataSet.getDatas(); + List> datas = (List>) dataSetResult.getDatas(); Assert.assertEquals(1, datas.size()); diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlChartPluginTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlChartPluginTest.java index 09aeabf9..dc8e6ea6 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlChartPluginTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlChartPluginTest.java @@ -12,7 +12,7 @@ import java.io.StringWriter; import java.util.Locale; import java.util.Map; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.RenderStyle; import org.datagear.analysis.support.JsonChartPluginPropertiesResolver; import org.datagear.analysis.support.LocationResource; @@ -45,8 +45,8 @@ public class HtmlChartPluginTest HtmlRenderAttributes.setChartTheme(renderContext, SimpleDashboardThemeSource.THEME_LIGHT.getChartTheme()); HtmlRenderAttributes.setLocale(renderContext, Locale.getDefault()); - htmlChartPlugin.renderChart(renderContext, null, (ChartDataSetFactory[]) null); - htmlChartPlugin.renderChart(renderContext, null, (ChartDataSetFactory[]) null); + htmlChartPlugin.renderChart(renderContext, null, (ChartDataSet[]) null); + htmlChartPlugin.renderChart(renderContext, null, (ChartDataSet[]) null); String html = stringWriter.toString(); @@ -70,7 +70,7 @@ public class HtmlChartPluginTest DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), stringWriter); HtmlRenderAttributes.setChartRenderContextVarName(renderContext, "chartRenderContext"); - htmlChartPlugin.renderChart(renderContext, null, (ChartDataSetFactory[]) null); + htmlChartPlugin.renderChart(renderContext, null, (ChartDataSet[]) null); String html = stringWriter.toString(); diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetFmkRendererTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetFmkRendererTest.java index b9434439..9438dfc7 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetFmkRendererTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetFmkRendererTest.java @@ -9,7 +9,7 @@ package org.datagear.analysis.support.html; import java.io.StringWriter; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.RenderStyle; import org.datagear.analysis.support.DashboardWidgetResManager; import org.datagear.analysis.support.SimpleChartWidgetSource; @@ -34,7 +34,7 @@ public class HtmlTplDashboardWidgetFmkRendererTest HtmlChartPlugin chartPlugin = HtmlChartPluginTest.createHtmlChartPlugin(); HtmlChartWidget htmlChartWidget = new HtmlChartWidget("chart-widget-01", - "chart-widget-01", chartPlugin, (ChartDataSetFactory[]) null); + "chart-widget-01", chartPlugin, (ChartDataSet[]) null); DashboardWidgetResManager resManager = new DashboardWidgetResManager( "src/test/resources/org/datagear/analysis/support/html/htmlTplDashboardWidgets/freemarker"); diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java index b406e66b..dfda946f 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java @@ -11,7 +11,7 @@ import java.io.StringWriter; import java.util.ArrayList; import java.util.List; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.RenderStyle; import org.datagear.analysis.support.DashboardWidgetResManager; import org.datagear.analysis.support.SimpleChartWidgetSource; @@ -47,7 +47,7 @@ public class HtmlTplDashboardWidgetHtmlRendererTest HtmlChartPlugin chartPlugin = HtmlChartPluginTest.createHtmlChartPlugin(); HtmlChartWidget htmlChartWidget = new HtmlChartWidget("chart-widget-01", - "chart-widget-01", chartPlugin, (ChartDataSetFactory[]) null); + "chart-widget-01", chartPlugin, (ChartDataSet[]) null); DashboardWidgetResManager resManager = new DashboardWidgetResManager( "src/test/resources/org/datagear/analysis/support/html/htmlTplDashboardWidgets/html"); diff --git a/datagear-management/src/main/java/org/datagear/management/domain/HtmlChartWidgetEntity.java b/datagear-management/src/main/java/org/datagear/management/domain/HtmlChartWidgetEntity.java index 69f79f8e..46a03fbc 100644 --- a/datagear-management/src/main/java/org/datagear/management/domain/HtmlChartWidgetEntity.java +++ b/datagear-management/src/main/java/org/datagear/management/domain/HtmlChartWidgetEntity.java @@ -8,12 +8,14 @@ package org.datagear.management.domain; import java.util.Date; +import java.util.Locale; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.support.ChartWidget; import org.datagear.analysis.support.html.HtmlChartPlugin; import org.datagear.analysis.support.html.HtmlChartWidget; import org.datagear.analysis.support.html.HtmlRenderContext; +import org.datagear.util.i18n.Label; /** * HTML {@linkplain ChartWidget}实体。 @@ -38,17 +40,20 @@ public class HtmlChartWidgetEntity extends HtmlChartWidget /** 权限 */ private int dataPermission = PERMISSION_NOT_LOADED; + /** 插件名称,展示用 */ + private String chartPluginName = ""; + public HtmlChartWidgetEntity() { super(); - super.setChartDataSetFactories(new ChartDataSetFactory[0]); + super.setChartDataSets(new ChartDataSet[0]); this.createTime = new Date(); } public HtmlChartWidgetEntity(String id, String name, HtmlChartPlugin chartPlugin, - ChartDataSetFactory[] chartDataSetFactories, User createUser) + ChartDataSet[] chartDataSets, User createUser) { - super(id, name, chartPlugin, chartDataSetFactories); + super(id, name, chartPlugin, chartDataSets); this.createUser = createUser; this.createTime = new Date(); } @@ -96,4 +101,29 @@ public class HtmlChartWidgetEntity extends HtmlChartWidget { this.dataPermission = dataPermission; } + + public String getChartPluginName() + { + return chartPluginName; + } + + public void setChartPluginName(String chartPluginName) + { + this.chartPluginName = chartPluginName; + } + + public void updateChartPluginName(Locale locale) + { + String name = null; + HtmlChartPlugin plugin = getHtmlChartPlugin(); + + if (plugin != null) + { + Label nameLabel = plugin.getNameLabel(); + if (nameLabel != null) + name = nameLabel.getValue(locale); + } + + setChartPluginName(name); + } } diff --git a/datagear-management/src/main/java/org/datagear/management/domain/SqlDataSetFactoryEntity.java b/datagear-management/src/main/java/org/datagear/management/domain/SqlDataSetEntity.java similarity index 78% rename from datagear-management/src/main/java/org/datagear/management/domain/SqlDataSetFactoryEntity.java rename to datagear-management/src/main/java/org/datagear/management/domain/SqlDataSetEntity.java index 7ddfd2a8..a1ec14f7 100644 --- a/datagear-management/src/main/java/org/datagear/management/domain/SqlDataSetFactoryEntity.java +++ b/datagear-management/src/main/java/org/datagear/management/domain/SqlDataSetEntity.java @@ -11,17 +11,16 @@ import java.util.Date; import java.util.List; import org.datagear.analysis.DataSetProperty; -import org.datagear.analysis.support.SqlDataSetFactory; +import org.datagear.analysis.support.SqlDataSet; import org.datagear.util.resource.ConnectionFactory; /** - * {@linkplain SqlDataSetFactoryEntity}实体。 + * {@linkplain SqlDataSetEntity}实体。 * * @author datagear@163.com * */ -public class SqlDataSetFactoryEntity extends SqlDataSetFactory - implements CreateUserEntity, DataPermissionEntity +public class SqlDataSetEntity extends SqlDataSet implements CreateUserEntity, DataPermissionEntity { private static final long serialVersionUID = 1L; @@ -40,14 +39,14 @@ public class SqlDataSetFactoryEntity extends SqlDataSetFactory /** 权限 */ private int dataPermission = PERMISSION_NOT_LOADED; - public SqlDataSetFactoryEntity() + public SqlDataSetEntity() { super(); this.createTime = new Date(); } - public SqlDataSetFactoryEntity(String id, List properties, - SchemaConnectionFactory connectionFactory, String sql, String name, User createUser) + public SqlDataSetEntity(String id, List properties, SchemaConnectionFactory connectionFactory, + String sql, String name, User createUser) { super(id, properties, connectionFactory, sql); this.name = name; diff --git a/datagear-management/src/main/java/org/datagear/management/service/SqlDataSetEntityService.java b/datagear-management/src/main/java/org/datagear/management/service/SqlDataSetEntityService.java new file mode 100644 index 00000000..4fcc6d40 --- /dev/null +++ b/datagear-management/src/main/java/org/datagear/management/service/SqlDataSetEntityService.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2018 datagear.tech. All Rights Reserved. + */ + +/** + * + */ +package org.datagear.management.service; + +import org.datagear.analysis.support.SqlDataSet; +import org.datagear.management.domain.SqlDataSetEntity; + +/** + * {@linkplain SqlDataSetEntity}业务服务接口。 + * + * @author datagear@163.com + * + */ +public interface SqlDataSetEntityService extends DataPermissionEntityService +{ + /** + * 获取可用于执行分析的{@linkplain SqlDataSet}。 + * + * @param id + * @return + */ + SqlDataSet getSqlDataSet(String id); +} diff --git a/datagear-management/src/main/java/org/datagear/management/service/SqlDataSetFactoryEntityService.java b/datagear-management/src/main/java/org/datagear/management/service/SqlDataSetFactoryEntityService.java deleted file mode 100644 index c8f8e086..00000000 --- a/datagear-management/src/main/java/org/datagear/management/service/SqlDataSetFactoryEntityService.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2018 datagear.tech. All Rights Reserved. - */ - -/** - * - */ -package org.datagear.management.service; - -import org.datagear.analysis.support.SqlDataSetFactory; -import org.datagear.management.domain.SqlDataSetFactoryEntity; - -/** - * {@linkplain SqlDataSetFactoryEntity}业务服务接口。 - * - * @author datagear@163.com - * - */ -public interface SqlDataSetFactoryEntityService extends DataPermissionEntityService -{ - /** - * 获取可用于执行分析的{@linkplain SqlDataSetFactory}。 - * - * @param id - * @return - */ - SqlDataSetFactory getSqlDataSetFactory(String id); -} diff --git a/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java b/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java index f5a85989..a3260eca 100644 --- a/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java +++ b/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java @@ -8,14 +8,18 @@ package org.datagear.management.service.impl; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.ibatis.session.SqlSessionFactory; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; -import org.datagear.analysis.DataSetFactory; +import org.datagear.analysis.DataSet; import org.datagear.analysis.RenderContext; import org.datagear.analysis.support.ChartWidget; import org.datagear.analysis.support.html.HtmlChartPlugin; @@ -25,10 +29,12 @@ import org.datagear.management.domain.User; import org.datagear.management.service.AuthorizationService; import org.datagear.management.service.HtmlChartWidgetEntityService; import org.datagear.management.service.PermissionDeniedException; -import org.datagear.management.service.SqlDataSetFactoryEntityService; +import org.datagear.management.service.SqlDataSetEntityService; import org.datagear.util.StringUtil; import org.mybatis.spring.SqlSessionTemplate; +import com.alibaba.fastjson.JSON; + /** * {@linkplain HtmlChartWidgetEntityService}实现类。 * @@ -45,7 +51,7 @@ public class HtmlChartWidgetEntityServiceImpl private ChartPluginManager chartPluginManager; - private SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService; + private SqlDataSetEntityService sqlDataSetEntityService; private AuthorizationService authorizationService; @@ -55,21 +61,21 @@ public class HtmlChartWidgetEntityServiceImpl } public HtmlChartWidgetEntityServiceImpl(SqlSessionFactory sqlSessionFactory, ChartPluginManager chartPluginManager, - SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService, AuthorizationService authorizationService) + SqlDataSetEntityService sqlDataSetEntityService, AuthorizationService authorizationService) { super(sqlSessionFactory); this.chartPluginManager = chartPluginManager; - this.sqlDataSetFactoryEntityService = sqlDataSetFactoryEntityService; + this.sqlDataSetEntityService = sqlDataSetEntityService; this.authorizationService = authorizationService; } public HtmlChartWidgetEntityServiceImpl(SqlSessionTemplate sqlSessionTemplate, - ChartPluginManager chartPluginManager, SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService, + ChartPluginManager chartPluginManager, SqlDataSetEntityService sqlDataSetEntityService, AuthorizationService authorizationService) { super(sqlSessionTemplate); this.chartPluginManager = chartPluginManager; - this.sqlDataSetFactoryEntityService = sqlDataSetFactoryEntityService; + this.sqlDataSetEntityService = sqlDataSetEntityService; this.authorizationService = authorizationService; } @@ -83,14 +89,14 @@ public class HtmlChartWidgetEntityServiceImpl this.chartPluginManager = chartPluginManager; } - public SqlDataSetFactoryEntityService getSqlDataSetFactoryEntityService() + public SqlDataSetEntityService getSqlDataSetEntityService() { - return sqlDataSetFactoryEntityService; + return sqlDataSetEntityService; } - public void setSqlDataSetFactoryEntityService(SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService) + public void setSqlDataSetEntityService(SqlDataSetEntityService sqlDataSetEntityService) { - this.sqlDataSetFactoryEntityService = sqlDataSetFactoryEntityService; + this.sqlDataSetEntityService = sqlDataSetEntityService; } public AuthorizationService getAuthorizationService() @@ -112,8 +118,6 @@ public class HtmlChartWidgetEntityServiceImpl if (entity == null) return null; - postProcessSelect(entity); - return (ChartWidget) entity; } @@ -135,7 +139,7 @@ public class HtmlChartWidgetEntityServiceImpl boolean success = super.add(entity, params); if (success) - saveWidgetDataSetFactoryRelations(entity); + saveWidgetDataSetRelations(entity); return success; } @@ -146,7 +150,7 @@ public class HtmlChartWidgetEntityServiceImpl boolean success = super.update(entity, params); if (success) - saveWidgetDataSetFactoryRelations(entity); + saveWidgetDataSetRelations(entity); return success; } @@ -162,15 +166,15 @@ public class HtmlChartWidgetEntityServiceImpl return deleted; } - protected void saveWidgetDataSetFactoryRelations(HtmlChartWidgetEntity entity) + protected void saveWidgetDataSetRelations(HtmlChartWidgetEntity entity) { deleteMybatis("deleteDataSetRelationById", entity.getId()); - List relations = WidgetDataSetFactoryRelation.valuesOf(entity); + List relations = getWidgetDataSetRelations(entity); if (!relations.isEmpty()) { - for (WidgetDataSetFactoryRelation relation : relations) + for (WidgetDataSetRelation relation : relations) insertMybatis("insertDataSetRelation", relation); } } @@ -179,7 +183,20 @@ public class HtmlChartWidgetEntityServiceImpl protected void postProcessSelects(List list) { // 查询操作仅用于展示,不必完全加载 - // super.postProcessSelects(list); + if (list == null) + return; + + for (HtmlChartWidgetEntity e : list) + { + HtmlChartPlugin plugin = e.getHtmlChartPlugin(); + + if (plugin != null) + { + HtmlChartPlugin full = getHtmlChartPlugin(plugin.getId()); + plugin.setNameLabel(full.getNameLabel()); + plugin.setDescLabel(full.getDescLabel()); + } + } } @Override @@ -189,48 +206,7 @@ public class HtmlChartWidgetEntityServiceImpl return; setHtmlChartPlugin(obj); - setChartDataSetFactories(obj); - } - - protected void setChartDataSetFactories(HtmlChartWidgetEntity widget) - { - List relations = selectListMybatis("getDataSetRelations", widget.getId()); - - ChartDataSetFactory[] chartDataSetFactories = new ChartDataSetFactory[relations.size()]; - - for (int i = 0; i < relations.size(); i++) - { - WidgetDataSetFactoryRelation relation = relations.get(i); - - DataSetFactory dataSetFactory = this.sqlDataSetFactoryEntityService - .getSqlDataSetFactory(relation.getDataSetFactoryId()); - - if (dataSetFactory == null) - continue; - - ChartDataSetFactory chartDataSetFactory = new ChartDataSetFactory(); - chartDataSetFactory.setDataSetFactory(dataSetFactory); - chartDataSetFactory.setDataSigns(widget.getChartPlugin(), relation.splitDataSigns()); - - chartDataSetFactories[i] = chartDataSetFactory; - } - - widget.setChartDataSetFactories(chartDataSetFactories); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected void setHtmlChartPlugin(HtmlChartWidgetEntity obj) - { - HtmlChartPlugin htmlChartPlugin = obj.getHtmlChartPlugin(); - - if (htmlChartPlugin != null) - { - htmlChartPlugin = (HtmlChartPlugin) (ChartPlugin) this.chartPluginManager - .get(htmlChartPlugin.getId()); - - obj.setHtmlChartPlugin(htmlChartPlugin); - } - + setChartDataSets(obj); } @Override @@ -245,27 +221,149 @@ public class HtmlChartWidgetEntityServiceImpl return SQL_NAMESPACE; } - public static class WidgetDataSetFactoryRelation + protected void setHtmlChartPlugin(HtmlChartWidgetEntity obj) + { + HtmlChartPlugin htmlChartPlugin = obj.getHtmlChartPlugin(); + + if (htmlChartPlugin != null) + { + htmlChartPlugin = getHtmlChartPlugin(htmlChartPlugin.getId()); + obj.setHtmlChartPlugin(htmlChartPlugin); + } + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + protected HtmlChartPlugin getHtmlChartPlugin(String id) + { + return (HtmlChartPlugin) (ChartPlugin) this.chartPluginManager.get(id); + } + + protected void setChartDataSets(HtmlChartWidgetEntity widget) + { + Map sqlParams = buildParamMapWithIdentifierQuoteParameter(); + sqlParams.put("widgetId", widget.getId()); + + List relations = selectListMybatis("getDataSetRelations", sqlParams); + + List chartDataSets = new ArrayList(relations.size()); + + for (int i = 0; i < relations.size(); i++) + { + ChartDataSet chartDataSet = toChartDataSet(relations.get(i)); + + if (chartDataSet != null) + chartDataSets.add(chartDataSet); + } + + widget.setChartDataSets(chartDataSets.toArray(new ChartDataSet[chartDataSets.size()])); + } + + protected ChartDataSet toChartDataSet(WidgetDataSetRelation relation) + { + if (relation == null || StringUtil.isEmpty(relation.getDataSetId())) + return null; + + DataSet dataSet = this.sqlDataSetEntityService.getSqlDataSet(relation.getDataSetId()); + + if (dataSet == null) + return null; + + ChartDataSet chartDataSet = new ChartDataSet(dataSet); + chartDataSet.setPropertySigns(toPropertySigns(relation.getPropertySignsJson())); + + return chartDataSet; + } + + protected Map> toPropertySigns(String json) + { + Map> propertySigns = new HashMap>(); + + if (!StringUtil.isEmpty(json)) + { + @SuppressWarnings("unchecked") + Map jsonMap = (Map) JSON.parse(json); + + for (Map.Entry entry : jsonMap.entrySet()) + { + Set signs = new HashSet(); + + Object valueObj = entry.getValue(); + + if (valueObj instanceof String) + signs.add((String) valueObj); + else if (valueObj instanceof Collection) + { + @SuppressWarnings("unchecked") + Collection valueCollection = (Collection) valueObj; + signs.addAll(valueCollection); + } + else if (valueObj instanceof Object[]) + { + Object[] valueArray = (Object[]) valueObj; + for (Object value : valueArray) + { + if (value instanceof String) + signs.add((String) value); + } + } + + propertySigns.put(entry.getKey(), signs); + } + } + + return propertySigns; + } + + protected List getWidgetDataSetRelations(HtmlChartWidgetEntity obj) + { + List list = new ArrayList(); + + if (obj == null) + return list; + + ChartDataSet[] chartDataSets = obj.getChartDataSets(); + + if (chartDataSets == null) + return list; + + for (int i = 0; i < chartDataSets.length; i++) + { + ChartDataSet chartDataSet = chartDataSets[i]; + + String propertySignsJson = ""; + if (chartDataSet.hasPropertySign()) + propertySignsJson = JSON.toJSONString(chartDataSet.getPropertySigns()); + + WidgetDataSetRelation relation = new WidgetDataSetRelation(obj.getId(), chartDataSet.getDataSet().getId(), + i + 1); + relation.setPropertySignsJson(propertySignsJson); + + list.add(relation); + } + + return list; + } + + public static class WidgetDataSetRelation { private String widgetId; - private String dataSetFactoryId; + private String dataSetId; - private String dataSignsText; + private String propertySignsJson; private int order; - public WidgetDataSetFactoryRelation() + public WidgetDataSetRelation() { super(); } - public WidgetDataSetFactoryRelation(String widgetId, String dataSetFactoryId, String dataSignsText, int order) + public WidgetDataSetRelation(String widgetId, String dataSetId, int order) { super(); this.widgetId = widgetId; - this.dataSetFactoryId = dataSetFactoryId; - this.dataSignsText = dataSignsText; + this.dataSetId = dataSetId; this.order = order; } @@ -279,37 +377,24 @@ public class HtmlChartWidgetEntityServiceImpl this.widgetId = widgetId; } - public String getDataSetFactoryId() + public String getDataSetId() { - return dataSetFactoryId; + return dataSetId; } - public void setDataSetFactoryId(String dataSetFactoryId) + public void setDataSetId(String dataSetId) { - this.dataSetFactoryId = dataSetFactoryId; + this.dataSetId = dataSetId; } - public String getDataSignsText() + public String getPropertySignsJson() { - return dataSignsText; + return propertySignsJson; } - public void setDataSignsText(String dataSignsText) + public void setPropertySignsJson(String propertySignsJson) { - this.dataSignsText = dataSignsText; - } - - /** - * 拆分{@linkplain #getDataSignsText()}。 - * - * @return - */ - public String[] splitDataSigns() - { - if (this.dataSignsText == null) - return new String[0]; - - return StringUtil.split(this.dataSignsText, DATA_SIGN_SPLITTER, true); + this.propertySignsJson = propertySignsJson; } public int getOrder() @@ -321,31 +406,5 @@ public class HtmlChartWidgetEntityServiceImpl { this.order = order; } - - public static List valuesOf(HtmlChartWidgetEntity obj) - { - List list = new ArrayList(); - - if (obj == null) - return list; - - ChartDataSetFactory[] chartDataSetFactories = obj.getChartDataSetFactories(); - - if (chartDataSetFactories == null) - return list; - - for (int i = 0; i < chartDataSetFactories.length; i++) - { - ChartDataSetFactory chartDataSetFactory = chartDataSetFactories[i]; - - WidgetDataSetFactoryRelation relation = new WidgetDataSetFactoryRelation(obj.getId(), - chartDataSetFactory.getDataSetFactory().getId(), - chartDataSetFactory.getDataSignNamesText(DATA_SIGN_SPLITTER), i + 1); - - list.add(relation); - } - - return list; - } } } diff --git a/datagear-management/src/main/java/org/datagear/management/service/impl/SqlDataSetFactoryEntityServiceImpl.java b/datagear-management/src/main/java/org/datagear/management/service/impl/SqlDataSetEntityServiceImpl.java similarity index 60% rename from datagear-management/src/main/java/org/datagear/management/service/impl/SqlDataSetFactoryEntityServiceImpl.java rename to datagear-management/src/main/java/org/datagear/management/service/impl/SqlDataSetEntityServiceImpl.java index 657a1366..c8c69942 100644 --- a/datagear-management/src/main/java/org/datagear/management/service/impl/SqlDataSetFactoryEntityServiceImpl.java +++ b/datagear-management/src/main/java/org/datagear/management/service/impl/SqlDataSetEntityServiceImpl.java @@ -12,32 +12,31 @@ import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSessionFactory; +import org.datagear.analysis.DataSet; import org.datagear.analysis.DataSetExport; -import org.datagear.analysis.DataSetFactory; import org.datagear.analysis.DataSetParam; import org.datagear.analysis.DataSetProperty; -import org.datagear.analysis.support.SqlDataSetFactory; +import org.datagear.analysis.support.SqlDataSet; import org.datagear.connection.ConnectionSource; import org.datagear.management.domain.SchemaConnectionFactory; -import org.datagear.management.domain.SqlDataSetFactoryEntity; +import org.datagear.management.domain.SqlDataSetEntity; import org.datagear.management.domain.User; import org.datagear.management.service.AuthorizationService; import org.datagear.management.service.PermissionDeniedException; import org.datagear.management.service.SchemaService; -import org.datagear.management.service.SqlDataSetFactoryEntityService; +import org.datagear.management.service.SqlDataSetEntityService; import org.mybatis.spring.SqlSessionTemplate; /** - * {@linkplain SqlDataSetFactoryEntityService}实现类。 + * {@linkplain SqlDataSetEntityService}实现类。 * * @author datagear@163.com * */ -public class SqlDataSetFactoryEntityServiceImpl - extends AbstractMybatisDataPermissionEntityService - implements SqlDataSetFactoryEntityService +public class SqlDataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntityService + implements SqlDataSetEntityService { - protected static final String SQL_NAMESPACE = SqlDataSetFactoryEntity.class.getName(); + protected static final String SQL_NAMESPACE = SqlDataSetEntity.class.getName(); private ConnectionSource connectionSource; @@ -45,12 +44,12 @@ public class SqlDataSetFactoryEntityServiceImpl private AuthorizationService authorizationService; - public SqlDataSetFactoryEntityServiceImpl() + public SqlDataSetEntityServiceImpl() { super(); } - public SqlDataSetFactoryEntityServiceImpl(SqlSessionFactory sqlSessionFactory, ConnectionSource connectionSource, + public SqlDataSetEntityServiceImpl(SqlSessionFactory sqlSessionFactory, ConnectionSource connectionSource, SchemaService schemaService, AuthorizationService authorizationService) { super(sqlSessionFactory); @@ -59,7 +58,7 @@ public class SqlDataSetFactoryEntityServiceImpl this.authorizationService = authorizationService; } - public SqlDataSetFactoryEntityServiceImpl(SqlSessionTemplate sqlSessionTemplate, ConnectionSource connectionSource, + public SqlDataSetEntityServiceImpl(SqlSessionTemplate sqlSessionTemplate, ConnectionSource connectionSource, SchemaService schemaService, AuthorizationService authorizationService) { super(sqlSessionTemplate); @@ -99,29 +98,36 @@ public class SqlDataSetFactoryEntityServiceImpl } @Override - public SqlDataSetFactory getSqlDataSetFactory(String id) + public SqlDataSet getSqlDataSet(String id) { - return getById(id); + SqlDataSetEntity entity = getById(id); + + SchemaConnectionFactory connectionFactory = entity.getConnectionFactory(); + + connectionFactory.setSchema(this.schemaService.getById(connectionFactory.getSchema().getId())); + connectionFactory.setConnectionSource(this.connectionSource); + + return entity; } @Override - protected boolean add(SqlDataSetFactoryEntity entity, Map params) + protected boolean add(SqlDataSetEntity entity, Map params) { boolean success = super.add(entity, params); if (success) - saveDataSetFactoryChildren(entity); + saveDataSetChildren(entity); return success; } @Override - protected boolean update(SqlDataSetFactoryEntity entity, Map params) + protected boolean update(SqlDataSetEntity entity, Map params) { boolean success = super.update(entity, params); if (success) - saveDataSetFactoryChildren(entity); + saveDataSetChildren(entity); return success; } @@ -129,11 +135,11 @@ public class SqlDataSetFactoryEntityServiceImpl @Override public String getResourceType() { - return SqlDataSetFactoryEntity.AUTHORIZATION_RESOURCE_TYPE; + return SqlDataSetEntity.AUTHORIZATION_RESOURCE_TYPE; } @Override - public SqlDataSetFactoryEntity getByStringId(User user, String id) throws PermissionDeniedException + public SqlDataSetEntity getByStringId(User user, String id) throws PermissionDeniedException { return super.getById(user, id); } @@ -145,32 +151,27 @@ public class SqlDataSetFactoryEntityServiceImpl if (deleted) { - this.authorizationService.deleteByResource(SqlDataSetFactoryEntity.AUTHORIZATION_RESOURCE_TYPE, id); + this.authorizationService.deleteByResource(SqlDataSetEntity.AUTHORIZATION_RESOURCE_TYPE, id); } return deleted; } @Override - protected void postProcessSelects(List list) + protected void postProcessSelects(List list) { // XXX 查询操作仅用于展示,不必完全加载 // super.postProcessSelects(list); } @Override - protected void postProcessSelect(SqlDataSetFactoryEntity obj) + protected void postProcessSelect(SqlDataSetEntity obj) { if (obj == null) return; - SchemaConnectionFactory connectionFactory = obj.getConnectionFactory(); - - connectionFactory.setSchema(this.schemaService.getById(connectionFactory.getSchema().getId())); - connectionFactory.setConnectionSource(this.connectionSource); - Map sqlParams = buildParamMapWithIdentifierQuoteParameter(); - sqlParams.put("dataSetFactoryId", obj.getId()); + sqlParams.put("dataSetId", obj.getId()); List propertyPOs = selectListMybatis("getPropertyPOs", sqlParams); List dataSetProperties = DataSetPropertyPO.to(propertyPOs); @@ -197,14 +198,14 @@ public class SqlDataSetFactoryEntityServiceImpl return SQL_NAMESPACE; } - protected void saveDataSetFactoryChildren(SqlDataSetFactory entity) + protected void saveDataSetChildren(SqlDataSet entity) { saveDataSetPropertyPOs(entity); saveDataSetParamPOs(entity); saveDataSetExportPOs(entity); } - protected void saveDataSetPropertyPOs(SqlDataSetFactory entity) + protected void saveDataSetPropertyPOs(SqlDataSet entity) { deleteMybatis("deletePropertyPOs", entity.getId()); @@ -217,7 +218,7 @@ public class SqlDataSetFactoryEntityServiceImpl } } - protected void saveDataSetParamPOs(SqlDataSetFactory entity) + protected void saveDataSetParamPOs(SqlDataSet entity) { deleteMybatis("deleteParamPOs", entity.getId()); @@ -230,7 +231,7 @@ public class SqlDataSetFactoryEntityServiceImpl } } - protected void saveDataSetExportPOs(SqlDataSetFactory entity) + protected void saveDataSetExportPOs(SqlDataSet entity) { deleteMybatis("deleteExportPOs", entity.getId()); @@ -243,33 +244,33 @@ public class SqlDataSetFactoryEntityServiceImpl } } - public static abstract class DataSetFactoryChildPO + public static abstract class DataSetChildPO { - private String dataSetFactoryId; + private String dataSetId; private T child; private int order = 0; - public DataSetFactoryChildPO() + public DataSetChildPO() { super(); } - public DataSetFactoryChildPO(String dataSetFactoryId, T child, int order) + public DataSetChildPO(String dataSetId, T child, int order) { super(); - this.dataSetFactoryId = dataSetFactoryId; + this.dataSetId = dataSetId; this.child = child; this.order = order; } - public String getDataSetFactoryId() + public String getDataSetId() { - return dataSetFactoryId; + return dataSetId; } - public void setDataSetFactoryId(String dataSetFactoryId) + public void setDataSetId(String dataSetId) { - this.dataSetFactoryId = dataSetFactoryId; + this.dataSetId = dataSetId; } public T getChild() @@ -292,13 +293,13 @@ public class SqlDataSetFactoryEntityServiceImpl this.order = order; } - public static List to(List> pos) + public static List to(List> pos) { List childs = new ArrayList(); if (pos != null) { - for (DataSetFactoryChildPO po : pos) + for (DataSetChildPO po : pos) childs.add(po.getChild()); } @@ -306,16 +307,16 @@ public class SqlDataSetFactoryEntityServiceImpl } } - public static class DataSetPropertyPO extends DataSetFactoryChildPO + public static class DataSetPropertyPO extends DataSetChildPO { public DataSetPropertyPO() { super(); } - public DataSetPropertyPO(String dataSetFactoryId, DataSetProperty child, int order) + public DataSetPropertyPO(String dataSetId, DataSetProperty child, int order) { - super(dataSetFactoryId, child, order); + super(dataSetId, child, order); } @Override @@ -330,17 +331,17 @@ public class SqlDataSetFactoryEntityServiceImpl super.setChild(child); } - public static List from(DataSetFactory dataSetFactory) + public static List from(DataSet dataSet) { List pos = new ArrayList(); - List properties = dataSetFactory.getProperties(); + List properties = dataSet.getProperties(); if (properties != null) { for (int i = 0; i < properties.size(); i++) { - DataSetPropertyPO po = new DataSetPropertyPO(dataSetFactory.getId(), properties.get(i), i); + DataSetPropertyPO po = new DataSetPropertyPO(dataSet.getId(), properties.get(i), i); pos.add(po); } } @@ -349,16 +350,16 @@ public class SqlDataSetFactoryEntityServiceImpl } } - public static class DataSetParamPO extends DataSetFactoryChildPO + public static class DataSetParamPO extends DataSetChildPO { public DataSetParamPO() { super(); } - public DataSetParamPO(String dataSetFactoryId, DataSetParam child, int order) + public DataSetParamPO(String dataSetId, DataSetParam child, int order) { - super(dataSetFactoryId, child, order); + super(dataSetId, child, order); } @Override @@ -373,17 +374,17 @@ public class SqlDataSetFactoryEntityServiceImpl super.setChild(child); } - public static List from(DataSetFactory dataSetFactory) + public static List from(DataSet dataSet) { List pos = new ArrayList(); - List params = dataSetFactory.getParams(); + List params = dataSet.getParams(); if (params != null) { for (int i = 0; i < params.size(); i++) { - DataSetParamPO po = new DataSetParamPO(dataSetFactory.getId(), params.get(i), i); + DataSetParamPO po = new DataSetParamPO(dataSet.getId(), params.get(i), i); pos.add(po); } } @@ -392,16 +393,16 @@ public class SqlDataSetFactoryEntityServiceImpl } } - public static class DataSetExportPO extends DataSetFactoryChildPO + public static class DataSetExportPO extends DataSetChildPO { public DataSetExportPO() { super(); } - public DataSetExportPO(String dataSetFactoryId, DataSetExport child, int order) + public DataSetExportPO(String dataSetId, DataSetExport child, int order) { - super(dataSetFactoryId, child, order); + super(dataSetId, child, order); } @Override @@ -416,17 +417,17 @@ public class SqlDataSetFactoryEntityServiceImpl super.setChild(child); } - public static List from(DataSetFactory dataSetFactory) + public static List from(DataSet dataSet) { List pos = new ArrayList(); - List exports = dataSetFactory.getExports(); + List exports = dataSet.getExports(); if (exports != null) { for (int i = 0; i < exports.size(); i++) { - DataSetExportPO po = new DataSetExportPO(dataSetFactory.getId(), exports.get(i), i); + DataSetExportPO po = new DataSetExportPO(dataSet.getId(), exports.get(i), i); pos.add(po); } } diff --git a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql index e78d211b..25f3a187 100644 --- a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql +++ b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql @@ -163,38 +163,38 @@ ALTER TABLE DATAGEAR_SQL_HISTORY ADD FOREIGN KEY (SQLHIS_SCHEMA_ID) REFERENCES D --version[1.5.0], DO NOT EDIT THIS LINE! ----------------------------------------- ---数据集 -CREATE TABLE DATAGEAR_DATA_SET_FACTORY +--SQL数据集 +CREATE TABLE DATAGEAR_SQL_DATA_SET ( - DSF_ID VARCHAR(50) NOT NULL, - DSF_NAME VARCHAR(100) NOT NULL, - DSF_SCHEMA_ID VARCHAR(50) NOT NULL, - DSF_SQL VARCHAR(1000) NOT NULL, - DSF_CREATE_USER_ID VARCHAR(50), - DSF_CREATE_TIME TIMESTAMP, - PRIMARY KEY (DSF_ID) + DS_ID VARCHAR(50) NOT NULL, + DS_NAME VARCHAR(100) NOT NULL, + DS_SCHEMA_ID VARCHAR(50) NOT NULL, + DS_SQL VARCHAR(1000) NOT NULL, + DS_CREATE_USER_ID VARCHAR(50), + DS_CREATE_TIME TIMESTAMP, + PRIMARY KEY (DS_ID) ); -ALTER TABLE DATAGEAR_DATA_SET_FACTORY ADD FOREIGN KEY (DSF_SCHEMA_ID) REFERENCES DATAGEAR_SCHEMA (SCHEMA_ID); +ALTER TABLE DATAGEAR_SQL_DATA_SET ADD FOREIGN KEY (DS_SCHEMA_ID) REFERENCES DATAGEAR_SCHEMA (SCHEMA_ID); --数据集属性 -CREATE TABLE DATAGEAR_DATA_SET_FACTORY_PROP +CREATE TABLE DATAGEAR_DATA_SET_PROP ( - PROP_DSF_ID VARCHAR(50) NOT NULL, + PROP_DS_ID VARCHAR(50) NOT NULL, PROP_NAME VARCHAR(100) NOT NULL, PROP_TYPE VARCHAR(50) NOT NULL, PROP_LABEL VARCHAR(100), PROP_ORDER INTEGER ); -ALTER TABLE DATAGEAR_DATA_SET_FACTORY_PROP ADD FOREIGN KEY (PROP_DSF_ID) REFERENCES DATAGEAR_DATA_SET_FACTORY (DSF_ID) ON DELETE CASCADE; +ALTER TABLE DATAGEAR_DATA_SET_PROP ADD FOREIGN KEY (PROP_DS_ID) REFERENCES DATAGEAR_SQL_DATA_SET (DS_ID) ON DELETE CASCADE; -ALTER TABLE DATAGEAR_DATA_SET_FACTORY_PROP ADD CONSTRAINT UK_DSF_PROP_DSF_ID_NAME UNIQUE (PROP_DSF_ID, PROP_NAME); +ALTER TABLE DATAGEAR_DATA_SET_PROP ADD CONSTRAINT UK_DS_PROP_DS_ID_NAME UNIQUE (PROP_DS_ID, PROP_NAME); --数据集参数 -CREATE TABLE DATAGEAR_DATA_SET_FACTORY_PAR +CREATE TABLE DATAGEAR_DATA_SET_PAR ( - PAR_DSF_ID VARCHAR(50) NOT NULL, + PAR_DS_ID VARCHAR(50) NOT NULL, PAR_NAME VARCHAR(100) NOT NULL, PAR_TYPE VARCHAR(100) NOT NULL, PAR_REQUIRED VARCHAR(10), @@ -202,22 +202,22 @@ CREATE TABLE DATAGEAR_DATA_SET_FACTORY_PAR PAR_ORDER INTEGER ); -ALTER TABLE DATAGEAR_DATA_SET_FACTORY_PAR ADD FOREIGN KEY (PAR_DSF_ID) REFERENCES DATAGEAR_DATA_SET_FACTORY (DSF_ID) ON DELETE CASCADE; +ALTER TABLE DATAGEAR_DATA_SET_PAR ADD FOREIGN KEY (PAR_DS_ID) REFERENCES DATAGEAR_SQL_DATA_SET (DS_ID) ON DELETE CASCADE; -ALTER TABLE DATAGEAR_DATA_SET_FACTORY_PAR ADD CONSTRAINT UK_DSF_PAR_DSF_ID_NAME UNIQUE (PAR_DSF_ID, PAR_NAME); +ALTER TABLE DATAGEAR_DATA_SET_PAR ADD CONSTRAINT UK_DS_PAR_DS_ID_NAME UNIQUE (PAR_DS_ID, PAR_NAME); --数据集输出 -CREATE TABLE DATAGEAR_DATA_SET_FACTORY_EXPT +CREATE TABLE DATAGEAR_DATA_SET_EXPT ( - EXPT_DSF_ID VARCHAR(50) NOT NULL, + EXPT_DS_ID VARCHAR(50) NOT NULL, EXPT_NAME VARCHAR(100) NOT NULL, EXPT_TYPE VARCHAR(50) NOT NULL, EXPT_ORDER INTEGER ); -ALTER TABLE DATAGEAR_DATA_SET_FACTORY_EXPT ADD FOREIGN KEY (EXPT_DSF_ID) REFERENCES DATAGEAR_DATA_SET_FACTORY (DSF_ID) ON DELETE CASCADE; +ALTER TABLE DATAGEAR_DATA_SET_EXPT ADD FOREIGN KEY (EXPT_DS_ID) REFERENCES DATAGEAR_SQL_DATA_SET (DS_ID) ON DELETE CASCADE; -ALTER TABLE DATAGEAR_DATA_SET_FACTORY_EXPT ADD CONSTRAINT UK_DSF_EXPT_DSF_ID_NAME UNIQUE (EXPT_DSF_ID, EXPT_NAME); +ALTER TABLE DATAGEAR_DATA_SET_EXPT ADD CONSTRAINT UK_DS_EXPT_DS_ID_NAME UNIQUE (EXPT_DS_ID, EXPT_NAME); --图表 CREATE TABLE DATAGEAR_HTML_CHART_WIDGET @@ -232,19 +232,17 @@ CREATE TABLE DATAGEAR_HTML_CHART_WIDGET ); --图表-数据集信息 -CREATE TABLE DATAGEAR_HCW_DSF +CREATE TABLE DATAGEAR_HCW_DS ( HCW_ID VARCHAR(50) NOT NULL, - DSF_ID VARCHAR(50) NOT NULL, - DATA_SIGNS_TEXT VARCHAR(500), - DSF_ORDER INTEGER + DS_ID VARCHAR(50) NOT NULL, + DS_PROPERTY_SIGNS VARCHAR(500), + DS_ORDER INTEGER ); -ALTER TABLE DATAGEAR_HCW_DSF ADD FOREIGN KEY (HCW_ID) REFERENCES DATAGEAR_HTML_CHART_WIDGET (HCW_ID) ON DELETE CASCADE; +ALTER TABLE DATAGEAR_HCW_DS ADD FOREIGN KEY (HCW_ID) REFERENCES DATAGEAR_HTML_CHART_WIDGET (HCW_ID) ON DELETE CASCADE; -ALTER TABLE DATAGEAR_HCW_DSF ADD FOREIGN KEY (DSF_ID) REFERENCES DATAGEAR_DATA_SET_FACTORY (DSF_ID); - -ALTER TABLE DATAGEAR_HCW_DSF ADD CONSTRAINT UK_HCW_DSF_ID UNIQUE (HCW_ID, DSF_ID); +ALTER TABLE DATAGEAR_HCW_DS ADD FOREIGN KEY (DS_ID) REFERENCES DATAGEAR_SQL_DATA_SET (DS_ID); --看板 CREATE TABLE DATAGEAR_HTML_DASHBOARD diff --git a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml index 08b19e81..6426f880 100644 --- a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml +++ b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml @@ -16,6 +16,17 @@ ) + + INSERT INTO DATAGEAR_HCW_DS + ( + HCW_ID, DS_ID, DS_PROPERTY_SIGNS, DS_ORDER + ) + VALUES + ( + #{widgetId}, #{dataSetId}, #{propertySignsJson, jdbcType=VARCHAR}, #{order} + ) + + UPDATE DATAGEAR_HTML_CHART_WIDGET SET HCW_NAME = #{entity.name}, @@ -31,6 +42,12 @@ HCW_ID = #{id} + + DELETE FROM DATAGEAR_HCW_DS + WHERE + HCW_ID = #{id} + + + + - - DELETE FROM DATAGEAR_HCW_DSF - WHERE - HCW_ID = #{id} - - - - INSERT INTO DATAGEAR_HCW_DSF - ( - HCW_ID, DSF_ID, DATA_SIGNS_TEXT, DSF_ORDER - ) - VALUES - ( - #{widgetId}, #{dataSetFactoryId}, #{dataSignsText}, #{order} - ) - - - - @@ -166,8 +166,6 @@ AND ( ${_iq_}name${_iq_} LIKE #{queryKeyword} - OR ${_iq_}createUser.name${_iq_} LIKE #{queryKeyword} - OR ${_iq_}createUser.realName${_iq_} LIKE #{queryKeyword} ) diff --git a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml index aff60e9f..4e15c02f 100644 --- a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml +++ b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml @@ -94,11 +94,11 @@ INSERT INTO DATAGEAR_HD_DSF ( - HD_ID, DSF_ID, DSF_ORDER + HD_ID, DS_ID, DS_ORDER ) VALUES ( - #{widgetId}, #{dataSetFactoryId}, #{order} + #{widgetId}, #{dataSetId}, #{order} ) @@ -154,8 +154,6 @@ AND ( ${_iq_}name${_iq_} LIKE #{queryKeyword} - OR ${_iq_}createUser.name${_iq_} LIKE #{queryKeyword} - OR ${_iq_}createUser.realName${_iq_} LIKE #{queryKeyword} ) diff --git a/datagear-management/src/main/resources/org/datagear/management/mapper/SqlDataSetFactoryEntityMapper.xml b/datagear-management/src/main/resources/org/datagear/management/mapper/SqlDataSetFactoryEntityMapper.xml index 82537d3f..79d3f28f 100644 --- a/datagear-management/src/main/resources/org/datagear/management/mapper/SqlDataSetFactoryEntityMapper.xml +++ b/datagear-management/src/main/resources/org/datagear/management/mapper/SqlDataSetFactoryEntityMapper.xml @@ -1,13 +1,13 @@ - + - INSERT INTO DATAGEAR_DATA_SET_FACTORY + INSERT INTO DATAGEAR_SQL_DATA_SET ( - DSF_ID, DSF_NAME, DSF_SCHEMA_ID, DSF_SQL, - DSF_CREATE_USER_ID, DSF_CREATE_TIME + DS_ID, DS_NAME, DS_SCHEMA_ID, DS_SQL, + DS_CREATE_USER_ID, DS_CREATE_TIME ) VALUES ( @@ -17,72 +17,72 @@ - INSERT INTO DATAGEAR_DATA_SET_FACTORY_PROP + INSERT INTO DATAGEAR_DATA_SET_PROP ( - PROP_DSF_ID, PROP_NAME, PROP_TYPE, PROP_LABEL, PROP_ORDER + PROP_DS_ID, PROP_NAME, PROP_TYPE, PROP_LABEL, PROP_ORDER ) VALUES ( - #{dataSetFactoryId}, #{child.name}, #{child.type}, #{child.label, jdbcType=VARCHAR}, #{order} + #{dataSetId}, #{child.name}, #{child.type}, #{child.label, jdbcType=VARCHAR}, #{order} ) - INSERT INTO DATAGEAR_DATA_SET_FACTORY_PAR + INSERT INTO DATAGEAR_DATA_SET_PAR ( - PAR_DSF_ID, PAR_NAME, PAR_TYPE, PAR_REQUIRED, PAR_DEFAULT_VALUE, PAR_ORDER + PAR_DS_ID, PAR_NAME, PAR_TYPE, PAR_REQUIRED, PAR_DEFAULT_VALUE, PAR_ORDER ) VALUES ( - #{dataSetFactoryId}, #{child.name}, #{child.type}, #{child.required}, #{child.defaultValue, jdbcType=VARCHAR}, #{order} + #{dataSetId}, #{child.name}, #{child.type}, #{child.required}, #{child.defaultValue, jdbcType=VARCHAR}, #{order} ) - INSERT INTO DATAGEAR_DATA_SET_FACTORY_EXPT + INSERT INTO DATAGEAR_DATA_SET_EXPT ( - EXPT_DSF_ID, EXPT_NAME, EXPT_TYPE, PROP_ORDER + EXPT_DS_ID, EXPT_NAME, EXPT_TYPE, PROP_ORDER ) VALUES ( - #{dataSetFactoryId}, #{child.name}, #{child.type}, #{order} + #{dataSetId}, #{child.name}, #{child.type}, #{order} ) - UPDATE DATAGEAR_DATA_SET_FACTORY SET - DSF_NAME = #{entity.name}, - DSF_SCHEMA_ID = #{entity.schemaConnectionFactory.schema.id}, - DSF_SQL = #{entity.sql} + UPDATE DATAGEAR_SQL_DATA_SET SET + DS_NAME = #{entity.name}, + DS_SCHEMA_ID = #{entity.schemaConnectionFactory.schema.id}, + DS_SQL = #{entity.sql} WHERE - DSF_ID = #{entity.id} + DS_ID = #{entity.id} - DELETE FROM DATAGEAR_DATA_SET_FACTORY + DELETE FROM DATAGEAR_SQL_DATA_SET WHERE - DSF_ID = #{id} + DS_ID = #{id} - DELETE FROM DATAGEAR_DATA_SET_FACTORY_PROP + DELETE FROM DATAGEAR_DATA_SET_PROP WHERE - PROP_DSF_ID = #{dataSetFactoryId} + PROP_DS_ID = #{dataSetId} - DELETE FROM DATAGEAR_DATA_SET_FACTORY_PAR + DELETE FROM DATAGEAR_DATA_SET_PAR WHERE - PAR_DSF_ID = #{dataSetFactoryId} + PAR_DS_ID = #{dataSetId} - DELETE FROM DATAGEAR_DATA_SET_FACTORY_EXPT + DELETE FROM DATAGEAR_DATA_SET_EXPT WHERE - EXPT_DSF_ID = #{dataSetFactoryId} + EXPT_DS_ID = #{dataSetId} - SELECT T.* FROM @@ -91,47 +91,47 @@ T.${_iq_}id${_iq_} = #{id} - SELECT - PROP_DSF_ID AS ${_iq_}dataSetFactoryId${_iq_}, + PROP_DS_ID AS ${_iq_}dataSetId${_iq_}, PROP_NAME AS ${_iq_}child.name${_iq_}, PROP_TYPE AS ${_iq_}child.type${_iq_}, PROP_LABEL AS ${_iq_}child.label${_iq_}, PROP_ORDER AS ${_iq_}order${_iq_} FROM - DATAGEAR_DATA_SET_FACTORY_PROP + DATAGEAR_DATA_SET_PROP WHERE - PROP_DSF_ID = #{dataSetFactoryId} + PROP_DS_ID = #{dataSetId} ORDER BY PROP_ORDER ASC - SELECT - PAR_DSF_ID AS ${_iq_}dataSetFactoryId${_iq_}, + PAR_DS_ID AS ${_iq_}dataSetId${_iq_}, PAR_NAME AS ${_iq_}child.name${_iq_}, PAR_TYPE AS ${_iq_}child.type${_iq_}, PAR_REQUIRED AS ${_iq_}child.required${_iq_}, PAR_DEFAULT_VALUE AS ${_iq_}child.defaultValue${_iq_}, PAR_ORDER AS ${_iq_}order${_iq_} FROM - DATAGEAR_DATA_SET_FACTORY_PAR + DATAGEAR_DATA_SET_PAR WHERE - PAR_DSF_ID = #{dataSetFactoryId} + PAR_DS_ID = #{dataSetId} ORDER BY PAR_ORDER ASC - SELECT - EXPT_DSF_ID AS ${_iq_}dataSetFactoryId${_iq_}, + EXPT_DS_ID AS ${_iq_}dataSetId${_iq_}, EXPT_NAME AS ${_iq_}child.name${_iq_}, EXPT_TYPE AS ${_iq_}child.type${_iq_}, EXPT_ORDER AS ${_iq_}order${_iq_} FROM - DATAGEAR_DATA_SET_FACTORY_EXPT + DATAGEAR_DATA_SET_EXPT WHERE - EXPT_DSF_ID = #{dataSetFactoryId} + EXPT_DS_ID = #{dataSetId} ORDER BY EXPT_ORDER ASC @@ -150,7 +150,7 @@ T.DATA_ID = #{item} - SELECT T.* FROM @@ -169,7 +169,7 @@ - SELECT T.* @@ -205,31 +205,31 @@ SELECT - A.DSF_ID AS DP_AUTH_DATA_ID, - A.DSF_CREATE_USER_ID AS DP_AUTH_DATA_CREATOR_ID + A.DS_ID AS DP_AUTH_DATA_ID, + A.DS_CREATE_USER_ID AS DP_AUTH_DATA_CREATOR_ID FROM - DATAGEAR_DATA_SET_FACTORY A + DATAGEAR_SQL_DATA_SET A SELECT - A.DSF_ID AS ${_iq_}id${_iq_}, - A.DSF_NAME AS ${_iq_}name${_iq_}, + A.DS_ID AS ${_iq_}id${_iq_}, + A.DS_NAME AS ${_iq_}name${_iq_}, B.SCHEMA_ID AS ${_iq_}schemaConnectionFactory.schema.id${_iq_}, B.SCHEMA_TITLE AS ${_iq_}schemaConnectionFactory.schema.title${_iq_}, - A.DSF_SQL AS ${_iq_}sql${_iq_}, + A.DS_SQL AS ${_iq_}sql${_iq_}, , - A.DSF_CREATE_TIME AS ${_iq_}createTime${_iq_} + A.DS_CREATE_TIME AS ${_iq_}createTime${_iq_} FROM - DATAGEAR_DATA_SET_FACTORY A + DATAGEAR_SQL_DATA_SET A INNER JOIN DATAGEAR_SCHEMA B ON - A.DSF_SCHEMA_ID = B.SCHEMA_ID + A.DS_SCHEMA_ID = B.SCHEMA_ID LEFT JOIN DATAGEAR_USER USR ON - A.DSF_CREATE_USER_ID = USR.USER_ID + A.DS_CREATE_USER_ID = USR.USER_ID @@ -238,9 +238,6 @@ AND ( ${_iq_}name${_iq_} LIKE #{queryKeyword} - OR ${_iq_}schemaConnectionFactory.schema.title${_iq_} LIKE #{queryKeyword} - OR ${_iq_}createUser.name${_iq_} LIKE #{queryKeyword} - OR ${_iq_}createUser.realName${_iq_} LIKE #{queryKeyword} ) diff --git a/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java b/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java index 1f935ed0..a47f398f 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java @@ -11,12 +11,18 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Map; import javax.servlet.http.HttpServletRequest; +import org.datagear.analysis.Chart; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; +import org.datagear.analysis.DataSign; import org.datagear.analysis.Icon; +import org.datagear.analysis.RenderException; import org.datagear.analysis.RenderStyle; +import org.datagear.analysis.support.AbstractChartPlugin; import org.datagear.analysis.support.html.DirectoryHtmlChartPluginManager; import org.datagear.analysis.support.html.HtmlChartPlugin; import org.datagear.analysis.support.html.HtmlRenderContext; @@ -61,15 +67,15 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont } /** - * 查找插件信息列表。 + * 查找插件视图对象列表。 * * @param request * @param keyword * @return */ - protected List findHtmlChartPluginInfos(HttpServletRequest request, String keyword) + protected List findHtmlChartPluginVOs(HttpServletRequest request, String keyword) { - List pluginInfos = new ArrayList(); + List pluginViews = new ArrayList(); List> plugins = getDirectoryHtmlChartPluginManager() .getAll(HtmlRenderContext.class); @@ -84,49 +90,71 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont if (plugin instanceof HtmlChartPlugin) { HtmlChartPlugin htmlChartPlugin = (HtmlChartPlugin) plugin; - pluginInfos.add(toHtmlChartPluginInfo(htmlChartPlugin, renderStyle, locale)); + pluginViews.add(toHtmlChartPluginVO(htmlChartPlugin, renderStyle, locale)); } } } - return KeywordMatcher. match(pluginInfos, keyword, - new KeywordMatcher.MatchValue() + return KeywordMatcher. match(pluginViews, keyword, + new KeywordMatcher.MatchValue() { @Override - public String[] get(HtmlChartPluginInfo t) + public String[] get(HtmlChartPluginVO t) { - return new String[] { t.getName(), t.getDesc() }; + return new String[] { (t.getNameLabel() == null ? null : t.getNameLabel().getValue()), + (t.getDescLabel() == null ? null : t.getDescLabel().getValue()) }; } }); } - protected HtmlChartPluginInfo toHtmlChartPluginInfo(HtmlChartPlugin chartPlugin, RenderStyle renderStyle, + protected HtmlChartPluginVO toHtmlChartPluginVO(HtmlChartPlugin chartPlugin, RenderStyle renderStyle, Locale locale) { - HtmlChartPluginInfo pluginInfo = new HtmlChartPluginInfo(); + HtmlChartPluginVO pluginVO = new HtmlChartPluginVO(); - pluginInfo.setId(chartPlugin.getId()); + pluginVO.setId(chartPlugin.getId()); - Label nameLabel = chartPlugin.getNameLabel(); - if (nameLabel != null) - pluginInfo.setName(nameLabel.getValue(locale)); - - Label descLabel = chartPlugin.getDescLabel(); - if (descLabel != null) - pluginInfo.setDesc(descLabel.getValue(locale)); - - Label manualLabel = chartPlugin.getManualLabel(); - if (manualLabel != null) - pluginInfo.setManual(manualLabel.getValue(locale)); + pluginVO.setNameLabel(toConcreteLabel(chartPlugin.getNameLabel(), locale)); + pluginVO.setDescLabel(toConcreteLabel(chartPlugin.getDescLabel(), locale)); + pluginVO.setManualLabel(toConcreteLabel(chartPlugin.getManualLabel(), locale)); Icon icon = chartPlugin.getIcon(renderStyle); - pluginInfo.setHasIcon(icon != null); - if (pluginInfo.isHasIcon()) - pluginInfo.setIconUrl(resolveIconUrl(chartPlugin)); + pluginVO.setHasIcon(icon != null); + if (pluginVO.isHasIcon()) + pluginVO.setIconUrl(resolveIconUrl(chartPlugin)); - pluginInfo.setVersion(chartPlugin.getVersion()); + pluginVO.setVersion(chartPlugin.getVersion()); - return pluginInfo; + List dataSigns = chartPlugin.getDataSigns(); + if (dataSigns != null) + { + List dataSignVOs = new ArrayList(dataSigns.size()); + for (DataSign dataSign : dataSigns) + { + DataSign view = new DataSign(dataSign.getName(), dataSign.isOccurRequired(), + dataSign.isOccurMultiple()); + view.setNameLabel(toConcreteLabel(dataSign.getNameLabel(), locale)); + view.setDescLabel(toConcreteLabel(dataSign.getDescLabel(), locale)); + + dataSignVOs.add(view); + } + + pluginVO.setDataSigns(dataSignVOs); + } + + return pluginVO; + } + + protected Label toConcreteLabel(Label label, Locale locale) + { + if (label == null) + return null; + + String value = label.getValue(locale); + if (value == null) + value = ""; + + return new Label(value); } protected String resolveIconUrl(HtmlChartPlugin plugin) @@ -134,74 +162,28 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont return "/analysis/chartPlugin/icon/" + plugin.getId(); } - public static class HtmlChartPluginInfo implements Serializable + /** + * {@linkplain HtmlChartPlugin}视图对象。 + * + * @author datagear@163.com + * + */ + public static class HtmlChartPluginVO extends AbstractChartPlugin implements Serializable { private static final long serialVersionUID = 1L; - private String id; - - private String name; - - private String desc; - - private String manual; - private boolean hasIcon; private String iconUrl; - private String version; - - public HtmlChartPluginInfo() + public HtmlChartPluginVO() { super(); } - public HtmlChartPluginInfo(String id, String name) + public HtmlChartPluginVO(String id, Label nameLabel) { - super(); - this.id = id; - this.name = name; - } - - public String getId() - { - return id; - } - - public void setId(String id) - { - this.id = id; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getDesc() - { - return desc; - } - - public void setDesc(String desc) - { - this.desc = desc; - } - - public String getManual() - { - return manual; - } - - public void setManual(String manual) - { - this.manual = manual; + super(id, nameLabel); } public boolean isHasIcon() @@ -224,14 +206,11 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont this.iconUrl = iconUrl; } - public String getVersion() + @Override + public Chart renderChart(HtmlRenderContext renderContext, Map chartPropertyValues, + ChartDataSet... chartDataSets) throws RenderException { - return version; - } - - public void setVersion(String version) - { - this.version = version; + throw new UnsupportedOperationException(); } } } diff --git a/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java b/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java index 40f78595..308159c1 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java @@ -18,6 +18,7 @@ import org.datagear.persistence.PersistenceManager; import org.datagear.util.StringUtil; import org.datagear.web.OperationMessage; import org.datagear.web.convert.ClassDataConverter; +import org.datagear.web.freemarker.WriteJsonTemplateDirectiveModel; import org.datagear.web.util.WebUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; @@ -25,6 +26,8 @@ import org.springframework.context.NoSuchMessageException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import freemarker.template.TemplateModel; + /** * 抽象控制器。 * @@ -564,6 +567,17 @@ public abstract class AbstractController return operationMessage; } + /** + * 将对象转换为可作为页面使用<@writeJson var=... />的对象。 + * + * @param object + * @return + */ + protected TemplateModel toWriteJsonTemplateModel(Object object) + { + return WriteJsonTemplateDirectiveModel.toWriteJsonTemplateModel(object); + } + /** * 判断对象、字符串、数组、集合、Map是否为空。 * diff --git a/datagear-web/src/main/java/org/datagear/web/controller/ChartController.java b/datagear-web/src/main/java/org/datagear/web/controller/ChartController.java index 78275566..0c13907b 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/ChartController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/ChartController.java @@ -5,17 +5,18 @@ package org.datagear.web.controller; import java.util.List; +import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.datagear.analysis.ChartDataSetFactory; +import org.datagear.analysis.ChartDataSet; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; import org.datagear.analysis.support.html.HtmlChartPlugin; import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.management.domain.HtmlChartWidgetEntity; -import org.datagear.management.domain.SqlDataSetFactoryEntity; +import org.datagear.management.domain.SqlDataSetEntity; import org.datagear.management.domain.User; import org.datagear.management.service.HtmlChartWidgetEntityService; import org.datagear.persistence.PagingData; @@ -84,17 +85,17 @@ public class ChartController extends AbstractChartPluginAwareController { HtmlChartWidgetEntity chart = new HtmlChartWidgetEntity(); - List pluginInfos = findHtmlChartPluginInfos(request, null); + List pluginVOs = findHtmlChartPluginVOs(request, null); - if (pluginInfos.size() > 0) + if (pluginVOs.size() > 0) { - String defaultChartPluginId = pluginInfos.get(0).getId(); + String defaultChartPluginId = pluginVOs.get(0).getId(); chart.setHtmlChartPlugin((HtmlChartPlugin) this.chartPluginManager . get(defaultChartPluginId)); } model.addAttribute("chart", chart); - model.addAttribute("pluginInfos", pluginInfos); + model.addAttribute("pluginVOs", toWriteJsonTemplateModel(pluginVOs)); model.addAttribute(KEY_TITLE_MESSAGE_KEY, "chart.addChart"); model.addAttribute(KEY_FORM_ACTION, "saveAdd"); @@ -130,10 +131,10 @@ public class ChartController extends AbstractChartPluginAwareController if (chart == null) throw new RecordNotFoundException(); - List pluginInfos = findHtmlChartPluginInfos(request, null); + List pluginVOs = findHtmlChartPluginVOs(request, null); model.addAttribute("chart", chart); - model.addAttribute("pluginInfos", pluginInfos); + model.addAttribute("pluginVOs", toWriteJsonTemplateModel(pluginVOs)); model.addAttribute(KEY_TITLE_MESSAGE_KEY, "chart.editChart"); model.addAttribute(KEY_FORM_ACTION, "saveEdit"); @@ -147,8 +148,6 @@ public class ChartController extends AbstractChartPluginAwareController { User user = WebUtils.getUser(request, response); - entity.setId(IDUtil.uuid()); - entity.setCreateUser(user); inflateHtmlChartWidgetEntity(entity, request); checkSaveEntity(entity); @@ -169,10 +168,10 @@ public class ChartController extends AbstractChartPluginAwareController if (chart == null) throw new RecordNotFoundException(); - List pluginInfos = findHtmlChartPluginInfos(request, null); + List pluginVOs = findHtmlChartPluginVOs(request, null); model.addAttribute("chart", chart); - model.addAttribute("pluginInfos", pluginInfos); + model.addAttribute("pluginVOs", toWriteJsonTemplateModel(pluginVOs)); model.addAttribute(KEY_TITLE_MESSAGE_KEY, "chart.viewChart"); model.addAttribute(KEY_READONLY, true); @@ -222,10 +221,22 @@ public class ChartController extends AbstractChartPluginAwareController PagingQuery pagingQuery = getPagingQuery(request); PagingData pagingData = this.htmlChartWidgetEntityService.pagingQuery(user, pagingQuery); + setChartPluginNames(request, pagingData.getItems()); return pagingData; } + protected void setChartPluginNames(HttpServletRequest request, List entities) + { + if (entities == null) + return; + + Locale locale = WebUtils.getLocale(request); + + for (HtmlChartWidgetEntity entity : entities) + entity.updateChartPluginName(locale); + } + @SuppressWarnings({ "unchecked", "rawtypes" }) protected void inflateHtmlChartWidgetEntity(HtmlChartWidgetEntity entity, HttpServletRequest request) { @@ -239,33 +250,34 @@ public class ChartController extends AbstractChartPluginAwareController entity.setHtmlChartPlugin(htmlChartPlugin); } - inflateChartDataSetFactories(entity, request); + inflateChartDataSets(entity, request); } - protected void inflateChartDataSetFactories(HtmlChartWidgetEntity entity, HttpServletRequest request) + protected void inflateChartDataSets(HtmlChartWidgetEntity entity, HttpServletRequest request) { String[] dataSetIds = request.getParameterValues("dataSetId"); if (dataSetIds == null || dataSetIds.length == 0) return; - ChartDataSetFactory[] chartDataSetFactories = new ChartDataSetFactory[dataSetIds.length]; + ChartDataSet[] chartDataSets = new ChartDataSet[dataSetIds.length]; for (int i = 0; i < dataSetIds.length; i++) { String myDataSignParam = "dataSign_" + i; String[] myDataSigns = request.getParameterValues(myDataSignParam); - SqlDataSetFactoryEntity sqlDataSetFactory = new SqlDataSetFactoryEntity(); - sqlDataSetFactory.setId(dataSetIds[i]); + SqlDataSetEntity sqlDataSet = new SqlDataSetEntity(); + sqlDataSet.setId(dataSetIds[i]); - ChartDataSetFactory chartDataSetFactory = new ChartDataSetFactory(); + ChartDataSet chartDataSet = new ChartDataSet(); - chartDataSetFactory.setDataSetFactory(sqlDataSetFactory); - chartDataSetFactory.setDataSigns(entity.getChartPlugin(), myDataSigns); + chartDataSet.setDataSet(sqlDataSet); + + chartDataSets[i] = chartDataSet; } - entity.setChartDataSetFactories(chartDataSetFactories); + entity.setChartDataSets(chartDataSets); } protected void checkSaveEntity(HtmlChartWidgetEntity chart) diff --git a/datagear-web/src/main/java/org/datagear/web/controller/ChartPluginController.java b/datagear-web/src/main/java/org/datagear/web/controller/ChartPluginController.java index 0bb6be3f..f2aa636c 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/ChartPluginController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/ChartPluginController.java @@ -116,7 +116,7 @@ public class ChartPluginController extends AbstractChartPluginAwareController IOUtil.close(out); } - List pluginInfos = new ArrayList(); + List pluginInfos = new ArrayList(); HtmlChartPluginLoader loader = getDirectoryHtmlChartPluginManager().getHtmlChartPluginLoader(); @@ -128,7 +128,7 @@ public class ChartPluginController extends AbstractChartPluginAwareController Set> loaded = loader.loads(zipFile); for (HtmlChartPlugin chartPlugin : loaded) - pluginInfos.add(toHtmlChartPluginInfo(chartPlugin, renderStyle, locale)); + pluginInfos.add(toHtmlChartPluginVO(chartPlugin, renderStyle, locale)); } catch (HtmlChartPluginLoadException e) { @@ -196,11 +196,11 @@ public class ChartPluginController extends AbstractChartPluginAwareController @RequestMapping(value = "/queryData", produces = CONTENT_TYPE_JSON) @ResponseBody - public List queryData(HttpServletRequest request, HttpServletResponse response, + public List queryData(HttpServletRequest request, HttpServletResponse response, final org.springframework.ui.Model springModel, @RequestParam(value = "keyword", required = false) String keyword) throws Exception { - return findHtmlChartPluginInfos(request, keyword); + return findHtmlChartPluginVOs(request, keyword); } @RequestMapping(value = "/icon/{pluginId}", produces = CONTENT_TYPE_JSON) diff --git a/datagear-web/src/main/java/org/datagear/web/controller/DashboardController.java b/datagear-web/src/main/java/org/datagear/web/controller/DashboardController.java index eecab855..3188ab64 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/DashboardController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/DashboardController.java @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.datagear.analysis.DataSet; +import org.datagear.analysis.DataSetResult; import org.datagear.analysis.support.DashboardWidgetResManager; import org.datagear.analysis.support.html.DefaultHtmlRenderContext; import org.datagear.analysis.support.html.HtmlDashboard; @@ -459,7 +459,7 @@ public class DashboardController extends AbstractDataAnalysisController */ @RequestMapping(value = "/showData", produces = CONTENT_TYPE_JSON) @ResponseBody - public Map showData(HttpServletRequest request, HttpServletResponse response, + public Map showData(HttpServletRequest request, HttpServletResponse response, org.springframework.ui.Model model) throws Exception { WebContext webContext = createWebContext(request); @@ -479,9 +479,9 @@ public class DashboardController extends AbstractDataAnalysisController Map dataSetParamValues = new HashMap(); if (chartsId == null || chartsId.length == 0) - return dashboard.getDataSets(dataSetParamValues); + return dashboard.getDataSetResults(dataSetParamValues); else - return dashboard.getDataSets(Arrays.asList(chartsId), dataSetParamValues); + return dashboard.getDataSetResults(Arrays.asList(chartsId), dataSetParamValues); } /** diff --git a/datagear-web/src/main/java/org/datagear/web/controller/DataSetController.java b/datagear-web/src/main/java/org/datagear/web/controller/DataSetController.java index 33add28f..deb69686 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/DataSetController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/DataSetController.java @@ -13,17 +13,17 @@ import javax.servlet.http.HttpServletResponse; import org.datagear.analysis.DataSetProperty; import org.datagear.analysis.DataType; -import org.datagear.analysis.support.AbstractDataSetFactory; +import org.datagear.analysis.support.AbstractDataSet; import org.datagear.analysis.support.SqlDataSetSupport; import org.datagear.connection.ConnectionSource; import org.datagear.dbmodel.DatabaseModelResolver; import org.datagear.dbmodel.ModelSqlSelectService; import org.datagear.dbmodel.ModelSqlSelectService.ModelSqlResult; import org.datagear.management.domain.Schema; -import org.datagear.management.domain.SqlDataSetFactoryEntity; +import org.datagear.management.domain.SqlDataSetEntity; import org.datagear.management.domain.User; import org.datagear.management.service.SchemaService; -import org.datagear.management.service.SqlDataSetFactoryEntityService; +import org.datagear.management.service.SqlDataSetEntityService; import org.datagear.model.Model; import org.datagear.model.Property; import org.datagear.persistence.PagingData; @@ -58,7 +58,7 @@ public class DataSetController extends AbstractSchemaConnController public static final String DATA_SET_PROPERTY_LABELS_SPLITTER = ","; @Autowired - private SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService; + private SqlDataSetEntityService sqlDataSetEntityService; @Autowired private ModelSqlSelectService modelSqlSelectService; @@ -75,24 +75,24 @@ public class DataSetController extends AbstractSchemaConnController public DataSetController(MessageSource messageSource, ClassDataConverter classDataConverter, SchemaService schemaService, ConnectionSource connectionSource, - SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService, ModelSqlSelectService modelSqlSelectService, + SqlDataSetEntityService sqlDataSetEntityService, ModelSqlSelectService modelSqlSelectService, DatabaseModelResolver databaseModelResolver) { super(messageSource, classDataConverter, schemaService, connectionSource); - this.sqlDataSetFactoryEntityService = sqlDataSetFactoryEntityService; + this.sqlDataSetEntityService = sqlDataSetEntityService; this.modelSqlSelectService = modelSqlSelectService; this.databaseModelResolver = databaseModelResolver; } - public SqlDataSetFactoryEntityService getSqlDataSetFactoryEntityService() + public SqlDataSetEntityService getSqlDataSetEntityService() { - return sqlDataSetFactoryEntityService; + return sqlDataSetEntityService; } - public void setSqlDataSetFactoryEntityService(SqlDataSetFactoryEntityService sqlDataSetFactoryEntityService) + public void setSqlDataSetEntityService(SqlDataSetEntityService sqlDataSetEntityService) { - this.sqlDataSetFactoryEntityService = sqlDataSetFactoryEntityService; + this.sqlDataSetEntityService = sqlDataSetEntityService; } public ModelSqlSelectService getModelSqlSelectService() @@ -128,7 +128,7 @@ public class DataSetController extends AbstractSchemaConnController @RequestMapping("/add") public String add(HttpServletRequest request, org.springframework.ui.Model model) { - SqlDataSetFactoryEntity dataSet = new SqlDataSetFactoryEntity(); + SqlDataSetEntity dataSet = new SqlDataSetEntity(); model.addAttribute("dataSet", dataSet); model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.addDataSet"); @@ -140,7 +140,7 @@ public class DataSetController extends AbstractSchemaConnController @RequestMapping(value = "/saveAdd", produces = CONTENT_TYPE_JSON) @ResponseBody public ResponseEntity saveAdd(HttpServletRequest request, HttpServletResponse response, - SqlDataSetFactoryEntity dataSet) + SqlDataSetEntity dataSet) { User user = WebUtils.getUser(request, response); @@ -150,7 +150,7 @@ public class DataSetController extends AbstractSchemaConnController checkSaveEntity(dataSet); - this.sqlDataSetFactoryEntityService.add(user, dataSet); + this.sqlDataSetEntityService.add(user, dataSet); return buildOperationMessageSaveSuccessResponseEntity(request); } @@ -161,7 +161,7 @@ public class DataSetController extends AbstractSchemaConnController { User user = WebUtils.getUser(request, response); - SqlDataSetFactoryEntity dataSet = this.sqlDataSetFactoryEntityService.getByIdForEdit(user, id); + SqlDataSetEntity dataSet = this.sqlDataSetEntityService.getByIdForEdit(user, id); if (dataSet == null) throw new RecordNotFoundException(); @@ -178,7 +178,7 @@ public class DataSetController extends AbstractSchemaConnController @RequestMapping(value = "/saveEdit", produces = CONTENT_TYPE_JSON) @ResponseBody public ResponseEntity saveEdit(HttpServletRequest request, HttpServletResponse response, - SqlDataSetFactoryEntity dataSet) + SqlDataSetEntity dataSet) { User user = WebUtils.getUser(request, response); @@ -186,7 +186,7 @@ public class DataSetController extends AbstractSchemaConnController checkSaveEntity(dataSet); - this.sqlDataSetFactoryEntityService.update(user, dataSet); + this.sqlDataSetEntityService.update(user, dataSet); return buildOperationMessageSaveSuccessResponseEntity(request); } @@ -197,7 +197,7 @@ public class DataSetController extends AbstractSchemaConnController { User user = WebUtils.getUser(request, response); - SqlDataSetFactoryEntity dataSet = this.sqlDataSetFactoryEntityService.getById(user, id); + SqlDataSetEntity dataSet = this.sqlDataSetEntityService.getById(user, id); if (dataSet == null) throw new RecordNotFoundException(); @@ -211,6 +211,46 @@ public class DataSetController extends AbstractSchemaConnController return "/analysis/dataSet/dataSet_form"; } + @RequestMapping(value = "/getById", produces = CONTENT_TYPE_JSON) + @ResponseBody + public SqlDataSetEntity getById(HttpServletRequest request, HttpServletResponse response, + org.springframework.ui.Model model, @RequestParam("id") String id) + { + User user = WebUtils.getUser(request, response); + + SqlDataSetEntity dataSet = this.sqlDataSetEntityService.getById(user, id); + + if (dataSet == null) + throw new RecordNotFoundException(); + + return dataSet; + } + + @RequestMapping(value = "/getByIds", produces = CONTENT_TYPE_JSON) + @ResponseBody + public List getByIds(HttpServletRequest request, HttpServletResponse response, + org.springframework.ui.Model model, @RequestParam("id") String[] ids) + { + List dataSets = new ArrayList(); + + if (!isEmpty(ids)) + { + User user = WebUtils.getUser(request, response); + + for (String id : ids) + { + SqlDataSetEntity dataSet = this.sqlDataSetEntityService.getById(user, id); + + if (dataSet == null) + throw new RecordNotFoundException(); + + dataSets.add(dataSet); + } + } + + return dataSets; + } + @RequestMapping(value = "/delete", produces = CONTENT_TYPE_JSON) @ResponseBody public ResponseEntity delete(HttpServletRequest request, HttpServletResponse response, @@ -221,7 +261,7 @@ public class DataSetController extends AbstractSchemaConnController for (int i = 0; i < ids.length; i++) { String id = ids[i]; - this.sqlDataSetFactoryEntityService.deleteById(user, id); + this.sqlDataSetEntityService.deleteById(user, id); } return buildOperationMessageDeleteSuccessResponseEntity(request); @@ -251,15 +291,14 @@ public class DataSetController extends AbstractSchemaConnController @RequestMapping(value = "/pagingQueryData", produces = CONTENT_TYPE_JSON) @ResponseBody - public PagingData pagingQueryData(HttpServletRequest request, HttpServletResponse response, + public PagingData pagingQueryData(HttpServletRequest request, HttpServletResponse response, final org.springframework.ui.Model springModel) throws Exception { User user = WebUtils.getUser(request, response); PagingQuery pagingQuery = getPagingQuery(request, WebUtils.COOKIE_PAGINATION_SIZE); - PagingData pagingData = this.sqlDataSetFactoryEntityService.pagingQuery(user, - pagingQuery); + PagingData pagingData = this.sqlDataSetEntityService.pagingQuery(user, pagingQuery); return pagingData; } @@ -328,7 +367,7 @@ public class DataSetController extends AbstractSchemaConnController return modelSqlResult; } - protected void inflateDataSetProperties(HttpServletRequest request, AbstractDataSetFactory dataSetFactory) + protected void inflateDataSetProperties(HttpServletRequest request, AbstractDataSet dataSet) { String labelsText = request.getParameter("dataSetPropertyLabelsText"); if (labelsText == null) @@ -354,7 +393,7 @@ public class DataSetController extends AbstractSchemaConnController dataSetProperties.add(dataSetProperty); } - dataSetFactory.setProperties(dataSetProperties); + dataSet.setProperties(dataSetProperties); } /** @@ -402,7 +441,7 @@ public class DataSetController extends AbstractSchemaConnController return dataSetProperties; } - protected void checkSaveEntity(SqlDataSetFactoryEntity dataSet) + protected void checkSaveEntity(SqlDataSetEntity dataSet) { if (isBlank(dataSet.getName())) throw new IllegalInputException(); diff --git a/datagear-web/src/main/resources/org/datagear/web/chartPlugin/datagear-chart-line-0.1.0/properties.json b/datagear-web/src/main/resources/org/datagear/web/chartPlugin/datagear-chart-line-0.1.0/properties.json index 91dda0a7..a86d0df8 100644 --- a/datagear-web/src/main/resources/org/datagear/web/chartPlugin/datagear-chart-line-0.1.0/properties.json +++ b/datagear-web/src/main/resources/org/datagear/web/chartPlugin/datagear-chart-line-0.1.0/properties.json @@ -2,6 +2,11 @@ id : 'datagear-chart-line', nameLabel : '折线图', descLabel : '折线图', + dataSigns : + [ + { name : "x-value", nameLabel : "横坐标" }, + { name : "y-value", nameLabel : "纵坐标" }, + ], version: "0.1.0", order : 0 } \ No newline at end of file diff --git a/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml b/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml index 102a9052..57ed35a7 100644 --- a/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml +++ b/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml @@ -313,7 +313,7 @@ - + @@ -327,7 +327,7 @@ - + diff --git a/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties b/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties index 3778695a..0b294522 100644 --- a/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties +++ b/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties @@ -637,7 +637,7 @@ chart.viewChart=\u67E5\u770B\u56FE\u8868 chart.selectChart=\u9009\u62E9\u56FE\u8868 chart.name=\u540D\u79F0 chart.htmlChartPlugin=\u56FE\u8868\u7C7B\u578B -chart.sqlDataSetFactoryEntities=\u6570\u636E\u96C6 +chart.chartDataSets=\u6570\u636E\u96C6 chart.updateInterval=\u66F4\u65B0\u95F4\u9694 chart.createUser=\u521B\u5EFA\u7528\u6237 chart.createTime=\u521B\u5EFA\u65F6\u95F4 diff --git a/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_form.ftl b/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_form.ftl index 7e6e14d6..595423ab 100644 --- a/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_form.ftl +++ b/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_form.ftl @@ -33,30 +33,21 @@ readonly 是否只读操作,允许为null
      - <#list pluginInfos as pi> -
    • - <#if pi.hasIcon> -   - <#else> - ${pi.name?html} - -
    • -
    - +
    - <#if (chart.sqlDataSetFactoryEntities)??> - <#list chart.sqlDataSetFactoryEntities as ds> + <#if (chart.chartDataSets)??> + <#list chart.chartDataSets as cds>
    - - ${ds.name?html} + + ${(cds.dataSet.name)!''?html} <#if !readonly>
     
    @@ -67,6 +58,10 @@ readonly 是否只读操作,允许为null <#if !readonly> +
    +
    选择数据标记
    +
    +
    @@ -93,7 +88,84 @@ readonly 是否只读操作,允许为null (function(po) { $.initButtons(po.element()); + + po.chartPluginVOs = <@writeJson var=pluginVOs />; + + po.getChartPlugin = function(id) + { + if(!po.chartPluginVOs) + return; + + for(var i=0; i") + .attr("chart-plugin-id", cp.id).attr("title", cp.nameLabel.value) + .appendTo($wapper); + + if(cp.hasIcon) + $(" ").css("background-image", "url(${contextPath}/"+cp.iconUrl+")").appendTo($li); + else + $("").text(cp.nameLabel.value).appendTo($li); + } + }; + po.initChartPluginList(); + + po.renderChartDataSetItem = function($parent, chartPlugin, chartDataSet) + { + var dataSet = chartDataSet.dataSet; + var propertySigns = (chartDataSet.propertySigns || {}); + var dataSetProperties = (dataSet.properties || []); + + var $item = $("
    ").appendTo($parent); + $("").attr("value", dataSet.id).appendTo($item); + + var $head = $("
    ").appendTo($item); + $("").text(dataSet.name).appendTo($head); + <#if !readonly> + $("
     
    ").attr("title", "<@spring.message code='delete' />").appendTo($head); + + + var $signs = $("
    ").appendTo($item); + for(var i=0; i").appendTo($signs); + $("
    ").text(dsp.name).attr("title", (dsp.label || "")).appendTo($signItem); + $("
    ").appendTo($signItem); + <#if !readonly> + $("").attr("title", "<@spring.message code='add' />").appendTo($signItem); + + } + }; + po.url = function(action) { return "${contextPath}/analysis/chart/" + action; @@ -149,20 +221,43 @@ readonly 是否只读操作,允许为null if(!dataSets) return; - var $wrapper = po.element(".data-set-wrapper"); + var data = $.getPropertyParamString(dataSets, "id"); - for(var i=0; i").appendTo($wrapper); - $("").attr("value", dataSet.id).appendTo($item); - $("").text(dataSet.name).appendTo($item); - $("
     
    ").appendTo($item); - } + for(var i=0; i .select-panel-content", $panel); + $panelContent.empty(); + + for(var i=0; i") + .attr("value", dataSign.name) + .text(dataSign.nameLabel.value || dataSign.name).appendTo($panelContent); + } + + $panel.show(); + $panel.position({ my : "left top", at : "left bottom+3", of : this}); + }); po.element(".data-set-wrapper").sortable(); diff --git a/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_grid.ftl b/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_grid.ftl index 57a3bf2c..a0889f06 100644 --- a/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_grid.ftl +++ b/datagear-web/src/main/webapp/WEB-INF/view/analysis/chart/chart_grid.ftl @@ -149,9 +149,9 @@ selectonly 是否选择操作,允许为null var tableColumns = [ $.buildDataTablesColumnSimpleOption("<@spring.message code='id' />", "id"), $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='chart.name' />"), "name"), - $.buildDataTablesColumnSimpleOption("<@spring.message code='chart.htmlChartPlugin' />", "htmlChartPlugin.id"), + $.buildDataTablesColumnSimpleOption("<@spring.message code='chart.htmlChartPlugin' />", "chartPluginName"), $.buildDataTablesColumnSimpleOption("<@spring.message code='chart.updateInterval' />", "updateInterval"), - $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='chart.createUser' />"), "createUser.realName"), + $.buildDataTablesColumnSimpleOption("<@spring.message code='chart.createUser' />", "createUser.realName"), $.buildDataTablesColumnSimpleOption("<@spring.message code='chart.createTime' />", "createUser.createTime") ]; diff --git a/datagear-web/src/main/webapp/WEB-INF/view/analysis/chartPlugin/chartPlugin_grid.ftl b/datagear-web/src/main/webapp/WEB-INF/view/analysis/chartPlugin/chartPlugin_grid.ftl index d983f2de..c7eefb09 100644 --- a/datagear-web/src/main/webapp/WEB-INF/view/analysis/chartPlugin/chartPlugin_grid.ftl +++ b/datagear-web/src/main/webapp/WEB-INF/view/analysis/chartPlugin/chartPlugin_grid.ftl @@ -114,8 +114,8 @@ selectonly 是否选择操作,允许为null var tableColumns = [ $.buildDataTablesColumnSimpleOption("<@spring.message code='id' />", "id", true), - $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='chartPlugin.name' />"), "name"), - $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='chartPlugin.desc' />"), "desc"), + $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='chartPlugin.name' />"), "nameLabel.value"), + $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='chartPlugin.desc' />"), "descLabel.value"), columnIcon, $.buildDataTablesColumnSimpleOption("<@spring.message code='chartPlugin.version' />", "version") ]; diff --git a/datagear-web/src/main/webapp/WEB-INF/view/analysis/dashboard/dashboard_grid.ftl b/datagear-web/src/main/webapp/WEB-INF/view/analysis/dashboard/dashboard_grid.ftl index d6ce7162..bb323675 100644 --- a/datagear-web/src/main/webapp/WEB-INF/view/analysis/dashboard/dashboard_grid.ftl +++ b/datagear-web/src/main/webapp/WEB-INF/view/analysis/dashboard/dashboard_grid.ftl @@ -173,7 +173,7 @@ selectonly 是否选择操作,允许为null var tableColumns = [ $.buildDataTablesColumnSimpleOption("<@spring.message code='id' />", "id", true), $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='dashboard.name' />"), "name"), - $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='dashboard.createUser' />"), "createUser.realName"), + $.buildDataTablesColumnSimpleOption("<@spring.message code='dashboard.createUser' />", "createUser.realName"), $.buildDataTablesColumnSimpleOption("<@spring.message code='dashboard.createTime' />", "createUser.createTime") ]; diff --git a/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_form.ftl b/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_form.ftl index 82be0c21..05ab6cfb 100644 --- a/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_form.ftl +++ b/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_form.ftl @@ -40,8 +40,8 @@ readonly 是否只读操作,允许为null
    - - + + <#if !readonly> diff --git a/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_grid.ftl b/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_grid.ftl index 846d4869..18869f63 100644 --- a/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_grid.ftl +++ b/datagear-web/src/main/webapp/WEB-INF/view/analysis/dataSet/dataSet_grid.ftl @@ -164,9 +164,9 @@ selectonly 是否选择操作,允许为null var tableColumns = [ $.buildDataTablesColumnSimpleOption("<@spring.message code='id' />", "id", true), $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='dataSet.name' />"), "name"), - $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='dataSet.dataSource' />"), "connectionFactory.schema.title"), + $.buildDataTablesColumnSimpleOption("<@spring.message code='dataSet.dataSource' />", "connectionFactory.schema.title"), $.buildDataTablesColumnSimpleOption("<@spring.message code='dataSet.sql' />", "sql"), - $.buildDataTablesColumnSimpleOption($.buildDataTablesColumnTitleSearchable("<@spring.message code='dataSet.createUser' />"), "createUser.realName"), + $.buildDataTablesColumnSimpleOption("<@spring.message code='dataSet.createUser' />", "createUser.realName"), $.buildDataTablesColumnSimpleOption("<@spring.message code='dataSet.createTime' />", "createUser.createTime") ]; diff --git a/datagear-web/src/main/webapp/static/css/common.css b/datagear-web/src/main/webapp/static/css/common.css index 96f9b09a..bd87fa9d 100644 --- a/datagear-web/src/main/webapp/static/css/common.css +++ b/datagear-web/src/main/webapp/static/css/common.css @@ -2023,6 +2023,70 @@ table.dataTable tbody tr .column-check .row-data-state .ui-icon{ float: right; cursor: pointer; } +.page-form-chart .data-set-wrapper .data-set-item .item-head{ + padding: 0.2em 0; +} +.page-form-chart .data-set-wrapper .data-set-item .item-signs{ + margin-top: 0.3em; +} +.page-form-chart .data-set-wrapper .data-set-item .item-signs .item-signs-item{ + padding: 0.2em 0; + position: relative; +} +.page-form-chart .data-set-wrapper .data-set-item .item-signs .item-signs-item .sign-item-name{ + display: inline-block; + width: 25%; + overflow: hidden; + padding: 1px 1px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.page-form-chart .data-set-wrapper .data-set-item .item-signs .item-signs-item .sign-item-values{ + display: inline-block; + width: 75%; + height: 1.55em; + overflow: hidden; + padding: 1px 1px; + padding-right: 2.5em; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.page-form-chart .data-set-wrapper .data-set-item .item-signs .item-signs-item .sign-item-values.ui-widget-content{ + background: none; +} +.page-form-chart .data-set-wrapper .data-set-item .item-signs .item-signs-item .sign-add-button{ + position: absolute; + top: 0.35em; + right: 0.1em; + height: 1.2em; + border: 0px; + padding: 0.4em 0.5em; +} +.page-form-chart .data-sign-select-panel{ + position: absolute; + display: none; + padding: 0.3em 0.3em; + width: 30%; + height: 40%; +} +.page-form-chart .data-sign-select-panel .select-panel-head{ + padding: 0.3em 0.1em; +} +.page-form-chart .data-sign-select-panel .select-panel-content{ + position: absolute; + left: 0.41em; + right: 0.41em; + top: 3em; + bottom: 0.5em; + padding: 0.5em 0.5em; + overflow-y: auto; +} +.page-form-chart .data-sign-select-panel .select-panel-content .data-sign-item{ + margin-right: 1em; + margin-bottom: 0.41em; +} .page-form-chart .add-data-set-button{ vertical-align: top; } diff --git a/datagear-web/src/main/webapp/static/script/datagear-chart-util.js b/datagear-web/src/main/webapp/static/script/datagear-chart-util.js index d9d798bc..5f4a775c 100644 --- a/datagear-web/src/main/webapp/static/script/datagear-chart-util.js +++ b/datagear-web/src/main/webapp/static/script/datagear-chart-util.js @@ -12,7 +12,6 @@ { var util = (window.chartUtil || (window.chartUtil = {})); util.echarts = (util.echarts || {}); - util.dataset = (util.dataset || {}); /** * 获取图表主题。 @@ -40,6 +39,17 @@ { return this.propertyValue(chart, "name", value); }; + + /** + * 获取/设置图表的"updateInterval"属性值。 + * + * @param chart + * @param value 可选,要设置的属性值 + */ + util.propertyValueUpdateInterval = function(chart, value) + { + return this.propertyValue(chart, "updateInterval", value); + }; /** * 获取/设置图表属性值。 @@ -75,7 +85,134 @@ else return renderContext.attributes[attrName] = attrValue; }; + + /** + * 获取指定标记的第一个数据集属性,没有则返回null。 + * + * @param chartDataSet 图表数据集对象 + * @param dataSign 数据标记对象、标记名称 + */ + util.dataSetPropertyOfSign = function(chartDataSet, dataSign) + { + var properties = this.dataSetPropertiesOfSign(chartDataSet, dataSign); + + return (properties.length > 0 ? properties[0] : null); + }; + /** + * 获取指定标记的数据集属性数组。 + * + * @param chartDataSet 图表数据集对象 + * @param dataSign 数据标记对象、标记名称 + */ + util.dataSetPropertiesOfSign = function(chartDataSet, dataSign) + { + var re = []; + + dataSign = (dataSign.name || dataSign); + var dataSetProperties = (chartDataSet.dataSet.properties || []); + var propertySigns = (chartDataSet.propertySigns || {}); + + var signPropertyNames = []; + + for(var pname : propertySigns) + { + var mySigns = (propertySigns[pname] || []); + + for(var i=0; i 0) + { + for(var i=0; i 0 ? dataSets[0] : undefined); - }; - - /** - * 获取指定名称的列元信息对象,没有则返回undefined。 - * - * @param dataSet - * @param name - */ - util.dataset.columnMetaByName = function(dataSet, name) - { - var columnMetas = dataSet.meta.columnMetas; - - for(var i=0; i 0) - { - for(var i=0; i