From b7b46fe4b9406e90efe3a48b9bcc50303b30ea03 Mon Sep 17 00:00:00 2001 From: datagear Date: Tue, 3 Mar 2020 12:16:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=9C=8B=E6=9D=BF=E5=A4=9A?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=BC=96=E8=BE=91=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=82=A8=E5=AD=98=E6=A0=BC=E5=BC=8F=E7=94=B1=E9=80=97=E5=8F=B7?= =?UTF-8?q?=E9=97=B4=E9=9A=94=E6=94=B9=E4=B8=BAJSON=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datagear/analysis/TemplateDashboard.java | 6 +++ .../analysis/TemplateDashboardWidget.java | 13 +++--- ...FileTemplateDashboardWidgetResManager.java | 2 +- .../HtmlTplDashboardScriptObjectWriter.java | 9 ++-- .../HtmlTplDashboardWidgetHtmlRenderer.java | 13 +++++- .../domain/HtmlTplDashboardWidgetEntity.java | 44 ++++++++++++++++++- ...mlTplDashboardWidgetEntityServiceImpl.java | 7 +++ .../HtmlTplDashboardWidgetEntityMapper.xml | 6 +-- .../web/controller/ChartController.java | 9 +++- .../web/controller/DashboardController.java | 34 +++++--------- .../analysis/dashboard/dashboard_form.ftl | 5 +-- 11 files changed, 101 insertions(+), 47 deletions(-) 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 a9c87bec..5e0520f2 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboard.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboard.java @@ -32,6 +32,12 @@ public class TemplateDashboard extends Dashboard this.template = template; } + @Override + public TemplateDashboardWidget getWidget() + { + return (TemplateDashboardWidget) super.getWidget(); + } + @Override public void setWidget(DashboardWidget 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 0a0f4ac4..a5cf6129 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidget.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/TemplateDashboardWidget.java @@ -67,8 +67,8 @@ public abstract class TemplateDashboardWidget extends A */ public String getFirstTemplate() { - if (this.templates == null || this.templates.length < 1) - return null; + if (getTemplateCount() < 1) + throw new IllegalStateException(); return this.templates[0]; } @@ -84,12 +84,12 @@ public abstract class TemplateDashboardWidget extends A if (this.templates == null) return false; - for(String t : this.templates) + for (String t : this.templates) { - if(t.equals(template)) + if (t.equals(template)) return true; } - + return false; } @@ -142,7 +142,8 @@ public abstract class TemplateDashboardWidget extends A * @param template * @return * @throws RenderException - * @throws IllegalArgumentException {@code template}不是模板时 + * @throws IllegalArgumentException + * {@code template}不是模板时 */ public TemplateDashboard render(T renderContext, String template) throws RenderException, IllegalArgumentException { 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 ca162152..a2744bf2 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 @@ -126,7 +126,7 @@ public class FileTemplateDashboardWidgetResManager extends AbstractTemplateDashb @Override public InputStream getResourceInputStream(String id, String name) throws IOException { - File file = getFile(id, name, true); + File file = getFile(id, name, false); if (!file.exists()) return new ByteArrayInputStream(new byte[0]); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardScriptObjectWriter.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardScriptObjectWriter.java index 8c703d54..7bbf5a2c 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardScriptObjectWriter.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardScriptObjectWriter.java @@ -11,7 +11,6 @@ import java.io.IOException; import java.io.Writer; import java.util.Collections; -import org.datagear.analysis.DashboardWidget; import org.datagear.analysis.RenderContext; import org.datagear.analysis.RenderException; import org.datagear.analysis.TemplateDashboard; @@ -76,17 +75,17 @@ public class HtmlTplDashboardScriptObjectWriter extends AbstractHtmlScriptObject public JsonHtmlTplDashboard(HtmlTplDashboard dashboard, String renderContextVarName) { super(dashboard.getId(), dashboard.getTemplate(), new RefHtmlRenderContext(renderContextVarName), - new IdTemplateDashboardWidget(dashboard.getWidget()), dashboard.getVarName()); + new JsonTemplateDashboardWidget(dashboard.getWidget()), dashboard.getVarName()); setCharts(Collections.EMPTY_LIST); } } - protected static class IdTemplateDashboardWidget extends TemplateDashboardWidget + protected static class JsonTemplateDashboardWidget extends TemplateDashboardWidget { - public IdTemplateDashboardWidget(DashboardWidget dashboardWidget) + public JsonTemplateDashboardWidget(TemplateDashboardWidget dashboardWidget) { - super(dashboardWidget.getId()); + super(dashboardWidget.getId(), dashboardWidget.getTemplates()); } @Override diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java index 3689ca27..258d5628 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java @@ -16,6 +16,7 @@ import java.util.List; import org.datagear.analysis.Chart; import org.datagear.analysis.TemplateDashboardWidgetResManager; import org.datagear.analysis.support.ChartWidgetSource; +import org.datagear.util.IOUtil; import org.datagear.util.StringUtil; /** @@ -230,7 +231,14 @@ public class HtmlTplDashboardWidgetHtmlRenderer ext HtmlTplDashboardWidget dashboardWidget = (HtmlTplDashboardWidget) dashboard.getWidget(); Reader in = getTemplateReaderNotNull(dashboardWidget, dashboard.getTemplate()); - renderHtmlTplDashboard(renderContext, dashboard, in); + try + { + renderHtmlTplDashboard(renderContext, dashboard, in); + } + finally + { + IOUtil.close(in); + } } /** @@ -242,7 +250,8 @@ public class HtmlTplDashboardWidgetHtmlRenderer ext * @return * @throws Exception */ - protected DashboardInfo renderHtmlTplDashboard(T renderContext, HtmlTplDashboard dashboard, Reader in) throws Exception + protected DashboardInfo renderHtmlTplDashboard(T renderContext, HtmlTplDashboard dashboard, Reader in) + throws Exception { Writer out = renderContext.getWriter(); 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 0c4abac0..94ad9c9d 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 @@ -9,12 +9,15 @@ package org.datagear.management.domain; import java.util.Collection; import java.util.Date; +import java.util.List; import org.datagear.analysis.support.html.HtmlRenderContext; import org.datagear.analysis.support.html.HtmlTplDashboardWidget; import org.datagear.analysis.support.html.HtmlTplDashboardWidgetFmkRenderer; import org.datagear.util.StringUtil; +import com.alibaba.fastjson.JSON; + /** * {@linkplain HtmlTplDashboardWidget}实体。 * @@ -104,12 +107,49 @@ public class HtmlTplDashboardWidgetEntity extends HtmlTplDashboardWidget templates = JSON.parseArray(json, String.class); + setTemplates(templates.toArray(new String[templates.size()])); + } + } + /** * 获取{@linkplain #getTemplates()}以{@linkplain #TEMPLATE_SPLITTER}分隔符合并后的字符串。 * * @return */ - public String getTemplate() + public String getTemplatesSplit() { return concatTemplates(getTemplates()); } @@ -119,7 +159,7 @@ public class HtmlTplDashboardWidgetEntity extends HtmlTplDashboardWidget params, User user) { diff --git a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml index 0f7ede50..136bf49f 100644 --- a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml +++ b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlTplDashboardWidgetEntityMapper.xml @@ -11,7 +11,7 @@ ) VALUES ( - #{entity.id}, #{entity.name}, #{entity.template}, #{entity.templateEncoding}, #{entity.createUser.id}, + #{entity.id}, #{entity.name}, #{entity.templatesJson}, #{entity.templateEncoding}, #{entity.createUser.id}, #{entity.createTime} ) @@ -19,7 +19,7 @@ UPDATE DATAGEAR_HTML_DASHBOARD SET HD_NAME = #{entity.name}, - HD_TEMPLATE = #{entity.template}, + HD_TEMPLATE = #{entity.templatesJson}, HD_TEMPLATE_ENCODING = #{entity.templateEncoding} WHERE HD_ID = #{entity.id} @@ -136,7 +136,7 @@ SELECT A.HD_ID AS ${_iq_}id${_iq_}, A.HD_NAME AS ${_iq_}name${_iq_}, - A.HD_TEMPLATE AS ${_iq_}template${_iq_}, + A.HD_TEMPLATE AS ${_iq_}templatesJson${_iq_}, A.HD_TEMPLATE_ENCODING AS ${_iq_}templateEncoding${_iq_}, A.HD_CREATE_USER_ID AS ${_iq_}createUser.id${_iq_}, , 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 a1d96a2b..7fc199f4 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 @@ -347,7 +347,14 @@ public class ChartController extends AbstractChartPluginAwareController implemen InputStream in = resManager.getResourceInputStream(id, resName); OutputStream out = response.getOutputStream(); - IOUtil.write(in, out); + try + { + IOUtil.write(in, out); + } + finally + { + IOUtil.close(in); + } } } 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 73a56124..3a6ce882 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 @@ -309,34 +309,13 @@ public class DashboardController extends AbstractDataAnalysisController implemen if (dashboard == null) throw new RecordNotFoundException(); - - if(dashboard.isTemplate(name)) - { - dashboard.removeTemplate(name); - - // 不允许删除唯一的模板文件 - if (dashboard.getTemplateCount() == 0) - { - return buildOperationMessageFailResponseEntity(request, HttpStatus.BAD_REQUEST, - "dashboard.deleteFailForAtLeastOneTemplate"); - } - else - this.htmlTplDashboardWidgetEntityService.update(user, dashboard); - } TemplateDashboardWidgetResManager dashboardWidgetResManager = this.htmlTplDashboardWidgetEntityService .getHtmlTplDashboardWidgetRenderer().getTemplateDashboardWidgetResManager(); dashboardWidgetResManager.delete(id, name); - Map data = new HashMap(); - data.put("id", id); - data.put("templates", dashboard.getTemplates()); - - ResponseEntity responseEntity = buildOperationMessageSuccessEmptyResponseEntity(); - responseEntity.getBody().setData(data); - - return responseEntity; + return buildOperationMessageSuccessEmptyResponseEntity(); } @RequestMapping(value = "/uploadResourceFile", produces = CONTENT_TYPE_JSON) @@ -523,7 +502,7 @@ public class DashboardController extends AbstractDataAnalysisController implemen User user = WebUtils.getUser(request, response); HtmlTplDashboardWidgetEntity dashboard = new HtmlTplDashboardWidgetEntity(); - dashboard.setTemplate(template); + dashboard.setTemplateSplit(template); dashboard.setTemplateEncoding(templateEncoding); dashboard.setName(name); @@ -682,7 +661,14 @@ public class DashboardController extends AbstractDataAnalysisController implemen InputStream in = resManager.getResourceInputStream(id, resName); OutputStream out = response.getOutputStream(); - IOUtil.write(in, out); + try + { + IOUtil.write(in, out); + } + finally + { + IOUtil.close(in); + } } } diff --git a/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/analysis/dashboard/dashboard_form.ftl b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/analysis/dashboard/dashboard_form.ftl index b9de3693..445e401d 100644 --- a/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/analysis/dashboard/dashboard_form.ftl +++ b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/analysis/dashboard/dashboard_form.ftl @@ -614,7 +614,8 @@ readonly 是否只读操作,允许为null if(!id || !resourceFilePath || !resourceName) return; - $.post(po.url("saveResourceFile"), {"id": id, "resourceFilePath": resourceFilePath, "resourceName": resourceName}, function() + $.post(po.url("saveResourceFile"), {"id": id, "resourceFilePath": resourceFilePath, "resourceName": resourceName}, + function() { po.refreshDashboardResources(); po.element(".add-resource-panel").hide(); @@ -642,8 +643,6 @@ readonly 是否只读操作,允许为null $.post(po.url("deleteResource"), {"id": id, "name" : name}, function(response) { - po.templates = response.data.templates; - if(po.isTemplateCurrent(name)) po.setTemplateNameAndContent("", "");