From 773dc8173eb7764f47bc1946f9bd855f7a026b2c Mon Sep 17 00:00:00 2001 From: interestinglife Date: Mon, 30 Aug 2021 20:22:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E7=AE=A1=E6=8E=A7=E5=8A=9F=E8=83=BDSQL=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=92=8C=E9=A2=86=E5=9F=9F=E6=A8=A1=E5=9E=8B=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management/domain/SchemaGuard.java | 151 ++++++++++++++++++ .../org/datagear/management/ddl/datagear.sql | 13 ++ .../org/datagear/web/i18n/message.properties | 2 +- .../datagear/web/i18n/message_en.properties | 2 +- .../templates/include/page_obj_sys_menu.ftl | 6 +- 5 files changed, 169 insertions(+), 5 deletions(-) create mode 100644 datagear-management/src/main/java/org/datagear/management/domain/SchemaGuard.java diff --git a/datagear-management/src/main/java/org/datagear/management/domain/SchemaGuard.java b/datagear-management/src/main/java/org/datagear/management/domain/SchemaGuard.java new file mode 100644 index 00000000..463d49d9 --- /dev/null +++ b/datagear-management/src/main/java/org/datagear/management/domain/SchemaGuard.java @@ -0,0 +1,151 @@ +/* + * Copyright 2018 datagear.tech + * + * Licensed under the LGPLv3 license: + * http://www.gnu.org/licenses/lgpl-3.0.html + */ + +package org.datagear.management.domain; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +/** + * 数据源管控。 + * + * @author datagear@163.com + * + */ +public class SchemaGuard extends AbstractStringIdEntity +{ + private static final long serialVersionUID = 1L; + + /** 匹配模式 */ + private String pattern; + + /** 是否允许:true 允许;false 禁止 */ + private boolean permitted; + + /** 优先级 */ + private int priority; + + /** 是否启用 */ + private boolean enabled = true; + + /** 创建时间 */ + private Date createTime; + + public SchemaGuard() + { + super(); + } + + public SchemaGuard(String id) + { + super(id); + } + + public SchemaGuard(String id, String pattern, boolean permitted, int priority) + { + super(id); + this.pattern = pattern; + this.permitted = permitted; + this.priority = priority; + this.enabled = true; + this.createTime = new Date(); + } + + public String getPattern() + { + return pattern; + } + + public void setPattern(String pattern) + { + this.pattern = pattern; + } + + public boolean isPermitted() + { + return permitted; + } + + public void setPermitted(boolean permitted) + { + this.permitted = permitted; + } + + public int getPriority() + { + return priority; + } + + public void setPriority(int priority) + { + this.priority = priority; + } + + public boolean isEnabled() + { + return enabled; + } + + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } + + public Date getCreateTime() + { + return createTime; + } + + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } + + /** + * 将{@linkplain SchemaGuard}列表按照优先级排序,{@linkplain SchemaGuard#getPriority()}越大越靠前、{@linkplain SchemaGuard#getCreateTime()}越新越靠前。 + * + * @param schemaGuards + */ + public void sortByPriority(List schemaGuards) + { + if (schemaGuards == null) + return; + + Collections.sort(schemaGuards, SCHEMA_GUARD_PRIORITY_COMPARATOR); + } + + private static final Comparator SCHEMA_GUARD_PRIORITY_COMPARATOR = new Comparator() + { + @Override + public int compare(SchemaGuard o1, SchemaGuard o2) + { + // 优先级越高越靠前 + int p = Integer.valueOf(o2.priority).compareTo(o1.priority); + + if (p == 0) + { + // 越新创建越靠前 + + Date o1d = o1.createTime; + Date o2d = o2.createTime; + + if (o1d == null && o2d == null) + return 0; + else if (o1d == null) + return 1; + else if (o2d == null) + return -1; + else + return o2d.compareTo(o1d); + } + else + return p; + } + }; +} diff --git a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql index 2e5f410e..01e0363c 100644 --- a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql +++ b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql @@ -835,3 +835,16 @@ DROP FUNCTION DATAGEAR_REPLACE; ALTER TABLE DATAGEAR_AUTHORIZATION DROP COLUMN AUTH_CREATE_USER_ID; +--2021-08-30 +--数据源管控 + +CREATE TABLE DATAGEAR_SCHEMA_GUARD +( + SG_ID VARCHAR(50) NOT NULL, + SG_PATTERN VARCHAR(200) NOT NULL, + SG_PERMITTED VARCHAR(20) NOT NULL, + SG_PRIORITY INTEGER NOT NULL, + SG_ENABLED VARCHAR(20) NOT NULL, + SG_CREATE_TIME TIMESTAMP, + PRIMARY KEY (SG_ID) +); diff --git a/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties b/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties index 3757d77a..2efaf064 100644 --- a/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties +++ b/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties @@ -253,7 +253,7 @@ main.manageDriverEntity=数据源驱动程序 main.manageUser=用户 main.addUser=添加用户 main.manageRole=角色 -main.manageSchemaControl=数据源管控 +main.manageSchemaGuard=数据源管控 main.manageChartPlugin=图表插件 main.uploadChartPlugin=上传图表插件 main.manageDataSetResDirectory=数据集资源目录 diff --git a/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties b/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties index 410469c4..31db4487 100644 --- a/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties +++ b/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties @@ -253,7 +253,7 @@ main.manageDriverEntity=Data source driver main.manageUser=User main.addUser=Add user main.manageRole=Role -main.manageSchemaControl=Data source control +main.manageSchemaGuard=Data source guard main.manageChartPlugin=Chart plugin main.uploadChartPlugin=Upload chart plugin main.manageDataSetResDirectory=Data set directory diff --git a/datagear-web/src/main/resources/org/datagear/web/templates/include/page_obj_sys_menu.ftl b/datagear-web/src/main/resources/org/datagear/web/templates/include/page_obj_sys_menu.ftl index 4cbee885..476febb2 100644 --- a/datagear-web/src/main/resources/org/datagear/web/templates/include/page_obj_sys_menu.ftl +++ b/datagear-web/src/main/resources/org/datagear/web/templates/include/page_obj_sys_menu.ftl @@ -25,7 +25,7 @@ String detectNewVersionScript <#if currentUser.admin>
  • <@spring.message code='main.manageDriverEntity' />
  • <@spring.message code='schemaUrlBuilder.schemaUrlBuilder' />
  • -
  • <@spring.message code='main.manageSchemaControl' />
  • +
  • <@spring.message code='main.manageSchemaGuard' />
  • <@spring.message code='main.manageDataSetResDirectory' />
  • <@spring.message code='main.manageChartPlugin' />
  • @@ -132,11 +132,11 @@ String detectNewVersionScript $.setGridPageHeightOption(options); po.open(contextPath+"/role/pagingQuery", options); } - else if($item.hasClass("system-set-schemaControl")) + else if($item.hasClass("system-set-schemaGuard")) { var options = {}; $.setGridPageHeightOption(options); - po.open(contextPath+"/schemaControl/query", options); + po.open(contextPath+"/schemaGuard/query", options); } else if($item.hasClass("system-set-chartPlugin")) {