From 605d37cdd6ddbcdd65521fa4926c609fff4c0fbb Mon Sep 17 00:00:00 2001 From: datagear Date: Wed, 3 Jun 2020 20:25:36 +0800 Subject: [PATCH] =?UTF-8?q?[analysis]=E9=87=8D=E6=9E=84=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=EF=BC=8C=E7=A7=BB=E9=99=A4ChartPlugin=E3=80=81DashboardWidget?= =?UTF-8?q?=E7=AD=89=E7=9A=84RenderContext=E7=B1=BB=E5=9E=8B=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=AE=BE=E8=AE=A1=EF=BC=8C=E7=AE=80=E5=8C=96=E6=A6=82?= =?UTF-8?q?=E5=BF=B5=E5=92=8C=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/datagear/analysis/Chart.java | 11 +- .../org/datagear/analysis/ChartPlugin.java | 6 +- .../datagear/analysis/ChartPluginManager.java | 14 +- .../java/org/datagear/analysis/Dashboard.java | 8 +- .../datagear/analysis/DashboardWidget.java | 4 +- .../datagear/analysis/TemplateDashboard.java | 10 +- .../analysis/TemplateDashboardWidget.java | 13 +- .../TemplateDashboardWidgetResManager.java | 43 ++- .../analysis/support/AbstractChartPlugin.java | 4 +- .../support/AbstractChartPluginManager.java | 121 ++---- ...ractTemplateDashboardWidgetResManager.java | 2 +- .../support/CategorizationResolver.java | 16 +- .../analysis/support/ChartWidget.java | 18 +- .../analysis/support/ChartWidgetSource.java | 4 +- .../support/ConcurrentChartPluginManager.java | 13 +- ...Context.java => DefaultRenderContext.java} | 23 +- ...FileTemplateDashboardWidgetResManager.java | 12 +- .../JsonChartPluginPropertiesResolver.java | 8 +- .../support/SimpleChartPluginManager.java | 13 +- .../support/SimpleChartWidgetSource.java | 19 +- .../html/AbstractHtmlScriptObjectWriter.java | 27 +- .../html/DefaultHtmlRenderContext.java | 67 ---- .../html/DirectoryHtmlChartPluginManager.java | 56 ++- .../analysis/support/html/HtmlChart.java | 29 +- .../support/html/HtmlChartPlugin.java | 173 +++------ .../support/html/HtmlChartPluginLoader.java | 61 +-- .../html/HtmlChartPluginRenderOption.java | 281 -------------- .../HtmlChartPluginScriptObjectWriter.java | 8 +- .../support/html/HtmlChartRenderAttr.java | 349 +++++++++++++++++- .../html/HtmlChartScriptObjectWriter.java | 2 +- .../support/html/HtmlChartWidget.java | 21 +- .../analysis/support/html/HtmlRenderAttr.java | 191 ++++++++++ .../support/html/HtmlRenderAttributes.java | 307 --------------- .../support/html/HtmlRenderContext.java | 139 ------- .../HtmlRenderContextScriptObjectWriter.java | 199 ++++------ .../support/html/HtmlTplDashboard.java | 16 +- .../html/HtmlTplDashboardRenderAttr.java | 204 +++++++++- .../HtmlTplDashboardScriptObjectWriter.java | 12 +- .../support/html/HtmlTplDashboardWidget.java | 28 +- .../HtmlTplDashboardWidgetHtmlRenderer.java | 156 +++----- .../html/HtmlTplDashboardWidgetRenderer.java | 292 +++++++-------- .../support/html/LoadHtmlChartPluginBean.java | 6 +- .../html/ParamValueHtmlChartPlugin.java | 2 +- ...JsonChartPluginPropertiesResolverTest.java | 2 +- .../DirectoryHtmlChartPluginManagerTest.java | 9 +- .../html/HtmlChartPluginLoaderTest.java | 16 +- .../support/html/HtmlChartPluginTest.java | 38 +- ...tmlTplDashboardWidgetHtmlRendererTest.java | 121 +++--- .../HtmlTplDashboardWidgetRendererTest.java | 8 +- .../domain/HtmlChartWidgetEntity.java | 13 +- .../domain/HtmlTplDashboardWidgetEntity.java | 7 +- .../HtmlTplDashboardWidgetEntityService.java | 3 +- .../HtmlChartWidgetEntityServiceImpl.java | 17 +- ...mlTplDashboardWidgetEntityServiceImpl.java | 21 +- .../AbstractChartPluginAwareController.java | 52 +-- .../AbstractDataAnalysisController.java | 31 +- .../web/controller/ChartController.java | 33 +- .../web/controller/ChartPluginController.java | 35 +- .../web/controller/DashboardController.java | 62 ++-- ...toryHtmlChartPluginManagerInitializer.java | 8 +- .../static/script/datagear-chartFactory.js | 13 +- .../script/datagear-dashboardFactory.js | 26 +- 62 files changed, 1581 insertions(+), 1922 deletions(-) rename datagear-analysis/src/main/java/org/datagear/analysis/support/{AbstractRenderContext.java => DefaultRenderContext.java} (62%) delete mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/support/html/DefaultHtmlRenderContext.java delete mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginRenderOption.java delete mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlRenderAttributes.java delete mode 100644 datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlRenderContext.java 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 1666e1e4..7a067dad 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/Chart.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/Chart.java @@ -16,7 +16,7 @@ package org.datagear.analysis; */ public class Chart extends ChartDefinition { - private ChartPlugin plugin; + private ChartPlugin plugin; private RenderContext renderContext; @@ -25,15 +25,14 @@ public class Chart extends ChartDefinition super(); } - public Chart(String id, String name, ChartDataSet[] chartDataSets, ChartPlugin plugin, - RenderContext renderContext) + public Chart(String id, String name, ChartDataSet[] chartDataSets, ChartPlugin plugin, RenderContext renderContext) { super(id, name, chartDataSets); this.plugin = plugin; this.renderContext = renderContext; } - public Chart(ChartDefinition chartDefinition, ChartPlugin plugin, RenderContext renderContext) + public Chart(ChartDefinition chartDefinition, ChartPlugin plugin, RenderContext renderContext) { super(chartDefinition.getId(), chartDefinition.getName(), chartDefinition.getChartDataSets()); setParamValues(chartDefinition.getParamValues()); @@ -53,12 +52,12 @@ public class Chart extends ChartDefinition this.renderContext = renderContext; } - public ChartPlugin getPlugin() + public ChartPlugin getPlugin() { return plugin; } - public void setPlugin(ChartPlugin plugin) + public void setPlugin(ChartPlugin plugin) { this.plugin = plugin; } 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 a1021017..aff89ecd 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/ChartPlugin.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/ChartPlugin.java @@ -19,9 +19,8 @@ import org.datagear.util.i18n.Labeled; * * @author datagear@163.com * - * @param */ -public interface ChartPlugin extends Identifiable, Labeled +public interface ChartPlugin extends Identifiable, Labeled { String PROPERTY_ID = "id"; String PROPERTY_NAME_LABEL = Labeled.PROPERTY_NAME_LABEL; @@ -117,8 +116,7 @@ public interface ChartPlugin extends Identifiable, Labe * @return * @throws RenderException */ - Chart renderChart(T renderContext, ChartDefinition chartDefinition) - throws RenderException; + Chart renderChart(RenderContext renderContext, ChartDefinition chartDefinition) throws RenderException; /** * 获取版本号。 diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/ChartPluginManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/ChartPluginManager.java index f420efde..d1c9ad73 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/ChartPluginManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/ChartPluginManager.java @@ -19,7 +19,7 @@ public interface ChartPluginManager * * @param chartPlugin */ - void register(ChartPlugin chartPlugin); + void register(ChartPlugin chartPlugin); /** * 移除指定ID的{@linkplain ChartPlugin}。 @@ -27,7 +27,7 @@ public interface ChartPluginManager * @param ids * @return 被移除的{@linkplain ChartPlugin}或者{@code null}。 */ - ChartPlugin[] remove(String... ids); + ChartPlugin[] remove(String... ids); /** * 获取指定ID的{@linkplain ChartPlugin}。 @@ -35,18 +35,18 @@ public interface ChartPluginManager * @param id * @return */ - ChartPlugin get(String id); + ChartPlugin get(String id); /** - * 获取支持指定类型{@linkplain RenderContext}的所有{@linkplain ChartPlugin}。 + * 获取指定类型的所有{@linkplain ChartPlugin}。 *

* 返回结果将根据{@linkplain ChartPlugin#getOrder()}进行排序,越小越靠前。 *

* - * @param renderContextType + * @param chartPluginType * @return */ - List> getAll(Class renderContextType); + List getAll(Class chartPluginType); /** * 获取所有{@linkplain ChartPlugin}。 @@ -56,5 +56,5 @@ public interface ChartPluginManager * * @return */ - List> getAll(); + List getAll(); } 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 4dd9cca8..dd2d767a 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/Dashboard.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/Dashboard.java @@ -28,7 +28,7 @@ public class Dashboard extends AbstractIdentifiable private RenderContext renderContext; - private DashboardWidget widget; + private DashboardWidget widget; private List charts; @@ -37,7 +37,7 @@ public class Dashboard extends AbstractIdentifiable super(); } - public Dashboard(String id, RenderContext renderContext, DashboardWidget widget) + public Dashboard(String id, RenderContext renderContext, DashboardWidget widget) { super(id); this.renderContext = renderContext; @@ -54,12 +54,12 @@ public class Dashboard extends AbstractIdentifiable this.renderContext = renderContext; } - public DashboardWidget getWidget() + public DashboardWidget getWidget() { return widget; } - public void setWidget(DashboardWidget widget) + public void setWidget(DashboardWidget widget) { this.widget = widget; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/DashboardWidget.java b/datagear-analysis/src/main/java/org/datagear/analysis/DashboardWidget.java index cd065f7a..62dd918a 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/DashboardWidget.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/DashboardWidget.java @@ -13,7 +13,7 @@ package org.datagear.analysis; * @author datagear@163.com * */ -public interface DashboardWidget extends Identifiable +public interface DashboardWidget extends Identifiable { /** * 渲染{@linkplain Dashboard}。 @@ -22,5 +22,5 @@ public interface DashboardWidget extends Identifiable * @return * @throws RenderException */ - Dashboard render(T renderContext) throws RenderException; + Dashboard render(RenderContext renderContext) throws RenderException; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboard.java b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboard.java index 5e0520f2..21cf6627 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboard.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboard.java @@ -16,7 +16,7 @@ public class TemplateDashboard extends Dashboard super(); } - public TemplateDashboard(String id, String template, RenderContext renderContext, TemplateDashboardWidget widget) + public TemplateDashboard(String id, String template, RenderContext renderContext, TemplateDashboardWidget widget) { super(id, renderContext, widget); this.template = template; @@ -33,15 +33,15 @@ public class TemplateDashboard extends Dashboard } @Override - public TemplateDashboardWidget getWidget() + public TemplateDashboardWidget getWidget() { - return (TemplateDashboardWidget) super.getWidget(); + return (TemplateDashboardWidget) super.getWidget(); } @Override - public void setWidget(DashboardWidget widget) + public void setWidget(DashboardWidget widget) { - if (widget != null && !(widget instanceof TemplateDashboardWidget)) + if (widget != null && !(widget instanceof TemplateDashboardWidget)) throw new IllegalArgumentException(); super.setWidget(widget); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidget.java b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidget.java index a5cf6129..d2f14317 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidget.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidget.java @@ -20,8 +20,7 @@ import org.datagear.util.StringUtil; * @author datagear@163.com * */ -public abstract class TemplateDashboardWidget extends AbstractIdentifiable - implements DashboardWidget +public abstract class TemplateDashboardWidget extends AbstractIdentifiable implements DashboardWidget { public static final String DEFAULT_TEMPLATE_ENCODING = "UTF-8"; @@ -113,7 +112,7 @@ public abstract class TemplateDashboardWidget extends A if (this.templates == null || this.templates.length == 0) return; - List list = new ArrayList(this.templates.length); + List list = new ArrayList<>(this.templates.length); for (String t : this.templates) { @@ -125,7 +124,7 @@ public abstract class TemplateDashboardWidget extends A } @Override - public TemplateDashboard render(T renderContext) throws RenderException + public TemplateDashboard render(RenderContext renderContext) throws RenderException { String template = getFirstTemplate(); @@ -145,7 +144,8 @@ public abstract class TemplateDashboardWidget extends A * @throws IllegalArgumentException * {@code template}不是模板时 */ - public TemplateDashboard render(T renderContext, String template) throws RenderException, IllegalArgumentException + public TemplateDashboard render(RenderContext renderContext, String template) + throws RenderException, IllegalArgumentException { if (!isTemplate(template)) throw new IllegalArgumentException("[" + template + "] is not template"); @@ -161,5 +161,6 @@ public abstract class TemplateDashboardWidget extends A * @return * @throws RenderException */ - protected abstract TemplateDashboard renderTemplate(T renderContext, String template) throws RenderException; + protected abstract TemplateDashboard renderTemplate(RenderContext renderContext, String template) + throws RenderException; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidgetResManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidgetResManager.java index d1975341..d2280caf 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidgetResManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidgetResManager.java @@ -34,7 +34,7 @@ public interface TemplateDashboardWidgetResManager * @return * @throws IOException */ - Reader getTemplateReader(TemplateDashboardWidget widget, String template) throws IOException; + Reader getTemplateReader(TemplateDashboardWidget widget, String template) throws IOException; /** * 获取指定模板的输出流。 @@ -44,14 +44,17 @@ public interface TemplateDashboardWidgetResManager * @return * @throws IOException */ - Writer getTemplateWriter(TemplateDashboardWidget widget, String template) throws IOException; + Writer getTemplateWriter(TemplateDashboardWidget widget, String template) throws IOException; /** * 获取指定名称资源的输入流。 * - * @param id {@linkplain TemplateDashboardWidget#getId()} - * @param name 资源名称 - * @param encoding 资源编码,为{@code null}或空则使用默认编码 + * @param id + * {@linkplain TemplateDashboardWidget#getId()} + * @param name + * 资源名称 + * @param encoding + * 资源编码,为{@code null}或空则使用默认编码 * @return * @throws IOException */ @@ -60,9 +63,12 @@ public interface TemplateDashboardWidgetResManager /** * 获取指定名称资源的输出流。 * - * @param id {@linkplain TemplateDashboardWidget#getId()} - * @param name 资源名称 - * @param encoding 资源编码,为{@code null}或空则使用默认编码 + * @param id + * {@linkplain TemplateDashboardWidget#getId()} + * @param name + * 资源名称 + * @param encoding + * 资源编码,为{@code null}或空则使用默认编码 * @return * @throws IOException */ @@ -71,8 +77,10 @@ public interface TemplateDashboardWidgetResManager /** * 获取指定名称资源的输入流。 * - * @param id {@linkplain TemplateDashboardWidget#getId()} - * @param name 资源名称 + * @param id + * {@linkplain TemplateDashboardWidget#getId()} + * @param name + * 资源名称 * @return * @throws IOException */ @@ -81,8 +89,10 @@ public interface TemplateDashboardWidgetResManager /** * 获取指定名称资源的输出流。 * - * @param id {@linkplain TemplateDashboardWidget#getId()} - * @param name 资源名称 + * @param id + * {@linkplain TemplateDashboardWidget#getId()} + * @param name + * 资源名称 * @return * @throws IOException */ @@ -94,7 +104,8 @@ public interface TemplateDashboardWidgetResManager * 拷入后,目录下所有子文件的相对路径名(比如:some-file.txtsome-directory/some-file.png),即可作为此类的资源名称使用。 *

* - * @param id {@linkplain Dashboard#getId()} + * @param id + * {@linkplain Dashboard#getId()} * @param directory * @throws IOException */ @@ -103,8 +114,10 @@ public interface TemplateDashboardWidgetResManager /** * 是否包含指定名称的资源。 * - * @param id {@linkplain Dashboard#getId()} - * @param name 资源名称 + * @param id + * {@linkplain Dashboard#getId()} + * @param name + * 资源名称 * @return */ boolean containsResource(String id, String name); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPlugin.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPlugin.java index fd04afe0..df28d51d 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPlugin.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPlugin.java @@ -16,7 +16,6 @@ import org.datagear.analysis.ChartParam; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.DataSign; import org.datagear.analysis.Icon; -import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderStyle; import org.datagear.util.i18n.Label; @@ -26,8 +25,7 @@ import org.datagear.util.i18n.Label; * @author datagear@163.com * */ -public abstract class AbstractChartPlugin extends AbstractIdentifiable - implements ChartPlugin +public abstract class AbstractChartPlugin extends AbstractIdentifiable implements ChartPlugin { private Label nameLabel; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPluginManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPluginManager.java index da0d1550..f1be7a15 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPluginManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractChartPluginManager.java @@ -16,10 +16,8 @@ import java.util.Map; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; -import org.datagear.analysis.RenderContext; import org.datagear.util.StringUtil; import org.datagear.util.version.Version; -import org.springframework.core.GenericTypeResolver; /** * 抽象{@linkplain ChartPluginManager}。 @@ -29,34 +27,21 @@ import org.springframework.core.GenericTypeResolver; */ public abstract class AbstractChartPluginManager implements ChartPluginManager { - private Map> chartPluginMap = new HashMap>(); - - private Map> renderContextTypeMap = new HashMap>(); + private Map chartPluginMap = new HashMap<>(); public AbstractChartPluginManager() { super(); } - protected Map> getChartPluginMap() + protected Map getChartPluginMap() { return chartPluginMap; } - @SuppressWarnings("unchecked") - protected void setChartPluginMap(Map> chartPluginMap) + protected void setChartPluginMap(Map chartPluginMap) { - this.chartPluginMap = (Map>) chartPluginMap; - } - - protected Map> getRenderContextTypeMap() - { - return renderContextTypeMap; - } - - protected void setRenderContextTypeMap(Map> renderContextTypeMap) - { - this.renderContextTypeMap = renderContextTypeMap; + this.chartPluginMap = chartPluginMap; } /** @@ -68,22 +53,18 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * @param chartPlugin * @return */ - protected boolean registerChartPlugin(ChartPlugin chartPlugin) + protected boolean registerChartPlugin(ChartPlugin chartPlugin) { checkLegalChartPlugin(chartPlugin); boolean put = true; - ChartPlugin prev = this.chartPluginMap.get(chartPlugin.getId()); + ChartPlugin prev = this.chartPluginMap.get(chartPlugin.getId()); if (prev != null) put = canReplaceForSameId(chartPlugin, prev); if (put) - { this.chartPluginMap.put(chartPlugin.getId(), chartPlugin); - this.renderContextTypeMap.put(chartPlugin.getId(), - resolveChartPluginRenderContextType(chartPlugin.getClass())); - } return put; } @@ -93,9 +74,9 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * * @param id */ - protected ChartPlugin[] removeChartPlugins(String[] ids) + protected ChartPlugin[] removeChartPlugins(String[] ids) { - ChartPlugin[] removed = new ChartPlugin[ids.length]; + ChartPlugin[] removed = new ChartPlugin[ids.length]; for (int i = 0; i < ids.length; i++) removed[i] = removeChartPlugin(ids[i]); @@ -108,9 +89,8 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * * @param id */ - protected ChartPlugin removeChartPlugin(String id) + protected ChartPlugin removeChartPlugin(String id) { - this.renderContextTypeMap.remove(id); return this.chartPluginMap.remove(id); } @@ -120,7 +100,6 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager protected void removeAllChartPlugins() { this.chartPluginMap.clear(); - this.renderContextTypeMap.clear(); } /** @@ -129,30 +108,31 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * @param id * @return */ - @SuppressWarnings("unchecked") - protected ChartPlugin getChartPlugin(String id) + protected ChartPlugin getChartPlugin(String id) { - return (ChartPlugin) this.chartPluginMap.get(id); + return this.chartPluginMap.get(id); } /** - * 查找支持指定类型{@linkplain RenderContext}的所有{@linkplain ChartPlugin}。 + * 查找指定类型的所有{@linkplain ChartPlugin}。 *

* 返回列表已使用{@linkplain #sortChartPlugins(List)}排序。 *

* - * @param renderContextType + * @param chartPluginType * @return */ @SuppressWarnings("unchecked") - protected List> findChartPlugins(Class renderContextType) + protected List findChartPlugins(Class chartPluginType) { - List> reChartPlugins = new ArrayList>(); + List reChartPlugins = new ArrayList<>(); - for (Map.Entry> entry : this.renderContextTypeMap.entrySet()) + for (Map.Entry entry : this.chartPluginMap.entrySet()) { - if (entry.getValue().isAssignableFrom(renderContextType)) - reChartPlugins.add((ChartPlugin) this.chartPluginMap.get(entry.getKey())); + ChartPlugin plugin = entry.getValue(); + + if (chartPluginType.isAssignableFrom(plugin.getClass())) + reChartPlugins.add((T) plugin); } sortChartPlugins(reChartPlugins); @@ -168,9 +148,9 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * * @return */ - protected List> getAllChartPlugins() + protected List getAllChartPlugins() { - List> reChartPlugins = new ArrayList>(); + List reChartPlugins = new ArrayList<>(); reChartPlugins.addAll(this.chartPluginMap.values()); @@ -179,48 +159,7 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager return reChartPlugins; } - /** - * 解析{@linkplain ChartPlugin}可支持的{@linkplain RenderContext}类型列表。 - * - * @param chartPlugins - * @return - */ - protected List> resolveChartPluginRenderContextTypes( - List> chartPlugins) - { - List> renderContextTypes = new ArrayList>( - chartPlugins.size()); - - for (ChartPlugin chartPlugin : chartPlugins) - { - Class renderContextType = resolveChartPluginRenderContextType( - chartPlugin.getClass()); - - renderContextTypes.add(renderContextType); - } - - return renderContextTypes; - } - - /** - * 解析指定{@linkplain ChartPlugin}类所支持的{@linkplain RenderContext}类型。 - * - * @param chartPluginType - * @return - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected Class resolveChartPluginRenderContextType( - Class chartPluginType) - { - Class renderContextType = GenericTypeResolver.resolveTypeArgument(chartPluginType, ChartPlugin.class); - - if (renderContextType == null) - renderContextType = RenderContext.class; - - return (Class) renderContextType; - } - - protected void sortChartPlugins(List> chartPlugins) + protected void sortChartPlugins(List chartPlugins) { sort(chartPlugins); } @@ -230,12 +169,12 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * * @param chartPlugins */ - public static void sort(List> chartPlugins) + public static void sort(List chartPlugins) { - Collections.sort(chartPlugins, new Comparator>() + Collections.sort(chartPlugins, new Comparator() { @Override - public int compare(ChartPlugin o1, ChartPlugin o2) + public int compare(ChartPlugin o1, ChartPlugin o2) { return Integer.valueOf(o1.getOrder()).compareTo(o2.getOrder()); } @@ -250,7 +189,7 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * 允许为{@code null} * @return */ - protected boolean canReplaceForSameId(ChartPlugin my, ChartPlugin old) + protected boolean canReplaceForSameId(ChartPlugin my, ChartPlugin old) { if (old == null) return true; @@ -296,7 +235,7 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * @param oldVersion * @return */ - protected boolean canReplaceForSameId(ChartPlugin my, Version myVersion, ChartPlugin old, Version oldVersion) + protected boolean canReplaceForSameId(ChartPlugin my, Version myVersion, ChartPlugin old, Version oldVersion) { boolean replace = false; @@ -319,7 +258,7 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * @param chartPlugin * @throws IllegalArgumentException */ - protected void checkLegalChartPlugin(ChartPlugin chartPlugin) throws IllegalArgumentException + protected void checkLegalChartPlugin(ChartPlugin chartPlugin) throws IllegalArgumentException { if (!isLegalChartPlugin(chartPlugin)) throw new IllegalArgumentException("[" + chartPlugin + "] is illegal"); @@ -331,7 +270,7 @@ public abstract class AbstractChartPluginManager implements ChartPluginManager * @param chartPlugin * @return */ - protected boolean isLegalChartPlugin(ChartPlugin chartPlugin) + protected boolean isLegalChartPlugin(ChartPlugin chartPlugin) { if (chartPlugin == null) return false; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractTemplateDashboardWidgetResManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractTemplateDashboardWidgetResManager.java index 01a2c0bd..7628745d 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractTemplateDashboardWidgetResManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractTemplateDashboardWidgetResManager.java @@ -49,7 +49,7 @@ public abstract class AbstractTemplateDashboardWidgetResManager implements Templ return IOUtil.getWriter(out, encoding); } - protected String getTemplateEncodingWithDefault(TemplateDashboardWidget widget) + protected String getTemplateEncodingWithDefault(TemplateDashboardWidget widget) { String encoding = widget.getTemplateEncoding(); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/CategorizationResolver.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/CategorizationResolver.java index 9bc1be07..2fe2938a 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/CategorizationResolver.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/CategorizationResolver.java @@ -35,12 +35,12 @@ public class CategorizationResolver * @param chartPlugins * @return 最后一个元素包含所有未分组的{@linkplain ChartPlugin} */ - public List resolve(List> chartPlugins) + public List resolve(List chartPlugins) { - List categorizations = new ArrayList(); - List> uncategorizeds = new ArrayList>(); + List categorizations = new ArrayList<>(); + List uncategorizeds = new ArrayList<>(); - for (ChartPlugin chartPlugin : chartPlugins) + for (ChartPlugin chartPlugin : chartPlugins) { Category category = chartPlugin.getCategory(); @@ -102,7 +102,7 @@ public class CategorizationResolver { private Category category; - private List> chartPlugins = new ArrayList>(5); + private List chartPlugins = new ArrayList<>(5); public Categorization() { @@ -125,17 +125,17 @@ public class CategorizationResolver this.category = category; } - public List> getChartPlugins() + public List getChartPlugins() { return chartPlugins; } - public void setChartPlugins(List> chartPlugins) + public void setChartPlugins(List chartPlugins) { this.chartPlugins = chartPlugins; } - public void addChartPlugin(ChartPlugin chartPlugin) + public void addChartPlugin(ChartPlugin chartPlugin) { this.chartPlugins.add(chartPlugin); } 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 77b5d550..361c342b 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 @@ -22,27 +22,27 @@ import org.datagear.util.IDUtil; * @author datagear@163.com * */ -public class ChartWidget extends ChartDefinition +public class ChartWidget extends ChartDefinition { - private ChartPlugin plugin; + private ChartPlugin plugin; public ChartWidget() { super(); } - public ChartWidget(String id, String name, ChartDataSet[] chartDataSets, ChartPlugin plugin) + public ChartWidget(String id, String name, ChartDataSet[] chartDataSets, ChartPlugin plugin) { super(id, name, chartDataSets); this.plugin = plugin; } - public ChartPlugin getPlugin() + public ChartPlugin getPlugin() { return plugin; } - public void setPlugin(ChartPlugin plugin) + public void setPlugin(ChartPlugin plugin) { this.plugin = plugin; } @@ -56,7 +56,7 @@ public class ChartWidget extends ChartDefinition */ public void setPlugin(ChartPluginManager chartPluginManager, String chartPluginId) { - ChartPlugin chartPlugin = chartPluginManager.get(chartPluginId); + ChartPlugin chartPlugin = chartPluginManager.get(chartPluginId); setPlugin(chartPlugin); } @@ -67,12 +67,12 @@ public class ChartWidget extends ChartDefinition * @return * @throws RenderException */ - public Chart render(T renderContext) throws RenderException + public Chart render(RenderContext renderContext) throws RenderException { return this.plugin.renderChart(renderContext, buildChartDefinition(renderContext)); } - protected ChartDefinition buildChartDefinition(T renderContext) throws RenderException + protected ChartDefinition buildChartDefinition(RenderContext renderContext) throws RenderException { ChartDefinition chartDefinition = new ChartDefinition(); ChartDefinition.copy(this, chartDefinition); @@ -87,7 +87,7 @@ public class ChartWidget extends ChartDefinition * @return * @throws RenderException */ - protected String generateChartId(T renderContext) throws RenderException + protected String generateChartId(RenderContext renderContext) throws RenderException { return IDUtil.uuid(); } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidgetSource.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidgetSource.java index 0ac84ed7..3776d603 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidgetSource.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/ChartWidgetSource.java @@ -4,8 +4,6 @@ package org.datagear.analysis.support; -import org.datagear.analysis.RenderContext; - /** * {@linkplain ChartWidget}源。 * @@ -21,5 +19,5 @@ public interface ChartWidgetSource * @return * @throws Throwable */ - ChartWidget getChartWidget(String id) throws Throwable; + ChartWidget getChartWidget(String id) throws Throwable; } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/ConcurrentChartPluginManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/ConcurrentChartPluginManager.java index c6550441..36436ea1 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/ConcurrentChartPluginManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/ConcurrentChartPluginManager.java @@ -14,7 +14,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; -import org.datagear.analysis.RenderContext; /** * 并发{@linkplain ChartPluginManager}。 @@ -35,7 +34,7 @@ public class ConcurrentChartPluginManager extends AbstractChartPluginManager } @Override - public void register(ChartPlugin chartPlugin) + public void register(ChartPlugin chartPlugin) { WriteLock writeLock = this.lock.writeLock(); @@ -52,7 +51,7 @@ public class ConcurrentChartPluginManager extends AbstractChartPluginManager } @Override - public ChartPlugin[] remove(String... ids) + public ChartPlugin[] remove(String... ids) { WriteLock writeLock = this.lock.writeLock(); @@ -69,7 +68,7 @@ public class ConcurrentChartPluginManager extends AbstractChartPluginManager } @Override - public ChartPlugin get(String id) + public ChartPlugin get(String id) { ReadLock readLock = this.lock.readLock(); @@ -86,7 +85,7 @@ public class ConcurrentChartPluginManager extends AbstractChartPluginManager } @Override - public List> getAll(Class renderContextType) + public List getAll(Class chartPluginType) { ReadLock readLock = this.lock.readLock(); @@ -94,7 +93,7 @@ public class ConcurrentChartPluginManager extends AbstractChartPluginManager { readLock.lock(); - return findChartPlugins(renderContextType); + return findChartPlugins(chartPluginType); } finally { @@ -103,7 +102,7 @@ public class ConcurrentChartPluginManager extends AbstractChartPluginManager } @Override - public List> getAll() + public List getAll() { ReadLock readLock = this.lock.readLock(); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractRenderContext.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/DefaultRenderContext.java similarity index 62% rename from datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractRenderContext.java rename to datagear-analysis/src/main/java/org/datagear/analysis/support/DefaultRenderContext.java index 30a6b1b5..c20a87be 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/AbstractRenderContext.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/DefaultRenderContext.java @@ -15,21 +15,28 @@ import org.datagear.analysis.RenderContext; * @author datagear@163.com * */ -public abstract class AbstractRenderContext implements RenderContext +public class DefaultRenderContext implements RenderContext { - private Map attributes; + private Map attributes = new HashMap<>(); - public AbstractRenderContext() + public DefaultRenderContext() { super(); - this.attributes = new HashMap(); } - @SuppressWarnings("unchecked") - public AbstractRenderContext(Map attributes) + public DefaultRenderContext(Map attributes) { super(); - this.attributes = (Map) attributes; + this.attributes.putAll(attributes); + } + + public DefaultRenderContext(RenderContext renderContext) + { + super(); + + Map attributes = renderContext.getAttributes(); + if (attributes != null) + this.attributes.putAll(attributes); } public void setAttributes(Map attributes) @@ -47,7 +54,7 @@ public abstract class AbstractRenderContext implements RenderContext @Override public T getAttribute(String name) { - return (T) (this.attributes == null ? null : this.attributes.get(name)); + return (T) this.attributes.get(name); } @Override diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/FileTemplateDashboardWidgetResManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/FileTemplateDashboardWidgetResManager.java index a2744bf2..bef0e56a 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/FileTemplateDashboardWidgetResManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/FileTemplateDashboardWidgetResManager.java @@ -94,7 +94,7 @@ public class FileTemplateDashboardWidgetResManager extends AbstractTemplateDashb } @Override - public Reader getTemplateReader(TemplateDashboardWidget widget, String template) throws IOException + public Reader getTemplateReader(TemplateDashboardWidget widget, String template) throws IOException { if (this.templateAsContent) { @@ -112,7 +112,7 @@ public class FileTemplateDashboardWidgetResManager extends AbstractTemplateDashb } @Override - public Writer getTemplateWriter(TemplateDashboardWidget widget, String template) throws IOException + public Writer getTemplateWriter(TemplateDashboardWidget widget, String template) throws IOException { if (this.templateAsContent) throw new UnsupportedOperationException(); @@ -168,12 +168,12 @@ public class FileTemplateDashboardWidgetResManager extends AbstractTemplateDashb File directory = FileUtil.getDirectory(this.rootDirectory, id, false); if (!directory.exists()) - return new ArrayList(0); + return new ArrayList<>(0); - List files = new ArrayList(); + List files = new ArrayList<>(); listAllDescendentFiles(directory, files); - List resources = new ArrayList(files.size()); + List resources = new ArrayList<>(files.size()); for (File file : files) { @@ -235,7 +235,7 @@ public class FileTemplateDashboardWidgetResManager extends AbstractTemplateDashb * @param template * @return */ - protected String getResourceNameForTemplate(TemplateDashboardWidget widget, String template) + protected String getResourceNameForTemplate(TemplateDashboardWidget widget, String template) { return template; } 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 1db94c09..cd5c2341 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 @@ -76,7 +76,7 @@ public class JsonChartPluginPropertiesResolver * @param chartPlugin * @param properties */ - public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, Map properties) + public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, Map properties) { chartPlugin.setId((String) properties.get(ChartPlugin.PROPERTY_ID)); chartPlugin.setNameLabel(convertToLabel(properties.get(ChartPlugin.PROPERTY_NAME_LABEL))); @@ -97,7 +97,7 @@ public class JsonChartPluginPropertiesResolver * @param json * @throws IOException */ - public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, String json) throws IOException + public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, String json) throws IOException { @SuppressWarnings("unchecked") Map properties = JsonSupport.parseNonStardand(json, Map.class); @@ -111,7 +111,7 @@ public class JsonChartPluginPropertiesResolver * @param jsonReader * @throws IOException */ - public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, Reader jsonReader) throws IOException + public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, Reader jsonReader) throws IOException { String json = null; @@ -139,7 +139,7 @@ public class JsonChartPluginPropertiesResolver * @param encoding * @throws IOException */ - public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, InputStream in, String encoding) + public void resolveChartPluginProperties(AbstractChartPlugin chartPlugin, InputStream in, String encoding) throws IOException { Reader reader = IOUtil.getReader(in, encoding); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartPluginManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartPluginManager.java index 1445b795..63ad21eb 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartPluginManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartPluginManager.java @@ -11,7 +11,6 @@ import java.util.List; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; -import org.datagear.analysis.RenderContext; /** * 简单{@linkplain ChartPluginManager}。 @@ -30,31 +29,31 @@ public class SimpleChartPluginManager extends AbstractChartPluginManager } @Override - public void register(ChartPlugin chartPlugin) + public void register(ChartPlugin chartPlugin) { registerChartPlugin(chartPlugin); } @Override - public ChartPlugin[] remove(String... ids) + public ChartPlugin[] remove(String... ids) { return removeChartPlugins(ids); } @Override - public ChartPlugin get(String id) + public ChartPlugin get(String id) { return getChartPlugin(id); } @Override - public List> getAll(Class renderContextType) + public List getAll(Class chartPluginType) { - return findChartPlugins(renderContextType); + return findChartPlugins(chartPluginType); } @Override - public List> getAll() + public List getAll() { return getAllChartPlugins(); } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartWidgetSource.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartWidgetSource.java index 4a086d09..83de10f4 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartWidgetSource.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/SimpleChartWidgetSource.java @@ -11,45 +11,44 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Set; -import org.datagear.analysis.RenderContext; - /** + * 简单{@linkplain ChartWidgetSource}。 + * * @author datagear@163.com * */ public class SimpleChartWidgetSource implements ChartWidgetSource { - private Set> chartWidgets = new HashSet>(); + private Set chartWidgets = new HashSet<>(); public SimpleChartWidgetSource() { super(); } - public SimpleChartWidgetSource(ChartWidget... chartWidgets) + public SimpleChartWidgetSource(ChartWidget... chartWidgets) { super(); this.chartWidgets.addAll(Arrays.asList(chartWidgets)); } - public Set> getChartWidgets() + public Set getChartWidgets() { return chartWidgets; } - public void setChartWidgets(Set> chartWidgets) + public void setChartWidgets(Set chartWidgets) { this.chartWidgets = chartWidgets; } - @SuppressWarnings("unchecked") @Override - public ChartWidget getChartWidget(String id) + public ChartWidget getChartWidget(String id) { - for (ChartWidget chartWidget : this.chartWidgets) + for (ChartWidget chartWidget : this.chartWidgets) { if (chartWidget.getId().equals(id)) - return (ChartWidget) chartWidget; + return chartWidget; } return null; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/AbstractHtmlScriptObjectWriter.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/AbstractHtmlScriptObjectWriter.java index 41a88520..9dd107fe 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/AbstractHtmlScriptObjectWriter.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/AbstractHtmlScriptObjectWriter.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.io.Writer; import java.util.Map; +import org.datagear.analysis.RenderContext; import org.datagear.analysis.support.JsonSupport; import com.fasterxml.jackson.core.JsonGenerator; @@ -38,7 +39,7 @@ public abstract class AbstractHtmlScriptObjectWriter JsonSupport.disableAutoCloseTargetFeature(objectMapper); SimpleModule module = new SimpleModule(RefObjectSerializer.class.getSimpleName()); - module.addSerializer(RefHtmlRenderContext.class, new RefObjectSerializer()); + module.addSerializer(RefRenderContext.class, new RefObjectSerializer()); module.addSerializer(RefHtmlChartPlugin.class, new RefObjectSerializer()); this.objectMapper.registerModule(module); } @@ -117,11 +118,11 @@ public abstract class AbstractHtmlScriptObjectWriter } } - protected static class RefHtmlRenderContext implements HtmlRenderContext, JsonRefObject + protected static class RefRenderContext implements RenderContext, JsonRefObject { private String refName; - public RefHtmlRenderContext(String refName) + public RefRenderContext(String refName) { super(); this.refName = refName; @@ -162,27 +163,9 @@ public abstract class AbstractHtmlScriptObjectWriter { return null; } - - @Override - public WebContext getWebContext() - { - return null; - } - - @Override - public Writer getWriter() - { - return null; - } - - @Override - public int nextSequence() - { - return 0; - } } - protected static class RefHtmlChartPlugin extends HtmlChartPlugin implements JsonRefObject + protected static class RefHtmlChartPlugin extends HtmlChartPlugin implements JsonRefObject { private String refName; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DefaultHtmlRenderContext.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DefaultHtmlRenderContext.java deleted file mode 100644 index ef2f9174..00000000 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DefaultHtmlRenderContext.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2018 datagear.tech. All Rights Reserved. - */ - -/** - * - */ -package org.datagear.analysis.support.html; - -import java.io.Writer; - -import org.datagear.analysis.support.AbstractRenderContext; - -/** - * 默认{@linkplain HtmlRenderContext}。 - * - * @author datagear@163.com - * - */ -public class DefaultHtmlRenderContext extends AbstractRenderContext implements HtmlRenderContext -{ - private WebContext webContext; - - private Writer writer; - - private int sequence = 1; - - public DefaultHtmlRenderContext() - { - super(); - } - - public DefaultHtmlRenderContext(WebContext webContext, Writer writer) - { - super(); - this.webContext = webContext; - this.writer = writer; - } - - @Override - public WebContext getWebContext() - { - return webContext; - } - - public void setWebContext(WebContext webContext) - { - this.webContext = webContext; - } - - @Override - public Writer getWriter() - { - return this.writer; - } - - public void setWriter(Writer writer) - { - this.writer = writer; - } - - @Override - public int nextSequence() - { - return this.sequence++; - } -} diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DirectoryHtmlChartPluginManager.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DirectoryHtmlChartPluginManager.java index 1bb7c041..c4baad1f 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DirectoryHtmlChartPluginManager.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/DirectoryHtmlChartPluginManager.java @@ -16,7 +16,6 @@ import java.util.zip.ZipOutputStream; import org.datagear.analysis.Category; import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; -import org.datagear.analysis.RenderContext; import org.datagear.analysis.support.ConcurrentChartPluginManager; import org.datagear.util.FileUtil; import org.datagear.util.IOUtil; @@ -46,9 +45,9 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage private long readCheckForReloadTimeThreashold = (LOGGER.isDebugEnabled() ? 0 : 5 * 60 * 1000); - private Map pluginIdFileNameMap = new HashMap(); + private Map pluginIdFileNameMap = new HashMap<>(); - private Map fileNameCheckTimeMap = new HashMap(); + private Map fileNameCheckTimeMap = new HashMap<>(); private volatile long _prevReadCheckForReloadTime = 0; @@ -141,7 +140,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } @Override - public ChartPlugin get(String id) + public ChartPlugin get(String id) { readCheckForReload(); @@ -149,7 +148,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } @Override - public List> getAll(Class renderContextType) + public List getAll(Class renderContextType) { readCheckForReload(); @@ -157,7 +156,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } @Override - public List> getAll() + public List getAll() { readCheckForReload(); @@ -175,9 +174,9 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage * @return * @throws IOException */ - public Set> upload(File file) throws IOException + public Set upload(File file) throws IOException { - Set> ids = new HashSet>(); + Set ids = new HashSet<>(); WriteLock writeLock = lock.writeLock(); @@ -228,14 +227,14 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } } - protected void upload(File file, Set> plugins, int depth) throws IOException + protected void upload(File file, Set plugins, int depth) throws IOException { if (depth > 1 || !file.exists()) return; if (file.isDirectory()) { - HtmlChartPlugin myPlugin = this.htmlChartPluginLoader.load(file); + HtmlChartPlugin myPlugin = this.htmlChartPluginLoader.load(file); inflateCagetory(myPlugin); if (myPlugin != null) @@ -256,7 +255,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } else if (this.htmlChartPluginLoader.isHtmlChartPluginZip(file)) { - HtmlChartPlugin myPlugin = this.htmlChartPluginLoader.loadZip(file); + HtmlChartPlugin myPlugin = this.htmlChartPluginLoader.loadZip(file); inflateCagetory(myPlugin); if (myPlugin != null) @@ -283,8 +282,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } } - protected HtmlChartPlugin registerForUpload(HtmlChartPlugin uploadPlugin, File uploadPluginFile) - throws IOException + protected HtmlChartPlugin registerForUpload(HtmlChartPlugin uploadPlugin, File uploadPluginFile) throws IOException { if (!isLegalChartPlugin(uploadPlugin)) return null; @@ -302,7 +300,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage else { String loadedPluginId = getFilePluginId(pluginFileName); - ChartPlugin loadedPlugin = (loadedPluginId == null ? null : getChartPlugin(loadedPluginId)); + ChartPlugin loadedPlugin = (loadedPluginId == null ? null : getChartPlugin(loadedPluginId)); // 同名文件不是插件,则删除它并拷入新文件 if (loadedPlugin == null) @@ -338,9 +336,9 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } @Override - protected ChartPlugin removeChartPlugin(String id) + protected ChartPlugin removeChartPlugin(String id) { - ChartPlugin plugin = super.removeChartPlugin(id); + ChartPlugin plugin = super.removeChartPlugin(id); deletePluginFile(id); return plugin; @@ -413,7 +411,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage */ protected void checkForReload() { - List reloads = new ArrayList(); + List reloads = new ArrayList<>(); // 是否有删除插件文件,如果有删除,那么全部重新加载 boolean hasDelete = false; @@ -503,11 +501,11 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage * {@linkplain #directory}目录下的一个文件 * @return */ - protected HtmlChartPlugin loadAndRegisterHtmlChartPlugin(File file) + protected HtmlChartPlugin loadAndRegisterHtmlChartPlugin(File file) { try { - HtmlChartPlugin plugin = this.htmlChartPluginLoader.loadFile(file); + HtmlChartPlugin plugin = this.htmlChartPluginLoader.loadFile(file); inflateCagetory(plugin); return registerHtmlChartPlugin(plugin, file); } @@ -530,7 +528,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage * {@linkplain #directory}目录下的一个文件 * @return */ - protected HtmlChartPlugin registerHtmlChartPlugin(HtmlChartPlugin plugin, File file) + protected HtmlChartPlugin registerHtmlChartPlugin(HtmlChartPlugin plugin, File file) { String fileName = file.getName(); @@ -550,7 +548,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } @Override - protected boolean canReplaceForSameId(ChartPlugin my, Version myVersion, ChartPlugin old, Version oldVersion) + protected boolean canReplaceForSameId(ChartPlugin my, Version myVersion, ChartPlugin old, Version oldVersion) { // 调试模式下总替换 if (LOGGER.isDebugEnabled()) @@ -559,7 +557,7 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage return super.canReplaceForSameId(my, myVersion, old, oldVersion); } - protected boolean inflateCagetory(HtmlChartPlugin plugin) + protected boolean inflateCagetory(HtmlChartPlugin plugin) { if (plugin == null) return false; @@ -572,14 +570,14 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage if (category.hasNameLabel()) return false; - Map> map = getChartPluginMap(); + Map map = getChartPluginMap(); - for (ChartPlugin chartPlugin : map.values()) + for (ChartPlugin chartPlugin : map.values()) { Category myCategory = chartPlugin.getCategory(); - if (myCategory != null && myCategory.hasNameLabel() - && myCategory.getName() != null && myCategory.getName().equals(category.getName())) + if (myCategory != null && myCategory.hasNameLabel() && myCategory.getName() != null + && myCategory.getName().equals(category.getName())) { plugin.setCategory(myCategory); return true; @@ -626,15 +624,15 @@ public class DirectoryHtmlChartPluginManager extends ConcurrentChartPluginManage } @Override - protected boolean isLegalChartPlugin(ChartPlugin chartPlugin) + protected boolean isLegalChartPlugin(ChartPlugin chartPlugin) { boolean legal = super.isLegalChartPlugin(chartPlugin); if (legal) { - if (chartPlugin instanceof HtmlChartPlugin) + if (chartPlugin instanceof HtmlChartPlugin) { - HtmlChartPlugin htmlChartPlugin = (HtmlChartPlugin) chartPlugin; + HtmlChartPlugin htmlChartPlugin = (HtmlChartPlugin) chartPlugin; if (htmlChartPlugin.getChartRenderer() == null) legal = false; 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 69fe3a72..865e86b6 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 @@ -30,7 +30,7 @@ public class HtmlChart extends Chart super(); } - public HtmlChart(String id, String name, ChartDataSet[] chartDataSets, ChartPlugin plugin, + public HtmlChart(String id, String name, ChartDataSet[] chartDataSets, ChartPlugin plugin, RenderContext renderContext, String elementId, String varName) { super(id, name, chartDataSets, plugin, renderContext); @@ -38,8 +38,8 @@ public class HtmlChart extends Chart this.varName = varName; } - public HtmlChart(ChartDefinition chartDefinition, ChartPlugin plugin, RenderContext renderContext, - String elementId, String varName) + public HtmlChart(ChartDefinition chartDefinition, ChartPlugin plugin, RenderContext renderContext, String elementId, + String varName) { super(chartDefinition, plugin, renderContext); this.elementId = elementId; @@ -47,30 +47,15 @@ public class HtmlChart extends Chart } @Override - public HtmlRenderContext getRenderContext() + public HtmlChartPlugin getPlugin() { - return (HtmlRenderContext) super.getRenderContext(); + return (HtmlChartPlugin) super.getPlugin(); } @Override - public void setRenderContext(RenderContext renderContext) + public void setPlugin(ChartPlugin plugin) { - if (renderContext != null && !(renderContext instanceof HtmlRenderContext)) - throw new IllegalArgumentException(); - - super.setRenderContext(renderContext); - } - - @Override - public HtmlChartPlugin getPlugin() - { - return (HtmlChartPlugin) super.getPlugin(); - } - - @Override - public void setPlugin(ChartPlugin plugin) - { - if (plugin != null && !(plugin instanceof HtmlChartPlugin)) + if (plugin != null && !(plugin instanceof HtmlChartPlugin)) throw new IllegalArgumentException(); super.setPlugin(plugin); 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 4f3883e8..be3185af 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 @@ -9,18 +9,20 @@ package org.datagear.analysis.support.html; import java.io.IOException; import java.io.Writer; +import java.util.Arrays; +import java.util.Collection; -import org.datagear.analysis.Chart; import org.datagear.analysis.ChartDefinition; +import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderException; import org.datagear.analysis.support.AbstractChartPlugin; -import org.datagear.util.StringUtil; +import org.datagear.analysis.support.html.HtmlChartRenderAttr.HtmlChartRenderOption; import org.datagear.util.i18n.Label; /** * HTML图表插件。 *

- * 此类将图表代码(HTML、JavaScript)输出至{@linkplain HtmlRenderContext#getWriter()}。 + * 此类将图表代码(HTML、JavaScript)输出至{@linkplain HtmlRenderAttr#getHtmlWriter(RenderContext)}。 *

*

* 输出格式为: @@ -45,13 +47,16 @@ import org.datagear.util.i18n.Label; * * *

- * {@linkplain HtmlChartPluginRenderOption}可自定义上述输出内容。 + * {@linkplain HtmlChartRenderAttr#getRenderOption(RenderContext)}可自定义上述输出内容。 + *

+ *

+ * 注意:此类{@linkplain #renderChart(RenderContext, ChartDefinition)}的{@linkplain RenderContext}必须符合{@linkplain HtmlChartRenderAttr#inflate(RenderContext, Writer, HtmlChartRenderOption)}规范。 *

* * @author datagear@163.com * */ -public class HtmlChartPlugin extends AbstractChartPlugin +public class HtmlChartPlugin extends AbstractChartPlugin { public static final String PROPERTY_CHART_RENDERER = "chartRenderer"; @@ -131,16 +136,18 @@ public class HtmlChartPlugin extends AbstractChartP } @Override - public Chart renderChart(T renderContext, ChartDefinition chartDefinition) throws RenderException + public HtmlChart renderChart(RenderContext renderContext, ChartDefinition chartDefinition) throws RenderException { - HtmlChartPluginRenderOption option = getOptionInitialized(renderContext); + HtmlChartRenderAttr renderAttr = getHtmlChartRenderAttrNonNull(renderContext); + Writer out = renderAttr.getHtmlWriterNonNull(renderContext); + HtmlChartRenderOption option = renderAttr.getRenderOptionNonNull(renderContext); HtmlChart chart = createHtmlChart(renderContext, chartDefinition, option); try { - writeChartElement(renderContext, option); - writeScript(renderContext, chart, option); + writeChartElement(renderContext, renderAttr, out, option); + writeScript(renderContext, renderAttr, out, chart, option); } catch (IOException e) { @@ -150,80 +157,81 @@ public class HtmlChartPlugin extends AbstractChartP return chart; } - protected HtmlChart createHtmlChart(T renderContext, ChartDefinition chartDefinition, - HtmlChartPluginRenderOption option) + protected HtmlChart createHtmlChart(RenderContext renderContext, ChartDefinition chartDefinition, + HtmlChartRenderOption option) { - return new HtmlChart(chartDefinition, this, renderContext, - option.getChartElementId(), option.getChartVarName()); + return new HtmlChart(chartDefinition, this, renderContext, option.getChartElementId(), + option.getChartVarName()); } - protected boolean writeChartElement(T renderContext, HtmlChartPluginRenderOption option) throws IOException + protected boolean writeChartElement(RenderContext renderContext, HtmlChartRenderAttr renderAttr, Writer out, + HtmlChartRenderOption option) throws IOException { if (option.isNotWriteChartElement()) return false; - Writer writer = renderContext.getWriter(); - - writer.write("<" + this.elementTagName + " id=\"" + option.getChartElementId() + "\">"); - writer.write(""); - writeNewLine(writer); + out.write("<" + this.elementTagName + " id=\"" + option.getChartElementId() + "\">"); + out.write(""); + writeNewLine(out); return true; } - protected void writeScript(T renderContext, HtmlChart chart, HtmlChartPluginRenderOption optionInitialized) - throws IOException + protected void writeScript(RenderContext renderContext, HtmlChartRenderAttr renderAttr, Writer out, HtmlChart chart, + HtmlChartRenderOption optionInitialized) throws IOException { - Writer out = renderContext.getWriter(); - if (!optionInitialized.isNotWriteScriptTag()) { - writeScriptStartTag(renderContext); + writeScriptStartTag(renderContext, out); writeNewLine(out); } - writePluginJsObject(renderContext, chart, optionInitialized); - writeRenderContextJsObject(renderContext, chart, optionInitialized); - writeChartJsObject(renderContext, chart, optionInitialized); + writePluginJsObject(renderContext, renderAttr, out, chart, optionInitialized); + writeRenderContextJsObject(renderContext, renderAttr, out, chart, optionInitialized); + writeChartJsObject(renderContext, renderAttr, out, chart, optionInitialized); if (!optionInitialized.isNotWriteScriptTag()) { - writeScriptEndTag(renderContext); + writeScriptEndTag(renderContext, out); writeNewLine(out); } } - protected boolean writePluginJsObject(T renderContext, HtmlChart chart, - HtmlChartPluginRenderOption optionInitialized) throws IOException + protected boolean writePluginJsObject(RenderContext renderContext, HtmlChartRenderAttr renderAttr, Writer out, + HtmlChart chart, HtmlChartRenderOption optionInitialized) throws IOException { if (optionInitialized.isNotWritePluginObject()) return false; - Writer out = renderContext.getWriter(); - HtmlChartPlugin plugin = chart.getPlugin(); + HtmlChartPlugin plugin = chart.getPlugin(); getHtmlChartPluginScriptObjectWriter().write(out, plugin, optionInitialized.getPluginVarName()); return true; } - protected boolean writeRenderContextJsObject(T renderContext, HtmlChart chart, - HtmlChartPluginRenderOption optionInitialized) throws IOException + protected boolean writeRenderContextJsObject(RenderContext renderContext, HtmlChartRenderAttr renderAttr, + Writer out, HtmlChart chart, HtmlChartRenderOption optionInitialized) throws IOException { if (optionInitialized.isNotWriteRenderContextObject()) return false; - Writer out = renderContext.getWriter(); - getHtmlRenderContextScriptObjectWriter().write(out, renderContext, optionInitialized.getRenderContextVarName()); + getHtmlRenderContextScriptObjectWriter().write(out, renderContext, optionInitialized.getRenderContextVarName(), + getHtmlRenderContextIgnoreAttrs(renderContext, renderAttr, out, chart)); return true; } - protected void writeChartJsObject(T renderContext, HtmlChart chart, HtmlChartPluginRenderOption optionInitialized) - throws IOException + protected Collection getHtmlRenderContextIgnoreAttrs(RenderContext renderContext, + HtmlChartRenderAttr renderAttr, Writer out, HtmlChart chart) { - Writer out = renderContext.getWriter(); + Collection ignores = renderAttr.getIgnoreRenderAttrs(renderContext); + return (ignores != null ? ignores : Arrays.asList(renderAttr.getHtmlWriterName())); + } + protected void writeChartJsObject(RenderContext renderContext, HtmlChartRenderAttr renderAttr, Writer out, + HtmlChart chart, HtmlChartRenderOption optionInitialized) throws IOException + { if (optionInitialized.isWriteChartJson()) getHtmlChartScriptObjectWriter().writeJson(out, chart, optionInitialized.getRenderContextVarName(), optionInitialized.getPluginVarName()); @@ -254,98 +262,23 @@ public class HtmlChartPlugin extends AbstractChartP return HTML_CHART_SCRIPT_OBJECT_WRITER; } - /** - * 写脚本开始标签。 - * - * @param renderContext - * @throws IOException - */ - protected void writeScriptStartTag(T renderContext) throws IOException + protected void writeScriptStartTag(RenderContext renderContext, Writer out) throws IOException { - renderContext.getWriter().write(""); + out.write(""); } - /** - * 写换行符。 - * - * @param out - * @throws IOException - */ protected void writeNewLine(Writer out) throws IOException { out.write(getNewLine()); } - /** - * 获取已初始化的{@linkplain HtmlChartPluginRenderOption}。 - *

- * 它的{@linkplain HtmlChartPluginRenderOption#getChartElementId()}、 - * {@linkplain HtmlChartPluginRenderOption#getPluginVarName()}、 - * {@linkplain HtmlChartPluginRenderOption#getRenderContextVarName()}、 - * {@linkplain HtmlChartPluginRenderOption#getChartVarName()}都是已初始化的。 - *

- * - * @param renderContext - * @return - */ - protected HtmlChartPluginRenderOption getOptionInitialized(T renderContext) + protected HtmlChartRenderAttr getHtmlChartRenderAttrNonNull(RenderContext renderContext) { - HtmlChartPluginRenderOption option = HtmlChartPluginRenderOption.getOption(renderContext); - if (option == null) - { - option = new HtmlChartPluginRenderOption(); - option.setNotWriteChartElement(false); - option.setNotWritePluginObject(false); - option.setNotWriteRenderContextObject(false); - option.setNotWriteScriptTag(false); - option.setNotWriteInvoke(false); - option.setWriteChartJson(false); - } - - String chartElementId = option.getChartElementId(); - String pluginVarName = option.getPluginVarName(); - String renderContextVarName = option.getRenderContextVarName(); - String chartVarName = option.getChartVarName(); - - if (option.isNotWriteChartElement() && StringUtil.isEmpty(chartElementId)) - throw new RenderException( - "[" + HtmlChartPluginRenderOption.class.getSimpleName() + ".elementId] must be set"); - - if (StringUtil.isEmpty(chartElementId)) - { - chartElementId = HtmlRenderAttributes.generateChartElementId(renderContext); - option.setChartElementId(chartElementId); - } - - if (StringUtil.isEmpty(pluginVarName)) - { - pluginVarName = HtmlRenderAttributes.generateChartPluginVarName(renderContext); - option.setPluginVarName(pluginVarName); - } - - if (StringUtil.isEmpty(renderContextVarName)) - { - renderContextVarName = HtmlRenderAttributes.generateRenderContextVarName(renderContext); - option.setRenderContextVarName(renderContextVarName); - } - - if (StringUtil.isEmpty(chartVarName)) - { - chartVarName = HtmlRenderAttributes.generateChartVarName(renderContext); - option.setChartVarName(chartVarName); - } - - return option; + return HtmlChartRenderAttr.getNonNull(renderContext); } } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginLoader.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginLoader.java index dab91704..79406e48 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginLoader.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginLoader.java @@ -209,7 +209,7 @@ public class HtmlChartPluginLoader * @return * @throws HtmlChartPluginLoadException */ - public HtmlChartPlugin load(File directory) throws HtmlChartPluginLoadException + public HtmlChartPlugin load(File directory) throws HtmlChartPluginLoadException { return loadSingleForDirectory(directory); } @@ -221,7 +221,7 @@ public class HtmlChartPluginLoader * @return * @throws HtmlChartPluginLoadException */ - public HtmlChartPlugin loadZip(File zip) throws HtmlChartPluginLoadException + public HtmlChartPlugin loadZip(File zip) throws HtmlChartPluginLoadException { return loadSingleForZip(zip); } @@ -233,7 +233,7 @@ public class HtmlChartPluginLoader * @return * @throws HtmlChartPluginLoadException */ - public HtmlChartPlugin loadZip(ZipInputStream in) throws HtmlChartPluginLoadException + public HtmlChartPlugin loadZip(ZipInputStream in) throws HtmlChartPluginLoadException { return loadSingleForZip(in); } @@ -245,9 +245,9 @@ public class HtmlChartPluginLoader * @return * @throws HtmlChartPluginLoadException */ - public HtmlChartPlugin loadFile(File file) throws HtmlChartPluginLoadException + public HtmlChartPlugin loadFile(File file) throws HtmlChartPluginLoadException { - HtmlChartPlugin plugin = null; + HtmlChartPlugin plugin = null; if (file.isDirectory()) plugin = loadSingleForDirectory(file); @@ -269,15 +269,15 @@ public class HtmlChartPluginLoader * @return * @throws HtmlChartPluginLoadException */ - public Set> loads(File file) throws HtmlChartPluginLoadException + public Set loads(File file) throws HtmlChartPluginLoadException { - Set> plugins = new HashSet>(); + Set plugins = new HashSet<>(); if (file.isDirectory()) { if (isHtmlChartPluginDirectory(file)) { - HtmlChartPlugin plugin = load(file); + HtmlChartPlugin plugin = load(file); if (plugin != null) plugins.add(plugin); @@ -288,7 +288,7 @@ public class HtmlChartPluginLoader for (File child : children) { - HtmlChartPlugin plugin = loadFile(child); + HtmlChartPlugin plugin = loadFile(child); if (plugin != null) plugins.add(plugin); @@ -299,7 +299,7 @@ public class HtmlChartPluginLoader { if (isHtmlChartPluginZip(file)) { - HtmlChartPlugin plugin = loadZip(file); + HtmlChartPlugin plugin = loadZip(file); if (plugin != null) plugins.add(plugin); @@ -327,7 +327,7 @@ public class HtmlChartPluginLoader for (File child : children) { - HtmlChartPlugin plugin = loadFile(child); + HtmlChartPlugin plugin = loadFile(child); if (plugin != null) plugins.add(plugin); @@ -340,12 +340,12 @@ public class HtmlChartPluginLoader return plugins; } - protected HtmlChartPlugin loadFileExt(File file) throws HtmlChartPluginLoadException + protected HtmlChartPlugin loadFileExt(File file) throws HtmlChartPluginLoadException { return null; } - protected HtmlChartPlugin loadSingleForZip(File zip) throws HtmlChartPluginLoadException + protected HtmlChartPlugin loadSingleForZip(File zip) throws HtmlChartPluginLoadException { ZipInputStream in = null; @@ -370,7 +370,7 @@ public class HtmlChartPluginLoader } } - protected HtmlChartPlugin loadSingleForZip(ZipInputStream in) throws HtmlChartPluginLoadException + protected HtmlChartPlugin loadSingleForZip(ZipInputStream in) throws HtmlChartPluginLoadException { try { @@ -378,7 +378,7 @@ public class HtmlChartPluginLoader IOUtil.unzip(in, tmpDirectory); - HtmlChartPlugin chartPlugin = loadSingleForDirectory(tmpDirectory); + HtmlChartPlugin chartPlugin = loadSingleForDirectory(tmpDirectory); FileUtil.deleteFile(tmpDirectory); @@ -397,32 +397,33 @@ public class HtmlChartPluginLoader * @return * @throws HtmlChartPluginLoadException */ - protected HtmlChartPlugin loadSingleForDirectory(File directory) throws HtmlChartPluginLoadException + protected HtmlChartPlugin loadSingleForDirectory(File directory) throws HtmlChartPluginLoadException { File chartFile = new File(directory, FILE_NAME_PLUGIN); - + if (!chartFile.exists()) return null; - - HtmlChartPlugin plugin = null; - + + HtmlChartPlugin plugin = null; + Reader chartIn = null; - + try { chartIn = IOUtil.getReader(chartFile, this.encoding); - + JsDefContent jsDefContent = this.htmlChartPluginJsDefResolver.resolve(chartIn); - + if (!StringUtil.isEmpty(jsDefContent.getPluginJson()) && !StringUtil.isEmpty(jsDefContent.getPluginChartRenderer())) { plugin = createHtmlChartPlugin(); - - this.jsonChartPluginPropertiesResolver.resolveChartPluginProperties(plugin, jsDefContent.getPluginJson()); + + this.jsonChartPluginPropertiesResolver.resolveChartPluginProperties(plugin, + jsDefContent.getPluginJson()); plugin.setChartRenderer(new StringJsChartRenderer(jsDefContent.getPluginChartRenderer())); plugin.setIcons(toBytesIconsInDirectory(directory, plugin.getIcons())); - + if (StringUtil.isEmpty(plugin.getId()) || StringUtil.isEmpty(plugin.getNameLabel())) plugin = null; } @@ -439,7 +440,7 @@ public class HtmlChartPluginLoader // 设置为加载时间而不取文件上次修改时间,因为文件上次修改时间可能错乱 if (plugin != null) plugin.setLastModified(System.currentTimeMillis()); - + return plugin; } @@ -449,7 +450,7 @@ public class HtmlChartPluginLoader if (icons == null || icons.isEmpty()) return icons; - Map bytesIcons = new HashMap(); + Map bytesIcons = new HashMap<>(); for (Map.Entry entry : icons.entrySet()) { @@ -521,8 +522,8 @@ public class HtmlChartPluginLoader return FileUtil.isExtension(file, "zip"); } - protected HtmlChartPlugin createHtmlChartPlugin() + protected HtmlChartPlugin createHtmlChartPlugin() { - return new HtmlChartPlugin(); + return new HtmlChartPlugin(); } } diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginRenderOption.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginRenderOption.java deleted file mode 100644 index 5a9acaca..00000000 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartPluginRenderOption.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright (c) 2018 datagear.tech. All Rights Reserved. - */ - -/** - * - */ -package org.datagear.analysis.support.html; - -import java.io.Serializable; - -import org.datagear.analysis.RenderContext; - -/** - * {@linkplain HtmlChartPlugin}渲染设置项。 - * - * @author datagear@163.com - * - */ -public class HtmlChartPluginRenderOption implements Serializable -{ - private static final long serialVersionUID = 1L; - - /** 图表的HTML元素ID */ - private String chartElementId; - - /** 是否不输出图表HTML元素 */ - private boolean notWriteChartElement = false; - - /** 插件变量名 */ - private String pluginVarName; - - /** 是否不输出插件JS对象 */ - private boolean notWritePluginObject = false; - - /** 图表变量名 */ - private String chartVarName; - - /** 渲染上下文变量名 */ - private String renderContextVarName; - - /** 是否不输出渲染上下文JS对象 */ - private boolean notWriteRenderContextObject = false; - - /** 是否不输出{@code "; @@ -46,34 +47,36 @@ public class HtmlTplDashboardWidgetHtmlRendererTest { super(); - HtmlChartPlugin chartPlugin = HtmlChartPluginTest.createHtmlChartPlugin(); + HtmlChartPlugin chartPlugin = HtmlChartPluginTest.createHtmlChartPlugin(); - HtmlChartWidget htmlChartWidget = new HtmlChartWidget("chart-widget-01", - "chart-widget-01", ChartDefinition.EMPTY_CHART_DATA_SET, chartPlugin); + HtmlChartWidget htmlChartWidget = new HtmlChartWidget("chart-widget-01", "chart-widget-01", + ChartDefinition.EMPTY_CHART_DATA_SET, chartPlugin); TemplateDashboardWidgetResManager resManager = new FileTemplateDashboardWidgetResManager( "src/test/resources/org/datagear/analysis/support/html/htmlTplDashboardWidgets/html"); SimpleChartWidgetSource chartWidgetSource = new SimpleChartWidgetSource(htmlChartWidget); - List dashboardImports = new ArrayList(); + List dashboardImports = new ArrayList<>(); dashboardImports.add(new HtmlTplDashboardImport("jquery", IMPORT_CONTENT_JQUERY)); dashboardImports.add(new HtmlTplDashboardImport("util", IMPORT_CONTENT_UTIL)); dashboardImports.add(new HtmlTplDashboardImport("theme", IMPORT_CONTENT_THEME)); dashboardImports.add(new HtmlTplDashboardImport("style", IMPORT_CONTENT_STYLE)); - this.renderer = new HtmlTplDashboardWidgetHtmlRenderer(resManager, chartWidgetSource); + this.renderer = new HtmlTplDashboardWidgetHtmlRenderer(resManager, chartWidgetSource); this.renderer.setDashboardImports(dashboardImports); } @Test public void renderTest() throws Exception { - HtmlTplDashboardWidget dashboardWidget = createHtmlTplDashboardWidget(); + HtmlTplDashboardWidget dashboardWidget = createHtmlTplDashboardWidget(); + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); - HtmlRenderAttributes.setRenderStyle(renderContext, RenderStyle.DARK); + renderAttr.inflate(renderContext, out, new WebContext("", "")); + HtmlTplDashboard dashboard = dashboardWidget.render(renderContext); getHtmlWithPrint(out); @@ -84,19 +87,21 @@ public class HtmlTplDashboardWidgetHtmlRendererTest @Test public void renderHtmlTplDashboardTest() throws Exception { - HtmlTplDashboardWidget dashboardWidget = createHtmlTplDashboardWidget(); + HtmlTplDashboardWidget dashboardWidget = createHtmlTplDashboardWidget(); // 看板属性,双引号 { String template = ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, dashboard, + DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -108,9 +113,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var dataGearDashboard2")); - Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); - Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); + Assert.assertTrue(html.contains("var dataGearDashboardTmp")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboardTmp);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboardTmp;")); } // 看板属性,无引号 @@ -118,12 +123,14 @@ public class HtmlTplDashboardWidgetHtmlRendererTest String template = ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, dashboard, + DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -135,9 +142,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var dataGearDashboard2")); - Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); - Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); + Assert.assertTrue(html.contains("var dataGearDashboardTmp")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboardTmp);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboardTmp;")); } // 看板属性,单引号 @@ -145,12 +152,14 @@ public class HtmlTplDashboardWidgetHtmlRendererTest String template = ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, dashboard, + DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -162,9 +171,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var dataGearDashboard2")); - Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); - Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); + Assert.assertTrue(html.contains("var dataGearDashboardTmp")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboardTmp);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboardTmp;")); } // 看板属性,多个导入排除值 @@ -172,12 +181,14 @@ public class HtmlTplDashboardWidgetHtmlRendererTest String template = ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, dashboard, + DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -189,21 +200,23 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertFalse(html.contains(IMPORT_CONTENT_THEME)); Assert.assertFalse(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var dataGearDashboard2")); - Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); - Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); + Assert.assertTrue(html.contains("var dataGearDashboardTmp")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboardTmp);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboardTmp;")); } // 看板属性,默认 { String template = ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, dashboard, + DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -215,9 +228,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var dataGearDashboard2")); - Assert.assertTrue(html.contains("dashboardFactory.init(dataGearDashboard2);")); - Assert.assertTrue(html.contains("window.dashboard=dataGearDashboard2;")); + Assert.assertTrue(html.contains("var dataGearDashboardTmp")); + Assert.assertTrue(html.contains("dashboardFactory.init(dataGearDashboardTmp);")); + Assert.assertTrue(html.contains("window.dashboard=dataGearDashboardTmp;")); } // 图表属性 @@ -242,12 +255,14 @@ public class HtmlTplDashboardWidgetHtmlRendererTest // + HtmlChartPlugin.HTML_NEW_LINE + ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, dashboard, + DashboardInfo dashboardInfo = this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -273,8 +288,8 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains("
")); Assert.assertTrue(html.contains("
")); Assert.assertTrue( - html.contains("
")); - Assert.assertTrue(html.contains("
")); + html.contains("
")); + Assert.assertTrue(html.contains("
")); Assert.assertTrue(html.contains("
")); Assert.assertTrue(html.contains("
")); Assert.assertTrue(html.contains("")); @@ -284,28 +299,35 @@ public class HtmlTplDashboardWidgetHtmlRendererTest { String template = ""; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); + AddPrefixHtmlTitleHandler htmlTitleHandler = new AddPrefixHtmlTitleHandler("prefix-"); - HtmlRenderAttributes.setHtmlTitleHandler(renderContext, htmlTitleHandler); + renderAttr.setHtmlTitleHandler(renderContext, htmlTitleHandler); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - this.renderer.renderHtmlTplDashboard(renderContext, dashboard, IOUtil.getReader(template)); + this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); Assert.assertTrue(html.contains("prefix-")); } + { String template = "abcsdf"; + RenderContext renderContext = new DefaultRenderContext(); + HtmlTplDashboardRenderAttr renderAttr = new HtmlTplDashboardRenderAttr(); StringWriter out = new StringWriter(); - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(new WebContext("", ""), out); + renderAttr.inflate(renderContext, out, new WebContext("", "")); + AddPrefixHtmlTitleHandler htmlTitleHandler = new AddPrefixHtmlTitleHandler("prefix-"); - HtmlRenderAttributes.setHtmlTitleHandler(renderContext, htmlTitleHandler); + renderAttr.setHtmlTitleHandler(renderContext, htmlTitleHandler); HtmlTplDashboard dashboard = this.renderer.createHtmlTplDashboard(renderContext, dashboardWidget, template); - this.renderer.renderHtmlTplDashboard(renderContext, dashboard, IOUtil.getReader(template)); + this.renderer.renderHtmlTplDashboard(renderContext, renderAttr, dashboard, IOUtil.getReader(template)); String html = getHtmlWithPrint(out); @@ -314,10 +336,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest } } - protected HtmlTplDashboardWidget createHtmlTplDashboardWidget() + protected HtmlTplDashboardWidget createHtmlTplDashboardWidget() { - HtmlTplDashboardWidget dashboardWidget = new HtmlTplDashboardWidget( - "widget01", "index.html", this.renderer); + HtmlTplDashboardWidget dashboardWidget = new HtmlTplDashboardWidget("widget01", "index.html", this.renderer); return dashboardWidget; } diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRendererTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRendererTest.java index b2746376..9722d0e0 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRendererTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRendererTest.java @@ -9,6 +9,7 @@ package org.datagear.analysis.support.html; import java.io.StringReader; +import org.datagear.analysis.RenderContext; import org.junit.Assert; import org.junit.Test; @@ -20,7 +21,7 @@ import org.junit.Test; */ public class HtmlTplDashboardWidgetRendererTest { - private HtmlTplDashboardWidgetRenderer renderer = new TestHtmlTplDashboardWidgetRenderer(); + private HtmlTplDashboardWidgetRenderer renderer = new TestHtmlTplDashboardWidgetRenderer(); @Test public void resolveCharsetTest() throws Exception @@ -96,7 +97,7 @@ public class HtmlTplDashboardWidgetRendererTest } } - private class TestHtmlTplDashboardWidgetRenderer extends HtmlTplDashboardWidgetRenderer + private class TestHtmlTplDashboardWidgetRenderer extends HtmlTplDashboardWidgetRenderer { @Override public String simpleTemplateContent(String htmlCharset, String... chartWidgetId) @@ -105,7 +106,8 @@ public class HtmlTplDashboardWidgetRendererTest } @Override - protected void renderHtmlTplDashboard(T renderContext, HtmlTplDashboard dashboard) throws Throwable + protected void renderHtmlTplDashboard(RenderContext renderContext, HtmlTplDashboardRenderAttr renderAttr, + HtmlTplDashboard dashboard) throws Throwable { } } 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 0068be81..746ac5a1 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 @@ -15,7 +15,6 @@ import org.datagear.analysis.DataSetResult; 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; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -26,7 +25,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; * @author datagear@163.com * */ -public class HtmlChartWidgetEntity extends HtmlChartWidget +public class HtmlChartWidgetEntity extends HtmlChartWidget implements CreateUserEntity, DataPermissionEntity { private static final long serialVersionUID = 1L; @@ -55,8 +54,8 @@ public class HtmlChartWidgetEntity extends HtmlChartWidget this.createTime = new Date(); } - public HtmlChartWidgetEntity(String id, String name, ChartDataSetVO[] chartDataSets, - HtmlChartPlugin chartPlugin, User createUser) + public HtmlChartWidgetEntity(String id, String name, ChartDataSetVO[] chartDataSets, HtmlChartPlugin chartPlugin, + User createUser) { super(id, name, chartDataSets, chartPlugin); super.setChartDataSets(EMPTY_CHART_DATA_VO_SET); @@ -74,12 +73,12 @@ public class HtmlChartWidgetEntity extends HtmlChartWidget super.setChartDataSets(chartDataSetVOs); } - public HtmlChartPlugin getHtmlChartPlugin() + public HtmlChartPlugin getHtmlChartPlugin() { return getPlugin(); } - public void setHtmlChartPlugin(HtmlChartPlugin htmlChartPlugin) + public void setHtmlChartPlugin(HtmlChartPlugin htmlChartPlugin) { setPlugin(htmlChartPlugin); } @@ -138,7 +137,7 @@ public class HtmlChartWidgetEntity extends HtmlChartWidget public void updateChartPluginName(Locale locale) { String name = null; - HtmlChartPlugin plugin = getHtmlChartPlugin(); + HtmlChartPlugin plugin = getHtmlChartPlugin(); if (plugin != null) { diff --git a/datagear-management/src/main/java/org/datagear/management/domain/HtmlTplDashboardWidgetEntity.java b/datagear-management/src/main/java/org/datagear/management/domain/HtmlTplDashboardWidgetEntity.java index 482bfa18..df11fa26 100644 --- a/datagear-management/src/main/java/org/datagear/management/domain/HtmlTplDashboardWidgetEntity.java +++ b/datagear-management/src/main/java/org/datagear/management/domain/HtmlTplDashboardWidgetEntity.java @@ -11,7 +11,6 @@ import java.util.Collection; import java.util.Date; import org.datagear.analysis.support.JsonSupport; -import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.analysis.support.html.HtmlTplDashboardWidget; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetHtmlRenderer; import org.datagear.util.StringUtil; @@ -22,7 +21,7 @@ import org.datagear.util.StringUtil; * @author datagear@163.com * */ -public class HtmlTplDashboardWidgetEntity extends HtmlTplDashboardWidget +public class HtmlTplDashboardWidgetEntity extends HtmlTplDashboardWidget implements CreateUserEntity, DataPermissionEntity { private static final long serialVersionUID = 1L; @@ -52,8 +51,8 @@ public class HtmlTplDashboardWidgetEntity extends HtmlTplDashboardWidget renderer, String name, User createUser) + public HtmlTplDashboardWidgetEntity(String id, String template, HtmlTplDashboardWidgetHtmlRenderer renderer, + String name, User createUser) { super(id, template, renderer); this.name = name; diff --git a/datagear-management/src/main/java/org/datagear/management/service/HtmlTplDashboardWidgetEntityService.java b/datagear-management/src/main/java/org/datagear/management/service/HtmlTplDashboardWidgetEntityService.java index d1c0aa44..5243776b 100644 --- a/datagear-management/src/main/java/org/datagear/management/service/HtmlTplDashboardWidgetEntityService.java +++ b/datagear-management/src/main/java/org/datagear/management/service/HtmlTplDashboardWidgetEntityService.java @@ -7,7 +7,6 @@ */ package org.datagear.management.service; -import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.analysis.support.html.HtmlTplDashboardWidget; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer; import org.datagear.management.domain.HtmlTplDashboardWidgetEntity; @@ -27,7 +26,7 @@ public interface HtmlTplDashboardWidgetEntityService * * @return */ - HtmlTplDashboardWidgetRenderer getHtmlTplDashboardWidgetRenderer(); + HtmlTplDashboardWidgetRenderer getHtmlTplDashboardWidgetRenderer(); /** * 获取可用于执行分析的{@linkplain HtmlTplDashboardWidget}。 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 4137b3fd..76e4d513 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 @@ -18,14 +18,11 @@ import java.util.Set; import org.apache.ibatis.session.SqlSessionFactory; import org.datagear.analysis.ChartDataSet; -import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; import org.datagear.analysis.DataSet; -import org.datagear.analysis.RenderContext; import org.datagear.analysis.support.ChartWidget; import org.datagear.analysis.support.JsonSupport; import org.datagear.analysis.support.html.HtmlChartPlugin; -import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.management.domain.ChartDataSetVO; import org.datagear.management.domain.HtmlChartWidgetEntity; import org.datagear.management.domain.User; @@ -108,9 +105,8 @@ public class HtmlChartWidgetEntityServiceImpl this.authorizationService = authorizationService; } - @SuppressWarnings("unchecked") @Override - public ChartWidget getChartWidget(String id) throws Throwable + public ChartWidget getChartWidget(String id) throws Throwable { ChartWidgetSourceContext context = ChartWidgetSourceContext.get(); @@ -127,7 +123,7 @@ public class HtmlChartWidgetEntityServiceImpl setHtmlChartPlugin(entity, true); setChartDataSets(entity, true); - return (ChartWidget) entity; + return entity; } @Override @@ -223,11 +219,11 @@ public class HtmlChartWidgetEntityServiceImpl protected void setHtmlChartPlugin(HtmlChartWidgetEntity obj, boolean forAnalysis) { - HtmlChartPlugin htmlChartPlugin = obj.getHtmlChartPlugin(); + HtmlChartPlugin htmlChartPlugin = obj.getHtmlChartPlugin(); if (htmlChartPlugin != null) { - HtmlChartPlugin full = getHtmlChartPlugin(htmlChartPlugin.getId()); + HtmlChartPlugin full = getHtmlChartPlugin(htmlChartPlugin.getId()); if (forAnalysis) obj.setHtmlChartPlugin(full); @@ -339,10 +335,9 @@ public class HtmlChartWidgetEntityServiceImpl return paramValues; } - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected HtmlChartPlugin getHtmlChartPlugin(String id) + protected HtmlChartPlugin getHtmlChartPlugin(String id) { - return (HtmlChartPlugin) (ChartPlugin) this.chartPluginManager.get(id); + return (HtmlChartPlugin) this.chartPluginManager.get(id); } protected List getWidgetDataSetRelations(HtmlChartWidgetEntity obj) diff --git a/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlTplDashboardWidgetEntityServiceImpl.java b/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlTplDashboardWidgetEntityServiceImpl.java index 9679da3f..6fac08b8 100644 --- a/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlTplDashboardWidgetEntityServiceImpl.java +++ b/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlTplDashboardWidgetEntityServiceImpl.java @@ -11,8 +11,6 @@ import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSessionFactory; -import org.datagear.analysis.support.html.HtmlRenderContext; -import org.datagear.analysis.support.html.HtmlTplDashboardWidgetHtmlRenderer; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer; import org.datagear.management.domain.HtmlTplDashboardWidgetEntity; import org.datagear.management.domain.User; @@ -33,7 +31,7 @@ public class HtmlTplDashboardWidgetEntityServiceImpl { protected static final String SQL_NAMESPACE = HtmlTplDashboardWidgetEntity.class.getName(); - private HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer; + private HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer; private AuthorizationService authorizationService; @@ -42,34 +40,29 @@ public class HtmlTplDashboardWidgetEntityServiceImpl super(); } - @SuppressWarnings("unchecked") public HtmlTplDashboardWidgetEntityServiceImpl(SqlSessionFactory sqlSessionFactory, - HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer, - AuthorizationService authorizationService) + HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer, AuthorizationService authorizationService) { super(sqlSessionFactory); - this.htmlTplDashboardWidgetRenderer = (HtmlTplDashboardWidgetHtmlRenderer) htmlTplDashboardWidgetRenderer; + this.htmlTplDashboardWidgetRenderer = htmlTplDashboardWidgetRenderer; this.authorizationService = authorizationService; } - @SuppressWarnings("unchecked") public HtmlTplDashboardWidgetEntityServiceImpl(SqlSessionTemplate sqlSessionTemplate, - HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer, - AuthorizationService authorizationService) + HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer, AuthorizationService authorizationService) { super(sqlSessionTemplate); - this.htmlTplDashboardWidgetRenderer = (HtmlTplDashboardWidgetHtmlRenderer) htmlTplDashboardWidgetRenderer; + this.htmlTplDashboardWidgetRenderer = htmlTplDashboardWidgetRenderer; this.authorizationService = authorizationService; } @Override - public HtmlTplDashboardWidgetRenderer getHtmlTplDashboardWidgetRenderer() + public HtmlTplDashboardWidgetRenderer getHtmlTplDashboardWidgetRenderer() { return htmlTplDashboardWidgetRenderer; } - public void setHtmlTplDashboardWidgetRenderer( - HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer) + public void setHtmlTplDashboardWidgetRenderer(HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer) { this.htmlTplDashboardWidgetRenderer = htmlTplDashboardWidgetRenderer; } 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 27a44dc6..e2ebed4a 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 @@ -17,9 +17,9 @@ import javax.servlet.http.HttpServletRequest; import org.datagear.analysis.Category; import org.datagear.analysis.Chart; import org.datagear.analysis.ChartDefinition; -import org.datagear.analysis.ChartPlugin; 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.AbstractChartPlugin; @@ -27,7 +27,6 @@ import org.datagear.analysis.support.CategorizationResolver; import org.datagear.analysis.support.CategorizationResolver.Categorization; import org.datagear.analysis.support.html.DirectoryHtmlChartPluginManager; import org.datagear.analysis.support.html.HtmlChartPlugin; -import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.util.i18n.Label; import org.datagear.web.util.KeywordMatcher; import org.datagear.web.util.WebUtils; @@ -85,23 +84,18 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont */ protected HtmlChartPluginVO getHtmlChartPluginVO(HttpServletRequest request, String id) { - List> plugins = getDirectoryHtmlChartPluginManager() - .getAll(HtmlRenderContext.class); + List plugins = getDirectoryHtmlChartPluginManager().getAll(HtmlChartPlugin.class); if (plugins == null) return null; - for (ChartPlugin plugin : plugins) + for (HtmlChartPlugin plugin : plugins) { - if (plugin instanceof HtmlChartPlugin) + if (plugin.getId().equals(id)) { - HtmlChartPlugin htmlChartPlugin = (HtmlChartPlugin) plugin; - if (htmlChartPlugin.getId().equals(id)) - { - Locale locale = WebUtils.getLocale(request); - RenderStyle renderStyle = resolveRenderStyle(request); - return toHtmlChartPluginVO(htmlChartPlugin, renderStyle, locale); - } + Locale locale = WebUtils.getLocale(request); + RenderStyle renderStyle = resolveRenderStyle(request); + return toHtmlChartPluginVO(plugin, renderStyle, locale); } } @@ -117,24 +111,17 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont */ protected List findHtmlChartPluginVOs(HttpServletRequest request, String keyword) { - List pluginViews = new ArrayList(); + List pluginViews = new ArrayList<>(); - List> plugins = getDirectoryHtmlChartPluginManager() - .getAll(HtmlRenderContext.class); + List plugins = getDirectoryHtmlChartPluginManager().getAll(HtmlChartPlugin.class); if (plugins != null) { Locale locale = WebUtils.getLocale(request); RenderStyle renderStyle = resolveRenderStyle(request); - for (ChartPlugin plugin : plugins) - { - if (plugin instanceof HtmlChartPlugin) - { - HtmlChartPlugin htmlChartPlugin = (HtmlChartPlugin) plugin; - pluginViews.add(toHtmlChartPluginVO(htmlChartPlugin, renderStyle, locale)); - } - } + for (HtmlChartPlugin plugin : plugins) + pluginViews.add(toHtmlChartPluginVO(plugin, renderStyle, locale)); } return KeywordMatcher. match(pluginViews, keyword, @@ -149,7 +136,7 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont }); } - protected HtmlChartPluginVO toHtmlChartPluginVO(HttpServletRequest request, HtmlChartPlugin chartPlugin) + protected HtmlChartPluginVO toHtmlChartPluginVO(HttpServletRequest request, HtmlChartPlugin chartPlugin) { Locale locale = WebUtils.getLocale(request); RenderStyle renderStyle = resolveRenderStyle(request); @@ -157,8 +144,7 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont return toHtmlChartPluginVO(chartPlugin, renderStyle, locale); } - protected HtmlChartPluginVO toHtmlChartPluginVO(HtmlChartPlugin chartPlugin, RenderStyle renderStyle, - Locale locale) + protected HtmlChartPluginVO toHtmlChartPluginVO(HtmlChartPlugin chartPlugin, RenderStyle renderStyle, Locale locale) { HtmlChartPluginVO pluginVO = new HtmlChartPluginVO(); @@ -176,11 +162,10 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont List dataSigns = chartPlugin.getDataSigns(); if (dataSigns != null) { - List dataSignVOs = new ArrayList(dataSigns.size()); + List dataSignVOs = new ArrayList<>(dataSigns.size()); for (DataSign dataSign : dataSigns) { - DataSign view = new DataSign(dataSign.getName(), dataSign.isRequired(), - dataSign.isMultiple()); + DataSign view = new DataSign(dataSign.getName(), dataSign.isRequired(), dataSign.isMultiple()); view.setNameLabel(toConcreteLabel(dataSign.getNameLabel(), locale)); view.setDescLabel(toConcreteLabel(dataSign.getDescLabel(), locale)); @@ -218,7 +203,7 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont return new Label(value); } - protected String resolveIconUrl(HtmlChartPlugin plugin) + protected String resolveIconUrl(HtmlChartPlugin plugin) { return "/analysis/chartPlugin/icon/" + plugin.getId(); } @@ -229,7 +214,7 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont * @author datagear@163.com * */ - public static class HtmlChartPluginVO extends AbstractChartPlugin implements Serializable + public static class HtmlChartPluginVO extends AbstractChartPlugin implements Serializable { private static final long serialVersionUID = 1L; @@ -268,8 +253,7 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont } @Override - public Chart renderChart(HtmlRenderContext renderContext, ChartDefinition chartDefinition) - throws RenderException + public Chart renderChart(RenderContext renderContext, ChartDefinition chartDefinition) throws RenderException { throw new UnsupportedOperationException(); } diff --git a/datagear-web/src/main/java/org/datagear/web/controller/AbstractDataAnalysisController.java b/datagear-web/src/main/java/org/datagear/web/controller/AbstractDataAnalysisController.java index 4e37f284..db70f0d3 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/AbstractDataAnalysisController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/AbstractDataAnalysisController.java @@ -10,6 +10,7 @@ package org.datagear.web.controller; import java.io.Serializable; import java.io.Writer; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.EnumSet; @@ -29,13 +30,13 @@ import org.datagear.analysis.Dashboard; import org.datagear.analysis.DashboardTheme; import org.datagear.analysis.DataSetParam; import org.datagear.analysis.DataSetResult; +import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderStyle; import org.datagear.analysis.support.DataSetParamValueConverter; -import org.datagear.analysis.support.html.DefaultHtmlRenderContext; -import org.datagear.analysis.support.html.HtmlRenderAttributes; -import org.datagear.analysis.support.html.HtmlRenderContext; -import org.datagear.analysis.support.html.HtmlRenderContext.WebContext; +import org.datagear.analysis.support.DefaultRenderContext; import org.datagear.analysis.support.html.HtmlTplDashboard; +import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr; +import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr.WebContext; import org.datagear.util.StringUtil; import org.datagear.web.util.WebUtils; @@ -94,15 +95,25 @@ public class AbstractDataAnalysisController extends AbstractController return RenderStyle.LIGHT; } - protected HtmlRenderContext createHtmlRenderContext(HttpServletRequest request, WebContext webContext, - RenderStyle renderStyle, Writer out) + protected RenderContext createHtmlRenderContext(HttpServletRequest request, HtmlTplDashboardRenderAttr renderAttr, + Writer out, WebContext webContext, RenderStyle renderStyle) { - DefaultHtmlRenderContext renderContext = new DefaultHtmlRenderContext(webContext, out); - HtmlRenderAttributes.setRenderStyle(renderContext, renderStyle); + RenderContext renderContext = new DefaultRenderContext(); + renderAttr.inflate(renderContext, out, webContext); + renderAttr.setRenderStyle(renderContext, renderStyle); + + renderAttr.setIgnoreRenderAttrs(renderContext, + Arrays.asList(renderAttr.getHtmlWriterName(), renderAttr.getHtmlTitleHandlerName(), + renderAttr.getIgnoreRenderAttrsName(), HtmlTplDashboardRenderAttr.ATTR_NAME)); return renderContext; } + protected HtmlTplDashboardRenderAttr createHtmlTplDashboardRenderAttr() + { + return new HtmlTplDashboardRenderAttr(); + } + protected void setDashboardThemeAttribute(HttpSession session, DashboardTheme theme) { session.setAttribute(AbstractDataAnalysisController.class.getSimpleName(), theme); @@ -214,7 +225,7 @@ public class AbstractDataAnalysisController extends AbstractController if (chartsParamValues == null) return Collections.EMPTY_MAP; - Map>> re = new HashMap>>(); + Map>> re = new HashMap<>(); for (Map.Entry>> entry : chartsParamValues.entrySet()) { @@ -226,7 +237,7 @@ public class AbstractDataAnalysisController extends AbstractController else { List> paramValuess = entry.getValue(); - List> converteds = new ArrayList>(); + List> converteds = new ArrayList<>(); for (int i = 0; i < chartDataSets.length; i++) { 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 3540ce4d..daa0f3d4 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 @@ -15,17 +15,16 @@ import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.datagear.analysis.ChartPlugin; import org.datagear.analysis.ChartPluginManager; import org.datagear.analysis.DashboardTheme; import org.datagear.analysis.DataSetResult; +import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderStyle; import org.datagear.analysis.TemplateDashboardWidgetResManager; import org.datagear.analysis.support.html.HtmlChartPlugin; -import org.datagear.analysis.support.html.HtmlRenderAttributes; -import org.datagear.analysis.support.html.HtmlRenderContext; -import org.datagear.analysis.support.html.HtmlRenderContext.WebContext; import org.datagear.analysis.support.html.HtmlTplDashboard; +import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr; +import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr.WebContext; import org.datagear.analysis.support.html.HtmlTplDashboardWidget; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetHtmlRenderer; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer.AddPrefixHtmlTitleHandler; @@ -74,7 +73,7 @@ public class ChartController extends AbstractChartPluginAwareController implemen @Autowired @Qualifier("chartShowHtmlTplDashboardWidgetHtmlRenderer") - private HtmlTplDashboardWidgetHtmlRenderer chartShowHtmlTplDashboardWidgetHtmlRenderer; + private HtmlTplDashboardWidgetHtmlRenderer chartShowHtmlTplDashboardWidgetHtmlRenderer; private ServletContext servletContext; @@ -103,13 +102,13 @@ public class ChartController extends AbstractChartPluginAwareController implemen this.chartPluginManager = chartPluginManager; } - public HtmlTplDashboardWidgetHtmlRenderer getChartShowHtmlTplDashboardWidgetHtmlRenderer() + public HtmlTplDashboardWidgetHtmlRenderer getChartShowHtmlTplDashboardWidgetHtmlRenderer() { return chartShowHtmlTplDashboardWidgetHtmlRenderer; } public void setChartShowHtmlTplDashboardWidgetHtmlRenderer( - HtmlTplDashboardWidgetHtmlRenderer chartShowHtmlTplDashboardWidgetHtmlRenderer) + HtmlTplDashboardWidgetHtmlRenderer chartShowHtmlTplDashboardWidgetHtmlRenderer) { this.chartShowHtmlTplDashboardWidgetHtmlRenderer = chartShowHtmlTplDashboardWidgetHtmlRenderer; } @@ -169,7 +168,7 @@ public class ChartController extends AbstractChartPluginAwareController implemen { User user = WebUtils.getUser(request, response); - HtmlChartPlugin paramPlugin = entity.getHtmlChartPlugin(); + HtmlChartPlugin paramPlugin = entity.getHtmlChartPlugin(); if (isEmpty(entity.getId())) { @@ -374,7 +373,7 @@ public class ChartController extends AbstractChartPluginAwareController implemen String id = chart.getId(); String htmlTitle = chart.getName(); - HtmlTplDashboardWidget dashboardWidget = new HtmlTplDashboardWidget<>(id, + HtmlTplDashboardWidget dashboardWidget = new HtmlTplDashboardWidget(id, this.chartShowHtmlTplDashboardWidgetHtmlRenderer.simpleTemplateContent("UTF-8", htmlTitle, " position:absolute;\n left:1em;\n right:1em;\n top:1em;\n bottom:1em;\n margin:0 0;\n width:auto;\n height:auto;\n", new String[] { id }), @@ -384,15 +383,17 @@ public class ChartController extends AbstractChartPluginAwareController implemen response.setCharacterEncoding(responseEncoding); response.setContentType(CONTENT_TYPE_HTML); + HtmlTplDashboardRenderAttr renderAttr = createHtmlTplDashboardRenderAttr(); Writer out = response.getWriter(); - RenderStyle renderStyle = resolveRenderStyle(request); - HtmlRenderContext renderContext = createHtmlRenderContext(request, createWebContext(request), renderStyle, out); + RenderContext renderContext = createHtmlRenderContext(request, renderAttr, out, createWebContext(request), + renderStyle); DashboardTheme dashboardTheme = getChartShowHtmlTplDashboardWidgetHtmlRenderer() - .inflateDashboardTheme(renderContext, renderStyle); + .inflateDashboardTheme(renderContext, renderAttr, renderStyle); AddPrefixHtmlTitleHandler htmlTitleHandler = new AddPrefixHtmlTitleHandler( getMessage(request, "chart.show.htmlTitlePrefix", getMessage(request, "app.name"))); - HtmlRenderAttributes.setHtmlTitleHandler(renderContext, htmlTitleHandler); + renderAttr.setHtmlTitleHandler(renderContext, htmlTitleHandler); + setDashboardThemeAttribute(request.getSession(), dashboardTheme); HtmlTplDashboard dashboard = dashboardWidget.render(renderContext); @@ -418,15 +419,13 @@ public class ChartController extends AbstractChartPluginAwareController implemen entity.updateChartPluginName(locale); } - @SuppressWarnings({ "unchecked", "rawtypes" }) protected void inflateHtmlChartWidgetEntity(HtmlChartWidgetEntity entity, HttpServletRequest request) { - HtmlChartPlugin htmlChartPlugin = entity.getHtmlChartPlugin(); + HtmlChartPlugin htmlChartPlugin = entity.getHtmlChartPlugin(); if (htmlChartPlugin != null) { - htmlChartPlugin = (HtmlChartPlugin) (ChartPlugin) this.chartPluginManager - .get(htmlChartPlugin.getId()); + htmlChartPlugin = (HtmlChartPlugin) this.chartPluginManager.get(htmlChartPlugin.getId()); entity.setHtmlChartPlugin(htmlChartPlugin); } 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 4392af28..e1698703 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 @@ -28,7 +28,6 @@ import org.datagear.analysis.support.html.HtmlChartPlugin; import org.datagear.analysis.support.html.HtmlChartPluginLoadException; import org.datagear.analysis.support.html.HtmlChartPluginLoader; import org.datagear.analysis.support.html.HtmlChartPluginScriptObjectWriter; -import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer; import org.datagear.management.service.HtmlTplDashboardWidgetEntityService; import org.datagear.persistence.PagingQuery; @@ -150,9 +149,9 @@ public class ChartPluginController extends AbstractChartPluginAwareController try { - Set> loaded = loader.loads(zipFile); + Set loaded = loader.loads(zipFile); - for (HtmlChartPlugin chartPlugin : loaded) + for (HtmlChartPlugin chartPlugin : loaded) pluginInfos.add(toHtmlChartPluginVO(chartPlugin, renderStyle, locale)); } catch (HtmlChartPluginLoadException e) @@ -176,7 +175,7 @@ public class ChartPluginController extends AbstractChartPluginAwareController File tmpFile = FileUtil.getFile(this.tempDirectory, pluginFileName); - Set> uploads = getDirectoryHtmlChartPluginManager().upload(tmpFile); + Set uploads = getDirectoryHtmlChartPluginManager().upload(tmpFile); return buildOperationMessageSuccessResponseEntity(request, "chartPlugin.upload.finish", uploads.size()); } @@ -259,7 +258,7 @@ public class ChartPluginController extends AbstractChartPluginAwareController public void getPluginIcon(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest, @PathVariable("pluginId") String pluginId) throws Exception { - ChartPlugin chartPlugin = getDirectoryHtmlChartPluginManager().get(pluginId); + ChartPlugin chartPlugin = getDirectoryHtmlChartPluginManager().get(pluginId); if (chartPlugin == null) throw new FileNotFoundException(); @@ -294,30 +293,24 @@ public class ChartPluginController extends AbstractChartPluginAwareController public void getChartPluginManagerJs(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest) throws Exception { - List> plugins = getDirectoryHtmlChartPluginManager() - .getAll(HtmlRenderContext.class); + List plugins = getDirectoryHtmlChartPluginManager().getAll(HtmlChartPlugin.class); - List> htmlChartPlugins = new ArrayList>(plugins.size()); + List htmlChartPlugins = new ArrayList<>(plugins.size()); long lastModified = -1; if (plugins != null) { - for (ChartPlugin plugin : plugins) + for (HtmlChartPlugin plugin : plugins) { - if (plugin instanceof HtmlChartPlugin) - { - HtmlChartPlugin htmlChartPlugin = (HtmlChartPlugin) plugin; - - htmlChartPlugins.add(htmlChartPlugin); - lastModified = Math.max(lastModified, htmlChartPlugin.getLastModified()); - } + htmlChartPlugins.add(plugin); + lastModified = Math.max(lastModified, plugin.getLastModified()); } } - - HtmlTplDashboardWidgetRenderer renderer = getHtmlTplDashboardWidgetEntityService() + + HtmlTplDashboardWidgetRenderer renderer = getHtmlTplDashboardWidgetEntityService() .getHtmlTplDashboardWidgetRenderer(); - HtmlChartPlugin htmlChartPluginForGetWidgetException = renderer.getHtmlChartPluginForGetWidgetException(); + HtmlChartPlugin htmlChartPluginForGetWidgetException = renderer.getHtmlChartPluginForGetWidgetException(); htmlChartPlugins.add(htmlChartPluginForGetWidgetException); lastModified = Math.max(lastModified, htmlChartPluginForGetWidgetException.getLastModified()); @@ -333,14 +326,14 @@ public class ChartPluginController extends AbstractChartPluginAwareController out.println("var chartPluginManager = (global.chartPluginManager || (global.chartPluginManager = {}));"); out.println("chartPluginManager.plugins = (chartPluginManager.plugins || {});"); - + out.println(); out.println("chartPluginManager.get = function(id){ return this.plugins[id]; };"); out.println(); for (int i = 0, len = htmlChartPlugins.size(); i < len; i++) { - HtmlChartPlugin plugin = htmlChartPlugins.get(i); + HtmlChartPlugin plugin = htmlChartPlugins.get(i); String pluginVar = "plugin" + i; this.htmlChartPluginScriptObjectWriter.write(out, plugin, pluginVar); 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 3ad45fb9..78f3ce12 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 @@ -26,15 +26,17 @@ import org.datagear.analysis.Chart; import org.datagear.analysis.ChartTheme; import org.datagear.analysis.DashboardTheme; import org.datagear.analysis.DataSetResult; +import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderStyle; import org.datagear.analysis.TemplateDashboardWidgetResManager; import org.datagear.analysis.support.ChartWidget; import org.datagear.analysis.support.ChartWidgetSource; -import org.datagear.analysis.support.html.HtmlChartPluginRenderOption; -import org.datagear.analysis.support.html.HtmlRenderAttributes; -import org.datagear.analysis.support.html.HtmlRenderContext; -import org.datagear.analysis.support.html.HtmlRenderContext.WebContext; +import org.datagear.analysis.support.DefaultRenderContext; +import org.datagear.analysis.support.html.HtmlChartRenderAttr; +import org.datagear.analysis.support.html.HtmlChartRenderAttr.HtmlChartRenderOption; import org.datagear.analysis.support.html.HtmlTplDashboard; +import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr; +import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr.WebContext; import org.datagear.analysis.support.html.HtmlTplDashboardWidget; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer.AddPrefixHtmlTitleHandler; @@ -132,7 +134,7 @@ public class DashboardController extends AbstractDataAnalysisController implemen dashboard.setTemplates(HtmlTplDashboardWidgetEntity.DEFAULT_TEMPLATES); dashboard.setTemplateEncoding(HtmlTplDashboardWidget.DEFAULT_TEMPLATE_ENCODING); - HtmlTplDashboardWidgetRenderer renderer = getHtmlTplDashboardWidgetEntityService() + HtmlTplDashboardWidgetRenderer renderer = getHtmlTplDashboardWidgetEntityService() .getHtmlTplDashboardWidgetRenderer(); String templateContent = renderer.simpleTemplateContent(dashboard.getTemplateEncoding()); @@ -704,16 +706,17 @@ public class DashboardController extends AbstractDataAnalysisController implemen response.setCharacterEncoding(responseEncoding); response.setContentType(CONTENT_TYPE_HTML); + HtmlTplDashboardRenderAttr renderAttr = createHtmlTplDashboardRenderAttr(); Writer out = response.getWriter(); - RenderStyle renderStyle = resolveRenderStyle(request); - HtmlRenderContext renderContext = createHtmlRenderContext(request, createWebContext(request), renderStyle, - out); + RenderContext renderContext = createHtmlRenderContext(request, renderAttr, out, createWebContext(request), + renderStyle); DashboardTheme dashboardTheme = getHtmlTplDashboardWidgetEntityService().getHtmlTplDashboardWidgetRenderer() - .inflateDashboardTheme(renderContext, renderStyle); + .inflateDashboardTheme(renderContext, renderAttr, renderStyle); AddPrefixHtmlTitleHandler htmlTitleHandler = new AddPrefixHtmlTitleHandler( getMessage(request, "dashboard.show.htmlTitlePrefix", getMessage(request, "app.name"))); - HtmlRenderAttributes.setHtmlTitleHandler(renderContext, htmlTitleHandler); + renderAttr.setHtmlTitleHandler(renderContext, htmlTitleHandler); + setDashboardThemeAttribute(request.getSession(), dashboardTheme); HtmlTplDashboard dashboard = dashboardWidget.render(renderContext, template); @@ -776,16 +779,12 @@ public class DashboardController extends AbstractDataAnalysisController implemen out.println(".dg-chart-table .dg-chart-table-content table.dataTable tbody > tr.selected,"); out.println(".dg-chart-table .dg-chart-table-content table.dataTable tbody > tr > .selected,"); out.println(".dg-chart-table .dg-chart-table-content table.dataTable.stripe tbody > tr.odd.selected,"); - out.println( - ".dg-chart-table .dg-chart-table-content table.dataTable.stripe tbody > tr.odd > .selected,"); + out.println(".dg-chart-table .dg-chart-table-content table.dataTable.stripe tbody > tr.odd > .selected,"); out.println(".dg-chart-table .dg-chart-table-content table.dataTable.display tbody > tr.odd.selected,"); - out.println( - ".dg-chart-table .dg-chart-table-content table.dataTable.display tbody > tr.odd > .selected,"); + out.println(".dg-chart-table .dg-chart-table-content table.dataTable.display tbody > tr.odd > .selected,"); out.println(".dg-chart-table .dg-chart-table-content table.dataTable.hover tbody > tr.selected:hover,"); - out.println( - ".dg-chart-table .dg-chart-table-content table.dataTable.hover tbody > tr > .selected:hover,"); - out.println( - ".dg-chart-table .dg-chart-table-content table.dataTable.display tbody > tr.selected:hover,"); + out.println(".dg-chart-table .dg-chart-table-content table.dataTable.hover tbody > tr > .selected:hover,"); + out.println(".dg-chart-table .dg-chart-table-content table.dataTable.display tbody > tr.selected:hover,"); out.println( ".dg-chart-table .dg-chart-table-content table.dataTable.display tbody > tr > .selected:hover {"); out.println(" background-color: " + chartTheme.getHighlightTheme().getBackgroundColor() + ";"); @@ -824,8 +823,7 @@ public class DashboardController extends AbstractDataAnalysisController implemen @RequestMapping(value = "/loadChart", produces = CONTENT_TYPE_JSON) public void loadChart(HttpServletRequest request, HttpServletResponse response, org.springframework.ui.Model model, @RequestParam("dashboardId") String dashboardId, @RequestParam("chartWidgetId") String chartWidgetId, - @RequestParam("chartElementId") String chartElementId) - throws Throwable + @RequestParam("chartElementId") String chartElementId) throws Throwable { SessionHtmlTplDashboardManager dashboardManager = getSessionHtmlTplDashboardManagerNotNull(request); HtmlTplDashboard dashboard = dashboardManager.get(dashboardId); @@ -841,40 +839,34 @@ public class DashboardController extends AbstractDataAnalysisController implemen ChartWidgetSource chartWidgetSource = getHtmlTplDashboardWidgetEntityService() .getHtmlTplDashboardWidgetRenderer().getChartWidgetSource(); - ChartWidget chartWidget = chartWidgetSource.getChartWidget(chartWidgetId); + ChartWidget chartWidget = chartWidgetSource.getChartWidget(chartWidgetId); if (chartWidget == null) throw new RecordNotFoundException(); // 不缓存 response.setContentType(CONTENT_TYPE_JSON); + + RenderContext renderContext = new DefaultRenderContext(); + HtmlChartRenderAttr renderAttr = new HtmlChartRenderAttr(); PrintWriter out = response.getWriter(); - - RenderStyle renderStyle = resolveRenderStyle(request); - HtmlRenderContext renderContext = createHtmlRenderContext(request, createWebContext(request), renderStyle, - out); - - HtmlChartPluginRenderOption renderOption = new HtmlChartPluginRenderOption(); - renderOption.setChartElementId(chartElementId); + HtmlChartRenderOption renderOption = new HtmlChartRenderOption(chartElementId, + "{\"id\": \"" + WebUtils.escapeJavaScriptStringValue(chartWidget.getPlugin().getId()) + "\"}", + "undefined", "{}"); renderOption.setNotWriteChartElement(true); - renderOption.setPluginVarName( - "{\"id\": \"" + WebUtils.escapeJavaScriptStringValue(chartWidget.getPlugin().getId()) + "\"}"); renderOption.setNotWritePluginObject(true); - renderOption.setChartVarName("undefined"); - renderOption.setRenderContextVarName("{}"); renderOption.setNotWriteRenderContextObject(true); renderOption.setNotWriteScriptTag(true); renderOption.setNotWriteInvoke(true); renderOption.setWriteChartJson(true); - HtmlChartPluginRenderOption.setOption(renderContext, renderOption); + renderAttr.inflate(renderContext, out, renderOption); Chart chart = chartWidget.render(renderContext); synchronized (dashboard) { List charts = dashboard.getCharts(); - List newCharts = (charts == null || charts.isEmpty() ? new ArrayList() - : new ArrayList(charts)); + List newCharts = (charts == null || charts.isEmpty() ? new ArrayList<>() : new ArrayList<>(charts)); newCharts.add(chart); dashboard.setCharts(newCharts); } diff --git a/datagear-web/src/main/java/org/datagear/web/util/DirectoryHtmlChartPluginManagerInitializer.java b/datagear-web/src/main/java/org/datagear/web/util/DirectoryHtmlChartPluginManagerInitializer.java index 4d3e6513..2401a2e1 100644 --- a/datagear-web/src/main/java/org/datagear/web/util/DirectoryHtmlChartPluginManagerInitializer.java +++ b/datagear-web/src/main/java/org/datagear/web/util/DirectoryHtmlChartPluginManagerInitializer.java @@ -100,7 +100,7 @@ public class DirectoryHtmlChartPluginManagerInitializer { loadHtmlChartPlugins(this.classpathPattern); } - catch(Throwable t) + catch (Throwable t) { if (LOGGER.isErrorEnabled()) LOGGER.error("Load built-in " + HtmlChartPlugin.class.getSimpleName() + "s error :", t); @@ -134,10 +134,10 @@ public class DirectoryHtmlChartPluginManagerInitializer } } - Set> plugins = this.directoryHtmlChartPluginManager.upload(tmpDirectory); + Set plugins = this.directoryHtmlChartPluginManager.upload(tmpDirectory); - Set pluginIds = new HashSet(); - for (HtmlChartPlugin plugin : plugins) + Set pluginIds = new HashSet<>(); + for (HtmlChartPlugin plugin : plugins) pluginIds.add(plugin.getId()); if (LOGGER.isInfoEnabled()) diff --git a/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-chartFactory.js b/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-chartFactory.js index 0aaf86a6..9e3930e7 100644 --- a/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-chartFactory.js +++ b/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-chartFactory.js @@ -524,16 +524,6 @@ this.elementJquery().attr("dg-chart-map", value); }; - /** - * 获取图表渲染风格,没有则返回undefined。 - * - * @return "..." - */ - chartBase.renderStyle = function() - { - return this.renderContextAttr("renderStyle"); - }; - /** * 获取/设置图表渲染上下文的属性值。 * @@ -1645,7 +1635,8 @@ url = (url || name); - var contextPath = this.renderContext.webContext.contextPath; + var webContext = this.renderContextAttr("webContext"); + var contextPath = (webContext ? webContext.contextPath : undefined); if(contextPath && url.indexOf("/") == 0 && url.indexOf(contextPath) != 0) url = contextPath + url; diff --git a/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-dashboardFactory.js b/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-dashboardFactory.js index f48bb001..44a4e9a1 100644 --- a/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-dashboardFactory.js +++ b/datagear-web/src/main/resources/org/datagear/web/webapp/static/script/datagear-dashboardFactory.js @@ -29,6 +29,10 @@ this.initCharts(dashboard); $.extend(dashboard, this.dashboardBase); this.initListener(dashboard); + + //渲染看板内图表时需要chartTheme + var dashboardTheme = dashboard.renderContextAttr("dashboardTheme"); + dashboard.renderContextAttr("chartTheme", dashboardTheme.chartTheme); }; /** @@ -170,7 +174,7 @@ } else { - var webContext = this.renderContext.webContext; + var webContext = this.renderContextAttr("webContext"); var data = this.buildUpdateDashboardAjaxData(preUpdates); @@ -426,7 +430,7 @@ */ dashboardBase.buildUpdateDashboardAjaxData = function(charts) { - var webContext = this.renderContext.webContext; + var webContext = this.renderContextAttr("webContext"); var data = {}; data[webContext.dashboardIdParam] = this.id; @@ -475,7 +479,7 @@ $(element).attr("id", chartElementId); } - var webContext = this.renderContext.webContext; + var webContext = this.renderContextAttr("webContext"); var loadChartConfig = dashboardFactory.loadChartConfig; var _this = this; @@ -546,6 +550,22 @@ chart.renderContext = this.renderContext; dashboardFactory.initChart(chart); }; + + /** + * 获取/设置渲染上下文的属性值。 + * + * @param attrName + * @param attrValue 要设置的属性值,可选,不设置则执行获取操作 + */ + dashboardBase.renderContextAttr = function(attrName, attrValue) + { + var renderContext = this.renderContext; + + if(attrValue == undefined) + return renderContext.attributes[attrName]; + else + return renderContext.attributes[attrName] = attrValue; + }; //---------------------------------------- // dashboardBase end