Переглянути джерело

兼容旧版本配置导入问题

AE86 2 роки тому
батько
коміт
f703c4d346

+ 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));
             }
         }
     }