Browse Source

update constructor

AE86 5 years ago
parent
commit
da361b1b0e

+ 9 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/CheckService.java

@@ -9,8 +9,14 @@ import java.util.Map;
  */
 public interface CheckService {
 
-    String checkConnector(Map<String, String> params);
-
-    String checkMapping(Map<String, String> params);
+    /**
+     * 检查配置
+     *
+     * @param params 参数
+     * @param type 返回类型
+     * @param <T>
+     * @return
+     */
+    <T> T check(Map<String, String> params, Class<T> type);
 
 }

+ 62 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/ConnectorChecker.java

@@ -0,0 +1,62 @@
+/**
+ * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
+ */
+package org.dbsyncer.biz.checker.impl;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.NumberUtils;
+import org.dbsyncer.biz.CheckService;
+import org.dbsyncer.biz.checker.AbstractChecker;
+import org.dbsyncer.listener.config.ListenerConfig;
+import org.dbsyncer.parser.constant.ModelConstant;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.storage.constant.ConfigConstant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/1/8 15:17
+ */
+@Component
+public class ConnectorChecker extends AbstractChecker {
+
+    @Autowired
+    private CheckService checkService;
+
+    @Override
+    public void modify(Mapping mapping, Map<String, String> params) {
+        // 名称
+        String name = params.get(ConfigConstant.CONFIG_MODEL_NAME);
+        if(StringUtils.isNotBlank(name)){
+            mapping.setName(name);
+        }
+
+        // 同步方式(仅支持全量或增量同步方式)
+        String model = params.get("model");
+        if(StringUtils.isNotBlank(model)){
+            if(StringUtils.equals(ModelConstant.FULL, model) || StringUtils.equals(ModelConstant.INCREMENT, model)){
+                mapping.setModel(model);
+            }
+        }
+
+        // 全量配置
+        String threadNum = params.get("threadNum");
+        mapping.setThreadNum(NumberUtils.toInt(threadNum, mapping.getThreadNum()));
+        String batchNum = params.get("batchNum");
+        mapping.setBatchNum(NumberUtils.toInt(batchNum, mapping.getBatchNum()));
+        // TODO 增量配置(日志/定时)
+        String incrementStrategy = params.get("incrementStrategy");
+        ListenerConfig listener = mapping.getListener();
+
+        // 修改:过滤条件/转换配置/插件配置
+        modifyConfigModel(mapping, params);
+
+        // 增量配置
+        mapping.setUpdateTime(System.currentTimeMillis());
+    }
+
+}

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

@@ -5,10 +5,14 @@ package org.dbsyncer.biz.checker.impl;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
+import org.dbsyncer.biz.CheckService;
 import org.dbsyncer.biz.checker.AbstractChecker;
+import org.dbsyncer.listener.config.ListenerConfig;
 import org.dbsyncer.parser.constant.ModelConstant;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.storage.constant.ConfigConstant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import java.util.Map;
 
@@ -17,8 +21,12 @@ import java.util.Map;
  * @version 1.0.0
  * @date 2020/1/8 15:17
  */
+@Component
 public class MappingChecker extends AbstractChecker {
 
+    @Autowired
+    private CheckService checkService;
+
     @Override
     public void modify(Mapping mapping, Map<String, String> params) {
         // 名称
@@ -40,7 +48,9 @@ public class MappingChecker extends AbstractChecker {
         mapping.setThreadNum(NumberUtils.toInt(threadNum, mapping.getThreadNum()));
         String batchNum = params.get("batchNum");
         mapping.setBatchNum(NumberUtils.toInt(batchNum, mapping.getBatchNum()));
-        // TODO 增量配置
+        // TODO 增量配置(日志/定时)
+        String incrementStrategy = params.get("incrementStrategy");
+        ListenerConfig listener = mapping.getListener();
 
         // 修改:过滤条件/转换配置/插件配置
         modifyConfigModel(mapping, params);

+ 2 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/MysqlChecker.java

@@ -4,6 +4,7 @@ import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.connector.config.DatabaseConfig;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.storage.constant.ConfigConstant;
+import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
 import java.util.Map;
@@ -13,6 +14,7 @@ import java.util.Map;
  * @version 1.0.0
  * @date 2020/1/7 23:16
  */
+@Component
 public class MysqlChecker extends AbstractChecker {
 
     @Override

+ 45 - 41
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/CheckServiceImpl.java

@@ -2,23 +2,21 @@ package org.dbsyncer.biz.impl;
 
 import org.dbsyncer.biz.CheckService;
 import org.dbsyncer.biz.checker.Checker;
-import org.dbsyncer.biz.checker.impl.MappingChecker;
-import org.dbsyncer.biz.checker.impl.MysqlChecker;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.connector.config.ConnectorConfig;
-import org.dbsyncer.connector.enums.ConnectorEnum;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.storage.constant.ConfigConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
-import javax.annotation.PostConstruct;
-import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
@@ -27,55 +25,61 @@ import java.util.Map;
  * @date 2020/1/7 22:59
  */
 @Service
-public class CheckServiceImpl implements CheckService {
+public class CheckServiceImpl implements CheckService, ApplicationContextAware {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
     @Autowired
     private Manager manager;
 
-    private Map<String, Checker> map;
+    private ApplicationContext applicationContext;
 
-    @PostConstruct
-    public void init() {
-        map = new LinkedHashMap<>();
-        map.put(ConnectorEnum.MYSQL.getType(), new MysqlChecker());
-        map.put(ConfigConstant.MAPPING, new MappingChecker());
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        this.applicationContext = applicationContext;
     }
 
-    @Override
-    public String checkConnector(Map<String, String> params) {
-        logger.info("check connector params:{}", params);
-        Assert.notEmpty(params, "CheckServiceImpl check connector params is null.");
-        String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
-        Connector connector = manager.getConnector(id);
-        Assert.notNull(connector, "Can not find connector.");
-        ConnectorConfig config = connector.getConfig();
-        String type = config.getConnectorType();
-        Checker checker = map.get(type);
-        Assert.notNull(checker, "Checker can not be null.");
+//    @Override
+//    public String checkConnector(Map<String, String> params) {
+//        logger.info("check connector params:{}", params);
+//        Assert.notEmpty(params, "CheckServiceImpl check connector params is null.");
+//        String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
+//        Connector connector = manager.getConnector(id);
+//        Assert.notNull(connector, "Can not find connector.");
+//        ConnectorConfig config = connector.getConfig();
+//        String type = config.getConnectorType();
+//        Checker checker = map.get(type);
+//        Assert.notNull(checker, "Checker can not be null.");
+//
+//        checker.modify(connector, params);
+//        String json = JsonUtil.objToJson(connector);
+//        logger.info("check success:{}", json);
+//        return json;
+//    }
 
-        checker.modify(connector, params);
-        String json = JsonUtil.objToJson(connector);
-        logger.info("check success:{}", json);
-        return json;
-    }
+//    @Override
+//    public String checkMapping(Map<String, String> params) {
+//        logger.info("check mapping params:{}", params);
+//        Assert.notEmpty(params, "CheckServiceImpl check mapping params is null.");
+//        String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
+//        Mapping mapping = manager.getMapping(id);
+//        Assert.notNull(mapping, "Can not find mapping.");
+//        String type = mapping.getType();
+//        Checker checker = map.get(type);
+//        Assert.notNull(checker, "Checker can not be null.");
+//
+//        checker.modify(mapping, params);
+//        String json = JsonUtil.objToJson(mapping);
+//        logger.info("check success:{}", json);
+//        return json;
+//    }
 
     @Override
-    public String checkMapping(Map<String, String> params) {
-        logger.info("check mapping params:{}", params);
-        Assert.notEmpty(params, "CheckServiceImpl check mapping params is null.");
-        String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
-        Mapping mapping = manager.getMapping(id);
-        Assert.notNull(mapping, "Can not find mapping.");
-        String type = mapping.getType();
-        Checker checker = map.get(type);
+    public <T> T check(Map<String, String> params, Class<T> type) {
+        T checker = applicationContext.getBean(type);
         Assert.notNull(checker, "Checker can not be null.");
 
-        checker.modify(mapping, params);
-        String json = JsonUtil.objToJson(mapping);
-        logger.info("check success:{}", json);
-        return json;
+//        checker.modify(null, params);
+        return null;
     }
-
 }

+ 5 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ConnectorServiceImpl.java

@@ -5,6 +5,8 @@ import org.dbsyncer.biz.CheckService;
 import org.dbsyncer.biz.ConnectorService;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.model.Connector;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.storage.constant.ConfigConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,7 +27,7 @@ public class ConnectorServiceImpl implements ConnectorService {
 
     @Autowired
     private Manager manager;
-    
+
     @Autowired
     private CheckService checkService;
 
@@ -43,8 +45,8 @@ public class ConnectorServiceImpl implements ConnectorService {
 
     @Override
     public String edit(Map<String, String> params) {
-        String json = checkService.checkConnector(params);
-        return manager.editConnector(json);
+        Connector connector = checkService.check(params, Connector.class);
+        return manager.editConnector(null);
     }
 
     @Override

+ 4 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MappingServiceImpl.java

@@ -5,7 +5,7 @@ import org.dbsyncer.biz.MappingService;
 import org.dbsyncer.biz.vo.MappingVo;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
-import org.dbsyncer.listener.config.PollingListenerConfig;
+import org.dbsyncer.listener.config.TimingListenerConfig;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.constant.ModelConstant;
 import org.dbsyncer.parser.model.Connector;
@@ -54,7 +54,7 @@ public class MappingServiceImpl implements MappingService {
 
         // TODO 缺少默认值
         mapping.setModel(ModelConstant.FULL);
-        mapping.setListener(new PollingListenerConfig());
+        mapping.setListener(new TimingListenerConfig());
         String json = JsonUtil.objToJson(mapping);
         return manager.addMapping(json);
     }
@@ -62,8 +62,8 @@ public class MappingServiceImpl implements MappingService {
     @Override
     public String edit(Map<String, String> params) {
         logger.info("检查驱动是否停止运行");
-        String json = checkService.checkMapping(params);
-        return manager.editMapping(json);
+        Mapping mapping = checkService.check(params, Mapping.class);
+        return manager.editMapping(null);
     }
 
     @Override

+ 8 - 8
dbsyncer-listener/src/main/java/org/dbsyncer/listener/config/PollingListenerConfig.java → dbsyncer-listener/src/main/java/org/dbsyncer/listener/config/TimingListenerConfig.java

@@ -5,14 +5,14 @@ import org.dbsyncer.listener.enums.ListenerEnum;
 import java.util.List;
 
 /**
- * 轮询配置
+ * 定时配置
  * @author AE86
  * @version 1.0.0
  * @date 2019/10/7 14:08
  */
-public class PollingListenerConfig extends ListenerConfig {
+public class TimingListenerConfig extends ListenerConfig {
 
-    public PollingListenerConfig() {
+    public TimingListenerConfig() {
         setListenerType(ListenerEnum.POLLING.getType());
     }
 
@@ -35,7 +35,7 @@ public class PollingListenerConfig extends ListenerConfig {
         return cronExpression;
     }
 
-    public PollingListenerConfig setCronExpression(String cronExpression) {
+    public TimingListenerConfig setCronExpression(String cronExpression) {
         this.cronExpression = cronExpression;
         return this;
     }
@@ -44,7 +44,7 @@ public class PollingListenerConfig extends ListenerConfig {
         return eventFieldName;
     }
 
-    public PollingListenerConfig setEventFieldName(String eventFieldName) {
+    public TimingListenerConfig setEventFieldName(String eventFieldName) {
         this.eventFieldName = eventFieldName;
         return this;
     }
@@ -53,7 +53,7 @@ public class PollingListenerConfig extends ListenerConfig {
         return update;
     }
 
-    public PollingListenerConfig setUpdate(List<String> update) {
+    public TimingListenerConfig setUpdate(List<String> update) {
         this.update = update;
         return this;
     }
@@ -62,7 +62,7 @@ public class PollingListenerConfig extends ListenerConfig {
         return insert;
     }
 
-    public PollingListenerConfig setInsert(List<String> insert) {
+    public TimingListenerConfig setInsert(List<String> insert) {
         this.insert = insert;
         return this;
     }
@@ -71,7 +71,7 @@ public class PollingListenerConfig extends ListenerConfig {
         return delete;
     }
 
-    public PollingListenerConfig setDelete(List<String> delete) {
+    public TimingListenerConfig setDelete(List<String> delete) {
         this.delete = delete;
         return this;
     }

+ 2 - 2
dbsyncer-listener/src/main/java/org/dbsyncer/listener/enums/ListenerEnum.java

@@ -3,7 +3,7 @@ package org.dbsyncer.listener.enums;
 import org.apache.commons.lang.StringUtils;
 import org.dbsyncer.listener.ListenerException;
 import org.dbsyncer.listener.config.MysqlListenerConfig;
-import org.dbsyncer.listener.config.PollingListenerConfig;
+import org.dbsyncer.listener.config.TimingListenerConfig;
 
 /**
  * 支持监听器类型
@@ -21,7 +21,7 @@ public enum ListenerEnum {
     /**
      * 轮询
      */
-    POLLING("Polling", PollingListenerConfig.class);
+    POLLING("Polling", TimingListenerConfig.class);
 
     // 策略名称
     private String type;

+ 1 - 1
dbsyncer-web/src/main/resources/templates/mapping/editMappingIncrement.html

@@ -13,7 +13,7 @@
                         <input type="radio" name="incrementStrategy" value="log" checked="checked"/> 日志
                     </div>
                     <div class="col-sm-6">
-                        <input type="radio" name="incrementStrategy" value="quartz" /> 定时
+                        <input type="radio" name="incrementStrategy" value="timing" /> 定时
                     </div>
                 </div>
             </div>