瀏覽代碼

add def val

AE86 5 年之前
父節點
當前提交
d00baeeb30

+ 0 - 23
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/AbstractChecker.java

@@ -79,27 +79,4 @@ public abstract class AbstractChecker implements Checker {
 
 
     }
     }
 
 
-    /**
-     * 获取检查器类型
-     *
-     * @param type
-     * @return
-     */
-    protected String getCheckerType(String type) {
-        return toLowerCaseFirstOne(type).concat("ConfigChecker");
-    }
-
-    /**
-     * 首字母转小写
-     *
-     * @param s
-     * @return
-     */
-    private String toLowerCaseFirstOne(String s) {
-        if (StringUtils.isBlank(s) || Character.isLowerCase(s.charAt(0))) {
-            return s;
-        }
-        return new StringBuilder().append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
-    }
-
 }
 }

+ 12 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/MappingLogConfigChecker.java

@@ -0,0 +1,12 @@
+package org.dbsyncer.biz.checker;
+
+/**
+ * 检查增量配置
+ *
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/4/7 16:17
+ */
+public interface MappingLogConfigChecker extends MappingConfigChecker {
+
+}

+ 2 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/ConnectorChecker.java

@@ -1,10 +1,8 @@
-/**
- * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
- */
 package org.dbsyncer.biz.checker.impl.connector;
 package org.dbsyncer.biz.checker.impl.connector;
 
 
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.biz.checker.ConnectorConfigChecker;
 import org.dbsyncer.biz.checker.ConnectorConfigChecker;
+import org.dbsyncer.biz.util.CheckerTypeUtil;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.connector.config.ConnectorConfig;
 import org.dbsyncer.connector.config.ConnectorConfig;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.Manager;
@@ -54,7 +52,7 @@ public class ConnectorChecker extends AbstractChecker implements ApplicationCont
 
 
         // 配置连接器配置
         // 配置连接器配置
         ConnectorConfig config = connector.getConfig();
         ConnectorConfig config = connector.getConfig();
-        String type = this.getCheckerType(config.getConnectorType());
+        String type = CheckerTypeUtil.getCheckerType(config.getConnectorType());
         ConnectorConfigChecker checker = map.get(type);
         ConnectorConfigChecker checker = map.get(type);
         Assert.notNull(checker, "Checker can not be null.");
         Assert.notNull(checker, "Checker can not be null.");
         checker.modify(connector, params);
         checker.modify(connector, params);

+ 0 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/MysqlConfigChecker.java

@@ -1,6 +1,3 @@
-/**
- * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
- */
 package org.dbsyncer.biz.checker.impl.connector;
 package org.dbsyncer.biz.checker.impl.connector;
 
 
 import org.dbsyncer.biz.checker.ConnectorConfigChecker;
 import org.dbsyncer.biz.checker.ConnectorConfigChecker;

+ 17 - 12
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/LogConfigChecker.java

@@ -1,16 +1,16 @@
-/**
- * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
- */
 package org.dbsyncer.biz.checker.impl.mapping;
 package org.dbsyncer.biz.checker.impl.mapping;
 
 
-import org.apache.commons.lang.StringUtils;
 import org.dbsyncer.biz.checker.MappingConfigChecker;
 import org.dbsyncer.biz.checker.MappingConfigChecker;
+import org.dbsyncer.biz.checker.MappingLogConfigChecker;
+import org.dbsyncer.biz.util.CheckerTypeUtil;
 import org.dbsyncer.connector.config.ConnectorConfig;
 import org.dbsyncer.connector.config.ConnectorConfig;
-import org.dbsyncer.connector.enums.ConnectorEnum;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.Mapping;
+import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.util.Map;
 import java.util.Map;
@@ -23,22 +23,27 @@ import java.util.Map;
  * @date 2020/1/8 15:17
  * @date 2020/1/8 15:17
  */
  */
 @Component
 @Component
-public class LogConfigChecker implements MappingConfigChecker {
+public class LogConfigChecker implements MappingConfigChecker, ApplicationContextAware {
 
 
     @Autowired
     @Autowired
     private Manager manager;
     private Manager manager;
 
 
+    private Map<String, MappingLogConfigChecker> map;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        map = applicationContext.getBeansOfType(MappingLogConfigChecker.class);
+    }
+
     @Override
     @Override
     public void modify(Mapping mapping, Map<String, String> params) {
     public void modify(Mapping mapping, Map<String, String> params) {
-        // TODO 仅支持 DQL_Mysql/DQL_Oracle
         String connectorId = mapping.getSourceConnectorId();
         String connectorId = mapping.getSourceConnectorId();
         Connector connector = manager.getConnector(connectorId);
         Connector connector = manager.getConnector(connectorId);
         ConnectorConfig config = connector.getConfig();
         ConnectorConfig config = connector.getConfig();
-        String type = config.getConnectorType();
-        // String label = params.get("incrementStrategyLogTableLabel");
-        if(StringUtils.equals(ConnectorEnum.DQL_MYSQL.getType(),type)){
-
-            return;
+        String type = CheckerTypeUtil.getCheckerType(config.getConnectorType() + "Log");
+        MappingLogConfigChecker checker = map.get(type);
+        if(null != checker){
+            checker.modify(mapping, params);
         }
         }
     }
     }
 
 

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

@@ -1,12 +1,10 @@
-/**
- * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
- */
 package org.dbsyncer.biz.checker.impl.mapping;
 package org.dbsyncer.biz.checker.impl.mapping;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.biz.checker.MappingConfigChecker;
 import org.dbsyncer.biz.checker.MappingConfigChecker;
+import org.dbsyncer.biz.util.CheckerTypeUtil;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.constant.ModelConstant;
 import org.dbsyncer.parser.constant.ModelConstant;
@@ -71,7 +69,7 @@ public class MappingChecker extends AbstractChecker implements ApplicationContex
         // 增量配置(日志/定时)
         // 增量配置(日志/定时)
         String incrementStrategy = params.get("incrementStrategy");
         String incrementStrategy = params.get("incrementStrategy");
         Assert.hasText(incrementStrategy, "MappingChecker check params incrementStrategy is empty");
         Assert.hasText(incrementStrategy, "MappingChecker check params incrementStrategy is empty");
-        String type = this.getCheckerType(incrementStrategy);
+        String type = CheckerTypeUtil.getCheckerType(incrementStrategy);
         MappingConfigChecker checker = map.get(type);
         MappingConfigChecker checker = map.get(type);
         Assert.notNull(checker, "Checker can not be null.");
         Assert.notNull(checker, "Checker can not be null.");
         checker.modify(mapping, params);
         checker.modify(mapping, params);

+ 30 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MysqlLogConfigChecker.java

@@ -0,0 +1,30 @@
+package org.dbsyncer.biz.checker.impl.mapping;
+
+import org.dbsyncer.biz.checker.MappingLogConfigChecker;
+import org.dbsyncer.listener.config.LogListenerConfig;
+import org.dbsyncer.parser.model.Mapping;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+import java.util.Map;
+
+/**
+ * 检查增量MYSQL配置
+ *
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/4/7 16:17
+ */
+@Component
+public class MysqlLogConfigChecker implements MappingLogConfigChecker {
+
+    @Override
+    public void modify(Mapping mapping, Map<String, String> params) {
+        LogListenerConfig listenerConfig = new LogListenerConfig();
+        String label = params.get("incrementStrategyLogTableLabel");
+        Assert.hasText(label, "MysqlLogConfigChecker check params incrementStrategyLogTableLabel is empty");
+        listenerConfig.setTableLabel(label);
+        mapping.setListener(listenerConfig);
+    }
+
+}

+ 0 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/TimingConfigChecker.java

@@ -1,6 +1,3 @@
-/**
- * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
- */
 package org.dbsyncer.biz.checker.impl.mapping;
 package org.dbsyncer.biz.checker.impl.mapping;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;

+ 0 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/tablegroup/TableGroupChecker.java

@@ -1,6 +1,3 @@
-/**
- * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved.
- */
 package org.dbsyncer.biz.checker.impl.tablegroup;
 package org.dbsyncer.biz.checker.impl.tablegroup;
 
 
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.biz.checker.AbstractChecker;

+ 30 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/util/CheckerTypeUtil.java

@@ -0,0 +1,30 @@
+package org.dbsyncer.biz.util;
+
+import org.apache.commons.lang.StringUtils;
+
+public abstract class CheckerTypeUtil {
+
+    /**
+     * 获取检查器类型
+     *
+     * @param type
+     * @return
+     */
+    public static String getCheckerType(String type) {
+        return toLowerCaseFirstOne(type).concat("ConfigChecker");
+    }
+
+    /**
+     * 首字母转小写
+     *
+     * @param s
+     * @return
+     */
+    private static String toLowerCaseFirstOne(String s) {
+        if (StringUtils.isBlank(s) || Character.isLowerCase(s.charAt(0))) {
+            return s;
+        }
+        return new StringBuilder().append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
+    }
+
+}

+ 30 - 0
dbsyncer-listener/src/main/java/org/dbsyncer/listener/config/LogListenerConfig.java

@@ -0,0 +1,30 @@
+package org.dbsyncer.listener.config;
+
+import org.dbsyncer.listener.enums.ListenerEnum;
+
+/**
+ * 日志配置
+ *
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/04/7 17:08
+ */
+public class LogListenerConfig extends ListenerConfig {
+
+    public LogListenerConfig() {
+        setListenerType(ListenerEnum.LOG.getType());
+    }
+
+    // 表别名
+    private String tableLabel = "";
+
+    public String getTableLabel() {
+        return tableLabel;
+    }
+
+    public LogListenerConfig setTableLabel(String tableLabel) {
+        this.tableLabel = tableLabel;
+        return this;
+    }
+    
+}

+ 5 - 6
dbsyncer-listener/src/main/java/org/dbsyncer/listener/config/TimingListenerConfig.java

@@ -2,10 +2,9 @@ package org.dbsyncer.listener.config;
 
 
 import org.dbsyncer.listener.enums.ListenerEnum;
 import org.dbsyncer.listener.enums.ListenerEnum;
 
 
-import java.util.List;
-
 /**
 /**
  * 定时配置
  * 定时配置
+ *
  * @author AE86
  * @author AE86
  * @version 1.0.0
  * @version 1.0.0
  * @date 2019/10/7 14:08
  * @date 2019/10/7 14:08
@@ -20,16 +19,16 @@ public class TimingListenerConfig extends ListenerConfig {
     private String cronExpression = "*/30 * * * * ?";
     private String cronExpression = "*/30 * * * * ?";
 
 
     // 事件字段
     // 事件字段
-    private String eventFieldName;
+    private String eventFieldName = "";
 
 
     // 修改事件, 例如当eventFieldName值等于U 或 update时,判定该条数据为修改操作
     // 修改事件, 例如当eventFieldName值等于U 或 update时,判定该条数据为修改操作
-    private String update;
+    private String update = "U";
 
 
     // 插入事件
     // 插入事件
-    private String insert;
+    private String insert = "I";
 
 
     // 删除事件
     // 删除事件
-    private String delete;
+    private String delete = "D";
 
 
     public String getCronExpression() {
     public String getCronExpression() {
         return cronExpression;
         return cronExpression;

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

@@ -2,6 +2,7 @@ package org.dbsyncer.listener.enums;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.dbsyncer.listener.ListenerException;
 import org.dbsyncer.listener.ListenerException;
+import org.dbsyncer.listener.config.LogListenerConfig;
 import org.dbsyncer.listener.config.MysqlListenerConfig;
 import org.dbsyncer.listener.config.MysqlListenerConfig;
 import org.dbsyncer.listener.config.TimingListenerConfig;
 import org.dbsyncer.listener.config.TimingListenerConfig;
 
 
@@ -19,7 +20,11 @@ public enum ListenerEnum {
      */
      */
     MYSQL("Mysql", MysqlListenerConfig.class),
     MYSQL("Mysql", MysqlListenerConfig.class),
     /**
     /**
-     * 轮询
+     * 日志
+     */
+    LOG("Log", LogListenerConfig.class),
+    /**
+     * 定时
      */
      */
     POLLING("Polling", TimingListenerConfig.class);
     POLLING("Polling", TimingListenerConfig.class);
 
 
@@ -51,4 +56,4 @@ public enum ListenerEnum {
         return configClass;
         return configClass;
     }
     }
 
 
-}
+}

+ 2 - 2
dbsyncer-web/src/main/resources/templates/mapping/editMappingIncrementQuartz.html

@@ -15,8 +15,8 @@
                 <label class="col-sm-3 control-label text-right">事件</label>
                 <label class="col-sm-3 control-label text-right">事件</label>
                 <div class="col-sm-9" title="区分增删改">
                 <div class="col-sm-9" title="区分增删改">
                     <select name="incrementStrategyTimingEventFieldName" class="form-control select-control">
                     <select name="incrementStrategyTimingEventFieldName" class="form-control select-control">
-                        <option>EVENT_TYPE</option>
-                        <option>EVENT_FLAG</option>
+                        <!-- 数据源表公共字段 -->
+                        <option th:each="c,s:${mapping?.sourceColumn}" th:value="${c?.name}" th:text="${c?.name} +' (' + ${c?.typeName} +')'" th:selected="${c.name eq mapping?.listener?.eventFieldName}"/>
                     </select>
                     </select>
                 </div>
                 </div>
             </div>
             </div>

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

@@ -12,7 +12,7 @@
                 <div class="col-sm-9">
                 <div class="col-sm-9">
                     <select id="sourceStrategyConvertRule" name="pluginClassName" class="form-control select-control">
                     <select id="sourceStrategyConvertRule" name="pluginClassName" class="form-control select-control">
                         <option value="">无</option>
                         <option value="">无</option>
-                        <option th:value="${p?.className}" th:text="${p?.name}" th:each="p,state : ${plugin}" th:selected="${p.className eq mapping?.plugin?.className}">
+                        <option th:value="${p?.className}" th:text="${p?.name}" th:each="p,state : ${plugin}" th:selected="${tableGroup eq null and p.className eq mapping?.plugin?.className or p.className eq tableGroup?.plugin?.className}">
                     </select>
                     </select>
                 </div>
                 </div>
             </div>
             </div>