1
0
Эх сурвалжийг харах

!109 merge
Merge pull request !109 from AE86/V_1.0.0_RC

AE86 2 жил өмнө
parent
commit
135b5f1113

+ 2 - 2
dbsyncer-manager/src/main/java/org/dbsyncer/manager/GroupStrategy.java

@@ -7,8 +7,8 @@ import org.dbsyncer.parser.model.ConfigModel;
  * @version 1.0.0
  * @date 2019/12/2 22:52
  */
-public interface GroupStrategy {
+public interface GroupStrategy<M extends ConfigModel> {
 
-    String getGroupId(ConfigModel model);
+    String getGroupId(M model);
     
 }

+ 5 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/GroupStrategyEnum.java

@@ -2,6 +2,7 @@ package org.dbsyncer.manager.enums;
 
 import org.dbsyncer.manager.GroupStrategy;
 import org.dbsyncer.manager.strategy.DefaultGroupStrategy;
+import org.dbsyncer.manager.strategy.PreloadTableGroupStrategy;
 import org.dbsyncer.manager.strategy.TableGroupStrategy;
 
 /**
@@ -15,6 +16,10 @@ public enum GroupStrategyEnum {
      * 默认
      */
     DEFAULT(new DefaultGroupStrategy()),
+    /**
+     * 预加载驱动表映射关系
+     */
+    PRELOAD_TABLE_GROUP(new PreloadTableGroupStrategy()),
     /**
      * 表映射关系
      */

+ 19 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/PreloadTableGroupStrategy.java

@@ -0,0 +1,19 @@
+package org.dbsyncer.manager.strategy;
+
+import org.dbsyncer.manager.GroupStrategy;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.storage.constant.ConfigConstant;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2019/12/2 22:53
+ */
+public class PreloadTableGroupStrategy implements GroupStrategy<Mapping> {
+
+    @Override
+    public String getGroupId(Mapping model) {
+        return new StringBuilder(ConfigConstant.TABLE_GROUP).append("_").append(model.getId()).toString();
+    }
+
+}

+ 5 - 12
dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/TableGroupStrategy.java

@@ -1,27 +1,20 @@
 package org.dbsyncer.manager.strategy;
 
 import org.dbsyncer.manager.GroupStrategy;
-import org.dbsyncer.manager.ManagerException;
-import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.parser.model.TableGroup;
+import org.dbsyncer.storage.constant.ConfigConstant;
 
 /**
  * @author AE86
  * @version 1.0.0
  * @date 2019/12/2 22:53
  */
-public class TableGroupStrategy implements GroupStrategy {
+public class TableGroupStrategy implements GroupStrategy<TableGroup> {
 
     @Override
-    public String getGroupId(ConfigModel model) {
-        if (model instanceof TableGroup) {
-            TableGroup t = (TableGroup) model;
-            String type = t.getType();
-            String mappingId = t.getMappingId();
-            // 格式:${type} + "_" + ${mappingId}
-            return new StringBuilder(type).append("_").append(mappingId).toString();
-        }
-        throw new ManagerException(String.format("UnSupported config model \"%s\".", model.getClass().getName()));
+    public String getGroupId(TableGroup model) {
+        String mappingId = model.getMappingId();
+        return new StringBuilder(ConfigConstant.TABLE_GROUP).append("_").append(mappingId).toString();
     }
 
 }

+ 5 - 2
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/PreloadTemplate.java

@@ -7,6 +7,7 @@ import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.command.PreloadCommand;
 import org.dbsyncer.manager.enums.CommandEnum;
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
 import org.dbsyncer.manager.model.OperationConfig;
 import org.dbsyncer.manager.template.OperationTemplate.Group;
 import org.dbsyncer.parser.Parser;
@@ -110,6 +111,9 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
 
     private void reload(Map<String, JSONObject> map, CommandEnum commandEnum, String groupId) {
         JSONObject config = map.get(groupId);
+        if (null == config) {
+            return;
+        }
         Group group = JsonUtil.jsonToObj(config.toJSONString(), Group.class);
         if (null == group) {
             return;
@@ -126,8 +130,7 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
             operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD, commandEnum.getGroupStrategyEnum()));
             // Load tableGroups
             if (CommandEnum.PRELOAD_MAPPING == commandEnum) {
-                commandEnum = CommandEnum.PRELOAD_TABLE_GROUP;
-                reload(map, commandEnum, operationTemplate.getGroupId(model, commandEnum.getGroupStrategyEnum()));
+                reload(map, CommandEnum.PRELOAD_TABLE_GROUP, operationTemplate.getGroupId(model, GroupStrategyEnum.PRELOAD_TABLE_GROUP));
             }
         }
     }

+ 8 - 2
dbsyncer-web/src/main/resources/public/plugin/plugin.html

@@ -79,7 +79,7 @@ public class MyPlugin implements ConvertService {
 
         ConnectorMapper connectorMapper = context.getSourceConnectorMapper();
 
-        // 获取关系型数据库连接, 实现自己的业务逻辑...
+        // 获取关系型数据库连接,实现自己的业务逻辑...
         if (connectorMapper instanceof DatabaseConnectorMapper) {
             DatabaseConnectorMapper db = (DatabaseConnectorMapper) connectorMapper;
             // 方式一(推荐):
@@ -87,10 +87,16 @@ public class MyPlugin implements ConvertService {
             db.execute(databaseTemplate -> databaseTemplate.queryForList(query));
 
             // 方式二:
+            SimpleConnection connection = null;
             try {
-                SimpleConnection connection = (SimpleConnection) db.getConnection();
+                // 通过JDBC访问数据库
+                connection = (SimpleConnection) db.getConnection();
             } catch (Exception e) {
                 e.printStackTrace();
+            } finally {
+                if(connection != null){
+                    connection.close();
+                }
             }
         }
     }