浏览代码

update manager

AE86 5 年之前
父节点
当前提交
547121ec33
共有 25 个文件被更改,包括 505 次插入465 次删除
  1. 1 1
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MappingChecker.java
  2. 44 275
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/ManagerFactory.java
  3. 30 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/OperationCallBack.java
  4. 52 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/OperationConfig.java
  5. 36 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/PreloadCallBack.java
  6. 36 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/PreloadConfig.java
  7. 28 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/QueryConfig.java
  8. 32 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/GroupStrategyEnum.java
  9. 80 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/HandlerEnum.java
  10. 25 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/handler/AbstractOperationHandler.java
  11. 26 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/handler/AbstractPreloadHandler.java
  12. 1 3
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/DefaultGroupStrategy.java
  13. 1 3
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/TableGroupStrategy.java
  14. 26 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/AbstractTemplate.java
  15. 0 14
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/BaseTemplate.java
  16. 4 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/Callback.java
  17. 7 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/Handler.java
  18. 0 17
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/OperationTemplate.java
  19. 0 27
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/PreLoadTemplate.java
  20. 0 16
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/QueryTemplate.java
  21. 0 14
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/RemoveTemplate.java
  22. 0 42
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/Group.java
  23. 51 37
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/OperationTemplate.java
  24. 22 13
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/PreloadTemplate.java
  25. 3 3
      dbsyncer-storage/src/main/java/org/dbsyncer/storage/AbstractStorageService.java

+ 1 - 1
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MappingChecker.java

@@ -75,7 +75,7 @@ public class MappingChecker extends AbstractChecker implements ApplicationContex
 
     @Override
     public ConfigModel checkEditConfigModel(Map<String, String> params) {
-        logger.info("checkEditConfigModel mapping params:{}", params);
+        logger.info("params:{}", params);
         Assert.notEmpty(params, "MappingChecker check params is null.");
         String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
         Mapping mapping = manager.getMapping(id);

+ 44 - 275
dbsyncer-manager/src/main/java/org/dbsyncer/manager/ManagerFactory.java

@@ -5,9 +5,11 @@ import org.dbsyncer.connector.config.MetaInfo;
 import org.dbsyncer.connector.enums.ConnectorEnum;
 import org.dbsyncer.connector.enums.FilterEnum;
 import org.dbsyncer.connector.enums.OperationEnum;
-import org.dbsyncer.manager.template.*;
-import org.dbsyncer.manager.template.impl.ConfigOperationTemplate;
-import org.dbsyncer.manager.template.impl.ConfigPreLoadTemplate;
+import org.dbsyncer.manager.config.*;
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
+import org.dbsyncer.manager.enums.HandlerEnum;
+import org.dbsyncer.manager.template.impl.OperationTemplate;
+import org.dbsyncer.manager.template.impl.PreloadTemplate;
 import org.dbsyncer.parser.Parser;
 import org.dbsyncer.parser.enums.ConvertEnum;
 import org.dbsyncer.parser.model.*;
@@ -41,16 +43,10 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
     private PluginFactory pluginFactory;
 
     @Autowired
-    private ConfigPreLoadTemplate preLoadTemplate;
+    private PreloadTemplate preloadTemplate;
 
     @Autowired
-    private ConfigOperationTemplate operationTemplate;
-
-    @Autowired
-    private GroupStrategy defaultGroupStrategy;
-
-    @Autowired
-    private GroupStrategy tableGroupStrategy;
+    private OperationTemplate operationTemplate;
 
     @Override
     public boolean alive(ConnectorConfig config) {
@@ -69,51 +65,17 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
 
     @Override
     public String addConnector(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.add();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-        });
+        return operationTemplate.execute(new OperationConfig(model, HandlerEnum.OPR_ADD.getHandler()));
     }
 
     @Override
     public String editConnector(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.edit();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-        });
+        return operationTemplate.execute(new OperationConfig(model, HandlerEnum.OPR_EDIT.getHandler()));
     }
 
     @Override
     public void removeConnector(String connectorId) {
-        operationTemplate.remove(new RemoveTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-            @Override
-            public String getId() {
-                return connectorId;
-            }
-        });
+        operationTemplate.remove(new OperationConfig(connectorId));
     }
 
     @Override
@@ -123,70 +85,26 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
 
     @Override
     public List<Connector> getConnectorAll() {
-        return operationTemplate.queryAll(new QueryTemplate<Connector>() {
-
-            @Override
-            public ConfigModel getConfigModel() {
-                Connector connector = new Connector();
-                connector.setType(ConfigConstant.CONNECTOR);
-                return connector;
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-        });
+        Connector connector = new Connector();
+        connector.setType(ConfigConstant.CONNECTOR);
+        QueryConfig<Connector> queryConfig = new QueryConfig<>(connector);
+        List<Connector> connectors = operationTemplate.queryAll(queryConfig);
+        return connectors;
     }
 
     @Override
     public String addMapping(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.add();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-        });
+        return operationTemplate.execute(new OperationConfig(model, HandlerEnum.OPR_ADD.getHandler()));
     }
 
     @Override
     public String editMapping(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.edit();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-        });
+        return operationTemplate.execute(new OperationConfig(model, HandlerEnum.OPR_ADD.getHandler()));
     }
 
     @Override
     public void removeMapping(String mappingId) {
-        operationTemplate.remove(new RemoveTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-            @Override
-            public String getId() {
-                return mappingId;
-            }
-        });
+        operationTemplate.remove(new OperationConfig(mappingId));
     }
 
     @Override
@@ -196,69 +114,26 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
 
     @Override
     public List<Mapping> getMappingAll() {
-        return operationTemplate.queryAll(new QueryTemplate<Mapping>() {
-
-            @Override
-            public ConfigModel getConfigModel() {
-                Mapping mapping = new Mapping();
-                mapping.setType(ConfigConstant.MAPPING);
-                return mapping;
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-        });
+        Mapping mapping = new Mapping();
+        mapping.setType(ConfigConstant.MAPPING);
+        QueryConfig<Mapping> queryConfig = new QueryConfig<>(mapping);
+        List<Mapping> mappings = operationTemplate.queryAll(queryConfig);
+        return mappings;
     }
 
     @Override
     public String addTableGroup(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.add();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return tableGroupStrategy;
-            }
-
-        });
+        return operationTemplate.execute(new OperationConfig(model, GroupStrategyEnum.TABLE, HandlerEnum.OPR_ADD.getHandler()));
     }
 
     @Override
     public String editTableGroup(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.edit();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return tableGroupStrategy;
-            }
-        });
+        return operationTemplate.execute(new OperationConfig(model, GroupStrategyEnum.TABLE, HandlerEnum.OPR_EDIT.getHandler()));
     }
 
     @Override
     public void removeTableGroup(String tableGroupId) {
-        operationTemplate.remove(new RemoveTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return tableGroupStrategy;
-            }
-
-            @Override
-            public String getId() {
-                return tableGroupId;
-            }
-        });
+        operationTemplate.remove(new OperationConfig(tableGroupId, GroupStrategyEnum.TABLE));
     }
 
     @Override
@@ -268,20 +143,12 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
 
     @Override
     public List<TableGroup> getTableGroupAll(String mappingId) {
-        return operationTemplate.queryAll(new QueryTemplate<TableGroup>() {
-            @Override
-            public ConfigModel getConfigModel() {
-                TableGroup model = new TableGroup();
-                model.setType(ConfigConstant.TABLE_GROUP);
-                model.setMappingId(mappingId);
-                return model;
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return tableGroupStrategy;
-            }
-        });
+        TableGroup tableGroup = new TableGroup();
+        tableGroup.setType(ConfigConstant.TABLE_GROUP);
+        tableGroup.setMappingId(mappingId);
+        QueryConfig<TableGroup> queryConfig = new QueryConfig<>(tableGroup);
+        List<TableGroup> tableGroups = operationTemplate.queryAll(queryConfig);
+        return tableGroups;
     }
 
     @Override
@@ -291,19 +158,7 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
 
     @Override
     public String addMeta(ConfigModel model) {
-        return operationTemplate.execute(model, new OperationTemplate() {
-
-            @Override
-            public void handleEvent(ConfigOperationTemplate.Call call) {
-                call.add();
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-        });
+        return operationTemplate.execute(new OperationConfig(model, HandlerEnum.OPR_ADD.getHandler()));
     }
 
     @Override
@@ -313,36 +168,16 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
 
     @Override
     public void removeMeta(String metaId) {
-        operationTemplate.remove(new RemoveTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-            @Override
-            public String getId() {
-                return metaId;
-            }
-        });
+        operationTemplate.remove(new OperationConfig(metaId));
     }
 
     @Override
     public List<Meta> getMetaAll() {
-        return operationTemplate.queryAll(new QueryTemplate<Meta>() {
-
-            @Override
-            public ConfigModel getConfigModel() {
-                Meta model = new Meta();
-                model.setType(ConfigConstant.META);
-                return model;
-            }
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-        });
+        Meta meta = new Meta();
+        meta.setType(ConfigConstant.META);
+        QueryConfig<Meta> queryConfig = new QueryConfig<>(meta);
+        List<Meta> metas = operationTemplate.queryAll(queryConfig);
+        return metas;
     }
 
     @Override
@@ -373,80 +208,14 @@ public class ManagerFactory implements Manager, ApplicationListener<ContextRefre
     @Override
     public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
         // Load connectors
-        preLoadTemplate.execute(new PreLoadTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-            @Override
-            public String filterType() {
-                return ConfigConstant.CONNECTOR;
-            }
-
-            @Override
-            public ConfigModel parseModel(String json) {
-                return parser.parseConnector(json);
-            }
-        });
-
+        preloadTemplate.execute(new PreloadConfig(ConfigConstant.CONNECTOR, HandlerEnum.PRELOAD_CONNECTOR.getHandler()));
         // Load mappings
-        preLoadTemplate.execute(new PreLoadTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-            @Override
-            public String filterType() {
-                return ConfigConstant.MAPPING;
-            }
-
-            @Override
-            public ConfigModel parseModel(String json) {
-                return parser.parseObject(json, Mapping.class);
-            }
-        });
-
+        preloadTemplate.execute(new PreloadConfig(ConfigConstant.MAPPING, HandlerEnum.PRELOAD_MAPPING.getHandler()));
         // Load tableGroups
-        preLoadTemplate.execute(new PreLoadTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return tableGroupStrategy;
-            }
-
-            @Override
-            public String filterType() {
-                return ConfigConstant.TABLE_GROUP;
-            }
-
-            @Override
-            public ConfigModel parseModel(String json) {
-                return parser.parseObject(json, TableGroup.class);
-            }
-        });
-
+        preloadTemplate.execute(new PreloadConfig(ConfigConstant.TABLE_GROUP, GroupStrategyEnum.TABLE, HandlerEnum.PRELOAD_TABLE_GROUP.getHandler()));
         // Load metas
-        preLoadTemplate.execute(new PreLoadTemplate() {
-
-            @Override
-            public GroupStrategy getGroupStrategy() {
-                return defaultGroupStrategy;
-            }
-
-            @Override
-            public String filterType() {
-                return ConfigConstant.META;
-            }
-
-            @Override
-            public ConfigModel parseModel(String json) {
-                return parser.parseObject(json, Meta.class);
-            }
-        });
+        preloadTemplate.execute(new PreloadConfig(ConfigConstant.META, HandlerEnum.PRELOAD_META.getHandler()));
+
     }
 
 }

+ 30 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/OperationCallBack.java

@@ -0,0 +1,30 @@
+package org.dbsyncer.manager.config;
+
+import org.dbsyncer.manager.template.Callback;
+import org.dbsyncer.storage.StorageService;
+
+import java.util.Map;
+
+public class OperationCallBack implements Callback {
+
+    private StorageService storageService;
+
+    private String type;
+
+    private Map params;
+
+    public OperationCallBack(StorageService storageService, String type, Map params) {
+        this.storageService = storageService;
+        this.type = type;
+        this.params = params;
+    }
+
+    public void add() {
+        storageService.add(type, params);
+    }
+
+    public void edit() {
+        storageService.edit(type, params);
+    }
+
+}

+ 52 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/OperationConfig.java

@@ -0,0 +1,52 @@
+package org.dbsyncer.manager.config;
+
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
+import org.dbsyncer.manager.template.Handler;
+import org.dbsyncer.parser.model.ConfigModel;
+
+public class OperationConfig {
+
+    private String id;
+
+    private ConfigModel model;
+
+    private GroupStrategyEnum groupStrategyEnum;
+
+    private Handler handler;
+
+    public OperationConfig(String id) {
+        this.id = id;
+    }
+
+    public OperationConfig(String id, GroupStrategyEnum groupStrategyEnum) {
+        this.id = id;
+        this.groupStrategyEnum = groupStrategyEnum;
+    }
+
+    public OperationConfig(ConfigModel model, Handler handler) {
+        this.model = model;
+        this.handler = handler;
+    }
+
+    public OperationConfig(ConfigModel model, GroupStrategyEnum groupStrategyEnum, Handler handler) {
+        this.model = model;
+        this.groupStrategyEnum = groupStrategyEnum;
+        this.handler = handler;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public ConfigModel getModel() {
+        return model;
+    }
+
+    public GroupStrategyEnum getGroupStrategyEnum() {
+        return groupStrategyEnum;
+    }
+
+    public Handler getHandler() {
+        return handler;
+    }
+}

+ 36 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/PreloadCallBack.java

@@ -0,0 +1,36 @@
+package org.dbsyncer.manager.config;
+
+import org.dbsyncer.manager.template.Callback;
+import org.dbsyncer.parser.Parser;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.parser.model.Meta;
+import org.dbsyncer.parser.model.TableGroup;
+
+public class PreloadCallBack implements Callback {
+
+    private Parser parser;
+
+    private String json;
+
+    public PreloadCallBack(Parser parser, String json) {
+        this.parser = parser;
+        this.json = json;
+    }
+
+    public Object parseConnector() {
+        return parser.parseConnector(json);
+    }
+
+    public Object parseMapping() {
+        return parser.parseObject(json, Mapping.class);
+    }
+
+    public Object parseTableGroup() {
+        return parser.parseObject(json, TableGroup.class);
+    }
+
+    public Object parseMeta() {
+        return parser.parseObject(json, Meta.class);
+    }
+
+}

+ 36 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/PreloadConfig.java

@@ -0,0 +1,36 @@
+package org.dbsyncer.manager.config;
+
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
+import org.dbsyncer.manager.template.Handler;
+
+public class PreloadConfig {
+
+    private String filterType;
+
+    private GroupStrategyEnum groupStrategyEnum;
+
+    private Handler handler;
+
+    public PreloadConfig(String filterType, Handler handler) {
+        this.filterType = filterType;
+        this.handler = handler;
+    }
+
+    public PreloadConfig(String filterType, GroupStrategyEnum groupStrategyEnum, Handler handler) {
+        this.filterType = filterType;
+        this.groupStrategyEnum = groupStrategyEnum;
+        this.handler = handler;
+    }
+
+    public String getFilterType() {
+        return filterType;
+    }
+
+    public GroupStrategyEnum getGroupStrategyEnum() {
+        return groupStrategyEnum;
+    }
+
+    public Handler getHandler() {
+        return handler;
+    }
+}

+ 28 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/config/QueryConfig.java

@@ -0,0 +1,28 @@
+package org.dbsyncer.manager.config;
+
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
+import org.dbsyncer.parser.model.ConfigModel;
+
+public class QueryConfig<T> {
+
+    private ConfigModel configModel;
+
+    private GroupStrategyEnum groupStrategyEnum;
+
+    public QueryConfig(ConfigModel configModel) {
+        this.configModel = configModel;
+    }
+
+    public QueryConfig(ConfigModel configModel, GroupStrategyEnum groupStrategyEnum) {
+        this.configModel = configModel;
+        this.groupStrategyEnum = groupStrategyEnum;
+    }
+
+    public ConfigModel getConfigModel() {
+        return configModel;
+    }
+
+    public GroupStrategyEnum getGroupStrategyEnum() {
+        return groupStrategyEnum;
+    }
+}

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

@@ -0,0 +1,32 @@
+package org.dbsyncer.manager.enums;
+
+import org.dbsyncer.manager.strategy.DefaultGroupStrategy;
+import org.dbsyncer.manager.strategy.TableGroupStrategy;
+import org.dbsyncer.manager.template.GroupStrategy;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/04/24 14:19
+ */
+public enum GroupStrategyEnum {
+
+    /**
+     * 默认
+     */
+    DEFAULT(new DefaultGroupStrategy()),
+    /**
+     * 表映射关系
+     */
+    TABLE(new TableGroupStrategy());
+
+    private GroupStrategy groupStrategy;
+
+    GroupStrategyEnum(GroupStrategy groupStrategy) {
+        this.groupStrategy = groupStrategy;
+    }
+
+    public GroupStrategy getGroupStrategy() {
+        return groupStrategy;
+    }
+}

+ 80 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/HandlerEnum.java

@@ -0,0 +1,80 @@
+package org.dbsyncer.manager.enums;
+
+import org.dbsyncer.manager.config.OperationCallBack;
+import org.dbsyncer.manager.config.PreloadCallBack;
+import org.dbsyncer.manager.handler.AbstractOperationHandler;
+import org.dbsyncer.manager.handler.AbstractPreloadHandler;
+import org.dbsyncer.manager.template.Handler;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/04/24 14:19
+ */
+public enum HandlerEnum {
+
+    /**
+     * 添加
+     */
+    OPR_ADD(new AbstractOperationHandler(){
+        @Override
+        protected void handle(OperationCallBack operationCallBack) {
+            operationCallBack.add();
+        }
+    }),
+    /**
+     * 修改
+     */
+    OPR_EDIT(new AbstractOperationHandler(){
+        @Override
+        protected void handle(OperationCallBack operationCallBack) {
+            operationCallBack.edit();
+        }
+    }),
+    /**
+     * 预加载Connector
+     */
+    PRELOAD_CONNECTOR(new AbstractPreloadHandler(){
+        @Override
+        protected Object preload(PreloadCallBack preloadCallBack) {
+            return preloadCallBack.parseConnector();
+        }
+    }),
+    /**
+     * 预加载Mapping
+     */
+    PRELOAD_MAPPING(new AbstractPreloadHandler(){
+        @Override
+        protected Object preload(PreloadCallBack preloadCallBack) {
+            return preloadCallBack.parseMapping();
+        }
+    }),
+    /**
+     * 预加载TableGroup
+     */
+    PRELOAD_TABLE_GROUP(new AbstractPreloadHandler(){
+        @Override
+        protected Object preload(PreloadCallBack preloadCallBack) {
+            return preloadCallBack.parseTableGroup();
+        }
+    }),
+    /**
+     * 预加载Meta
+     */
+    PRELOAD_META(new AbstractPreloadHandler(){
+        @Override
+        protected Object preload(PreloadCallBack preloadCallBack) {
+            return preloadCallBack.parseMeta();
+        }
+    });
+
+    private Handler handler;
+
+    HandlerEnum(Handler handler) {
+        this.handler = handler;
+    }
+
+    public Handler getHandler() {
+        return handler;
+    }
+}

+ 25 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/handler/AbstractOperationHandler.java

@@ -0,0 +1,25 @@
+package org.dbsyncer.manager.handler;
+
+import org.dbsyncer.manager.config.OperationCallBack;
+import org.dbsyncer.manager.template.Callback;
+import org.dbsyncer.manager.template.Handler;
+
+public abstract class AbstractOperationHandler implements Handler {
+
+    /**
+     * 交给实现handler处理
+     *
+     * @param operationCallBack
+     * @return
+     */
+    protected abstract void handle(OperationCallBack operationCallBack);
+
+    @Override
+    public Object execute(Callback call) {
+        if (null != call && call instanceof OperationCallBack) {
+            handle((OperationCallBack) call);
+        }
+        return null;
+    }
+
+}

+ 26 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/handler/AbstractPreloadHandler.java

@@ -0,0 +1,26 @@
+package org.dbsyncer.manager.handler;
+
+import org.dbsyncer.manager.config.PreloadCallBack;
+import org.dbsyncer.manager.template.Callback;
+import org.dbsyncer.manager.template.Handler;
+
+public abstract class AbstractPreloadHandler implements Handler {
+
+    /**
+     * 交给实现handler处理
+     *
+     * @param preloadCallBack
+     * @return
+     */
+    protected abstract Object preload(PreloadCallBack preloadCallBack);
+
+    @Override
+    public Object execute(Callback call) {
+        if (null != call && call instanceof PreloadCallBack) {
+            PreloadCallBack preloadCallBack = (PreloadCallBack) call;
+            return preload(preloadCallBack);
+        }
+        return null;
+    }
+
+}

+ 1 - 3
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/DefaultGroupStrategy.java → dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/DefaultGroupStrategy.java

@@ -1,15 +1,13 @@
-package org.dbsyncer.manager.template.impl;
+package org.dbsyncer.manager.strategy;
 
 import org.dbsyncer.manager.template.GroupStrategy;
 import org.dbsyncer.parser.model.ConfigModel;
-import org.springframework.stereotype.Component;
 
 /**
  * @author AE86
  * @version 1.0.0
  * @date 2019/12/2 22:53
  */
-@Component
 public class DefaultGroupStrategy implements GroupStrategy {
 
     @Override

+ 1 - 3
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/TableGroupStrategy.java → dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/TableGroupStrategy.java

@@ -1,17 +1,15 @@
-package org.dbsyncer.manager.template.impl;
+package org.dbsyncer.manager.strategy;
 
 import org.dbsyncer.manager.ManagerException;
 import org.dbsyncer.manager.template.GroupStrategy;
 import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.parser.model.TableGroup;
-import org.springframework.stereotype.Component;
 
 /**
  * @author AE86
  * @version 1.0.0
  * @date 2019/12/2 22:53
  */
-@Component
 public class TableGroupStrategy implements GroupStrategy {
 
     @Override

+ 26 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/AbstractTemplate.java

@@ -0,0 +1,26 @@
+package org.dbsyncer.manager.template;
+
+import org.dbsyncer.manager.config.OperationConfig;
+import org.dbsyncer.manager.config.PreloadConfig;
+import org.dbsyncer.manager.config.QueryConfig;
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
+
+public abstract class AbstractTemplate {
+
+    protected GroupStrategyEnum getDefaultStrategy(PreloadConfig config){
+        return getDefaultStrategy(config.getGroupStrategyEnum());
+    }
+
+    protected GroupStrategyEnum getDefaultStrategy(OperationConfig config){
+        return getDefaultStrategy(config.getGroupStrategyEnum());
+    }
+
+    protected GroupStrategyEnum getDefaultStrategy(QueryConfig query){
+        return getDefaultStrategy(query.getGroupStrategyEnum());
+    }
+
+    protected GroupStrategyEnum getDefaultStrategy(GroupStrategyEnum strategy){
+        return null != strategy ? strategy : GroupStrategyEnum.DEFAULT;
+    }
+
+}

+ 0 - 14
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/BaseTemplate.java

@@ -1,14 +0,0 @@
-package org.dbsyncer.manager.template;
-
-/**
- * 分组模板
- *
- * @author AE86
- * @version 1.0.0
- * @date 2019/9/16 23:59
- */
-public interface BaseTemplate {
-
-    GroupStrategy getGroupStrategy();
-
-}

+ 4 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/Callback.java

@@ -0,0 +1,4 @@
+package org.dbsyncer.manager.template;
+
+public interface Callback {
+}

+ 7 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/Handler.java

@@ -0,0 +1,7 @@
+package org.dbsyncer.manager.template;
+
+public interface Handler {
+
+    Object execute(Callback call);
+
+}

+ 0 - 17
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/OperationTemplate.java

@@ -1,17 +0,0 @@
-package org.dbsyncer.manager.template;
-
-import org.dbsyncer.manager.template.impl.ConfigOperationTemplate;
-import org.dbsyncer.parser.model.ConfigModel;
-
-/**
- * 操作模板
- *
- * @author AE86
- * @version 1.0.0
- * @date 2019/9/16 23:59
- */
-public interface OperationTemplate extends BaseTemplate {
-
-    void handleEvent(ConfigOperationTemplate.Call call);
-
-}

+ 0 - 27
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/PreLoadTemplate.java

@@ -1,27 +0,0 @@
-package org.dbsyncer.manager.template;
-
-import org.dbsyncer.parser.model.ConfigModel;
-import org.dbsyncer.storage.constant.ConfigConstant;
-
-/**
- * 预加载配置模板
- */
-public interface PreLoadTemplate extends BaseTemplate {
-
-    /**
-     * 过滤类型
-     *
-     * @return
-     * @see ConfigConstant
-     */
-    String filterType();
-
-    /**
-     * 解析json配置实现
-     *
-     * @param json JSON配置
-     * @return
-     */
-    ConfigModel parseModel(String json);
-
-}

+ 0 - 16
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/QueryTemplate.java

@@ -1,16 +0,0 @@
-package org.dbsyncer.manager.template;
-
-import org.dbsyncer.parser.model.ConfigModel;
-
-/**
- * 查询模板
- *
- * @author AE86
- * @version 1.0.0
- * @date 2019/9/16 23:59
- */
-public interface QueryTemplate<T> extends BaseTemplate {
-
-    ConfigModel getConfigModel();
-
-}

+ 0 - 14
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/RemoveTemplate.java

@@ -1,14 +0,0 @@
-package org.dbsyncer.manager.template;
-
-/**
- * 分组模板
- *
- * @author AE86
- * @version 1.0.0
- * @date 2019/9/16 23:59
- */
-public interface RemoveTemplate extends BaseTemplate {
-
-    String getId();
-
-}

+ 0 - 42
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/Group.java

@@ -1,42 +0,0 @@
-package org.dbsyncer.manager.template.impl;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * @author AE86
- * @version 1.0.0
- * @date 2019/12/2 23:18
- */
-public class Group {
-
-    private List<String> index;
-
-    public Group() {
-        this.index = new LinkedList<>();
-    }
-
-    public synchronized void addIfAbsent(String e) {
-        if (!index.contains(e)) {
-            index.add(e);
-        }
-    }
-
-    public synchronized void remove(String e) {
-        index.remove(e);
-    }
-
-    public List<String> subList(int fromIndex, int toIndex) {
-        return index.subList(fromIndex, toIndex);
-    }
-
-    public int size(){
-        return index.size();
-    }
-
-    public List<String> getAll() {
-        return Collections.unmodifiableList(index);
-    }
-
-}

+ 51 - 37
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/ConfigOperationTemplate.java → dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/OperationTemplate.java

@@ -4,6 +4,10 @@ import org.apache.commons.lang.StringUtils;
 import org.dbsyncer.cache.CacheService;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.manager.ManagerException;
+import org.dbsyncer.manager.config.OperationCallBack;
+import org.dbsyncer.manager.config.OperationConfig;
+import org.dbsyncer.manager.config.QueryConfig;
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
 import org.dbsyncer.manager.template.*;
 import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.parser.util.ConfigModelUtil;
@@ -16,10 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 操作配置模板
@@ -29,7 +30,7 @@ import java.util.Map;
  * @date 2019/9/16 23:59
  */
 @Component
-public class ConfigOperationTemplate {
+public final class OperationTemplate extends AbstractTemplate {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -39,9 +40,9 @@ public class ConfigOperationTemplate {
     @Autowired
     private CacheService cacheService;
 
-    public <T> List<T> queryAll(QueryTemplate<T> queryTemplate) {
-        ConfigModel model = queryTemplate.getConfigModel();
-        String groupId = getGroupId(model, queryTemplate);
+    public <T> List<T> queryAll(QueryConfig<T> query) {
+        ConfigModel model = query.getConfigModel();
+        String groupId = getGroupId(model, getDefaultStrategy(query));
         Group group = cacheService.get(groupId, Group.class);
         if (null != group) {
             List<String> index = group.getAll();
@@ -68,43 +69,44 @@ public class ConfigOperationTemplate {
         return beanCopy(clazz, o);
     }
 
-    public String execute(ConfigModel model, OperationTemplate operationTemplate) {
+    public String execute(OperationConfig config) {
         // 1、解析配置
+        ConfigModel model = config.getModel();
         Assert.notNull(model, "ConfigModel can not be null.");
-        String id = model.getId();
-        logger.info("Parse config model id:{}", id);
 
         // 2、持久化
         Map<String, Object> params = ConfigModelUtil.convertModelToMap(model);
-        operationTemplate.handleEvent(new Call(StorageConstant.CONFIG, params));
-        logger.info("Stored config model:{}", id);
+        logger.info("params:{}", params);
+        Handler handler = config.getHandler();
+        Assert.notNull(handler, "Handler can not be null.");
+        handler.execute(new OperationCallBack(storageService, StorageConstant.CONFIG, params));
 
         // 3、缓存
-        save(model, operationTemplate);
-        return id;
+        GroupStrategyEnum strategy = getDefaultStrategy(config);
+        cache(model, strategy);
+        return model.getId();
     }
 
-    public void save(ConfigModel model, BaseTemplate baseTemplate) {
+    public void cache(ConfigModel model, GroupStrategyEnum strategy) {
         // 1、缓存
         Assert.notNull(model, "ConfigModel can not be null.");
         String id = model.getId();
         cacheService.put(id, model);
-        logger.info("Save config into cache:[{}]", id);
 
         // 2、分组
-        String groupId = getGroupId(model, baseTemplate);
+        String groupId = getGroupId(model, strategy);
         cacheService.putIfAbsent(groupId, new Group());
         Group group = cacheService.get(groupId, Group.class);
         group.addIfAbsent(id);
-        logger.info("Save group into cache:[{}]", groupId);
+        logger.info("Put the model [{}] for {} group into cache.", id, groupId);
     }
 
-    public void remove(RemoveTemplate removeTemplate) {
-        String id = removeTemplate.getId();
+    public void remove(OperationConfig config) {
+        String id = config.getId();
         Assert.hasText(id, "ID can not be empty.");
         // 删除分组
         ConfigModel model = cacheService.get(id, ConfigModel.class);
-        String groupId = getGroupId(model, removeTemplate);
+        String groupId = getGroupId(model, getDefaultStrategy(config));
         Group group = cacheService.get(groupId, Group.class);
         if (null != group) {
             group.remove(id);
@@ -116,12 +118,13 @@ public class ConfigOperationTemplate {
         storageService.remove(StorageConstant.CONFIG, id);
     }
 
-    private String getGroupId(ConfigModel model, BaseTemplate template) {
+    private String getGroupId(ConfigModel model, GroupStrategyEnum strategy) {
         Assert.notNull(model, "ConfigModel can not be null.");
-        Assert.notNull(template, "BaseTemplate can not be null.");
-        GroupStrategy strategy = template.getGroupStrategy();
-        Assert.notNull(strategy, "GroupStrategy can not be null.");
-        String groupId = strategy.getGroupId(model);
+        Assert.notNull(strategy, "GroupStrategyEnum can not be null.");
+        GroupStrategy groupStrategy = strategy.getGroupStrategy();
+        Assert.notNull(groupStrategy, "GroupStrategy can not be null.");
+
+        String groupId = groupStrategy.getGroupId(model);
         Assert.hasText(groupId, "GroupId can not be empty.");
         return groupId;
     }
@@ -141,23 +144,34 @@ public class ConfigOperationTemplate {
         }
     }
 
-    public final class Call {
+    class Group {
+
+        private List<String> index;
+
+        public Group() {
+            this.index = new LinkedList<>();
+        }
 
-        private String type;
+        public synchronized void addIfAbsent(String e) {
+            if (!index.contains(e)) {
+                index.add(e);
+            }
+        }
 
-        private Map params;
+        public synchronized void remove(String e) {
+            index.remove(e);
+        }
 
-        public Call(String type, Map params) {
-            this.type = type;
-            this.params = params;
+        public List<String> subList(int fromIndex, int toIndex) {
+            return index.subList(fromIndex, toIndex);
         }
 
-        public void add() {
-            storageService.add(type, params);
+        public int size(){
+            return index.size();
         }
 
-        public void edit() {
-            storageService.edit(type, params);
+        public List<String> getAll() {
+            return Collections.unmodifiableList(index);
         }
 
     }

+ 22 - 13
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/ConfigPreLoadTemplate.java → dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/PreloadTemplate.java

@@ -1,7 +1,12 @@
 package org.dbsyncer.manager.template.impl;
 
 import org.dbsyncer.common.util.CollectionUtils;
-import org.dbsyncer.manager.template.PreLoadTemplate;
+import org.dbsyncer.manager.config.PreloadCallBack;
+import org.dbsyncer.manager.config.PreloadConfig;
+import org.dbsyncer.manager.enums.GroupStrategyEnum;
+import org.dbsyncer.manager.template.AbstractTemplate;
+import org.dbsyncer.manager.template.Handler;
+import org.dbsyncer.parser.Parser;
 import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.storage.StorageService;
 import org.dbsyncer.storage.constant.ConfigConstant;
@@ -22,32 +27,36 @@ import java.util.Map;
  * @date 2019/9/16 23:59
  */
 @Component
-public class ConfigPreLoadTemplate {
+public final class PreloadTemplate extends AbstractTemplate {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
+    @Autowired
+    private Parser parser;
+
     @Autowired
     private StorageService storageService;
 
     @Autowired
-    private ConfigOperationTemplate operationTemplate;
+    private OperationTemplate operationTemplate;
 
-    public void execute(PreLoadTemplate template) {
+    public void execute(PreloadConfig config) {
         Query query = new Query();
-        String filterType = template.filterType();
+        String filterType = config.getFilterType();
         query.put(ConfigConstant.CONFIG_MODEL_TYPE, filterType);
         List<Map> list = storageService.queryConfig(query);
         boolean empty = CollectionUtils.isEmpty(list);
         logger.info("PreLoad {}:{}", filterType, empty ? 0 : list.size());
         if (!empty) {
-            list.forEach(map -> preload(template, map));
-        }
-    }
-
-    private void preload(PreLoadTemplate template, Map map) {
-        ConfigModel model = template.parseModel((String) map.get(ConfigConstant.CONFIG_MODEL_JSON));
-        if (null != model) {
-            operationTemplate.save(model, template);
+            Handler handler = config.getHandler();
+            GroupStrategyEnum strategy = getDefaultStrategy(config);
+            list.forEach(map -> {
+                String json = (String) map.get(ConfigConstant.CONFIG_MODEL_JSON);
+                ConfigModel model = (ConfigModel) handler.execute(new PreloadCallBack(parser, json));
+                if (null != model) {
+                    operationTemplate.cache(model, strategy);
+                }
+            });
         }
     }
 

+ 3 - 3
dbsyncer-storage/src/main/java/org/dbsyncer/storage/AbstractStorageService.java

@@ -46,7 +46,7 @@ public abstract class AbstractStorageService implements StorageService, Applicat
     public void add(String type, Map params, String collectionId) {
         Assert.hasText(type, "Type can not be empty.");
         Assert.notNull(params, "Params can not be null.");
-        logger.info("collectionId:{}, params:{}", collectionId, params);
+        logger.debug("collectionId:{}, params:{}", collectionId, params);
         try {
             insert(getCollectionId(type, collectionId), params);
         } catch (IOException e) {
@@ -62,7 +62,7 @@ public abstract class AbstractStorageService implements StorageService, Applicat
     @Override
     public void edit(String type, Map params, String collectionId) {
         Assert.notNull(params, "Params can not be null.");
-        logger.info("collectionId:{}, params:{}", collectionId, params);
+        logger.debug("collectionId:{}, params:{}", collectionId, params);
         try {
             update(getCollectionId(type, collectionId), params);
         } catch (IOException e) {
@@ -78,7 +78,7 @@ public abstract class AbstractStorageService implements StorageService, Applicat
     @Override
     public void remove(String type, String id, String collectionId) {
         Assert.hasText(id, "ID can not be null.");
-        logger.info("collectionId:{}, id:{}", collectionId, id);
+        logger.debug("collectionId:{}, id:{}", collectionId, id);
         try {
             delete(getCollectionId(type, collectionId), id);
         } catch (IOException e) {