Răsfoiți Sursa

Merge branch 'V_1.0.0' of https://gitee.com/ghi/dbsyncer into V_1.0.0

AE86 5 ani în urmă
părinte
comite
7fd0bddf4a

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

@@ -1,9 +1,16 @@
 package org.dbsyncer.biz.checker;
 
+import org.apache.commons.lang.StringUtils;
 import org.dbsyncer.biz.BizException;
+import org.dbsyncer.common.util.JsonUtil;
+import org.dbsyncer.connector.config.Filter;
+import org.dbsyncer.parser.convert.FieldConvert;
+import org.dbsyncer.parser.model.AbstractConfigModel;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.plugin.config.Plugin;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -23,4 +30,33 @@ public abstract class AbstractChecker implements Checker {
         throw new BizException("Un supported.");
     }
 
+    /**
+     * 修改:过滤条件/转换配置/插件配置
+     * @param model
+     * @param params
+     */
+    protected void modifyConfigModel(AbstractConfigModel model, Map<String, String> params){
+        // 过滤条件
+        String filterJson = params.get("filter");
+        if(StringUtils.isNotBlank(filterJson)){
+            List<Filter> filter = JsonUtil.jsonToObj(filterJson, List.class);
+            model.setFilter(filter);
+        }
+
+        // 转换配置
+        String fieldConvertJson = params.get("fieldConvert");
+        if(StringUtils.isNotBlank(fieldConvertJson)){
+            List<FieldConvert> fieldConvert = JsonUtil.jsonToObj(fieldConvertJson, List.class);
+            model.setFieldConvert(fieldConvert);
+        }
+
+        // 插件配置
+        String pluginJson = params.get("plugin");
+        if(StringUtils.isNotBlank(pluginJson)){
+            Plugin plugin = JsonUtil.jsonToObj(pluginJson, Plugin.class);
+            model.setPlugin(plugin);
+        }
+
+    }
+
 }

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

@@ -4,7 +4,9 @@
 package org.dbsyncer.biz.checker.impl;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.NumberUtils;
 import org.dbsyncer.biz.checker.AbstractChecker;
+import org.dbsyncer.parser.constant.ModelConstant;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.storage.constant.ConfigConstant;
 
@@ -19,11 +21,31 @@ public class MappingChecker extends AbstractChecker {
 
     @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 增量配置
+
+        // 修改:过滤条件/转换配置/插件配置
+        modifyConfigModel(mapping, params);
+
+        // 增量配置
         mapping.setUpdateTime(System.currentTimeMillis());
     }
 

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

@@ -7,6 +7,7 @@ import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.listener.config.PollingListenerConfig;
 import org.dbsyncer.manager.Manager;
+import org.dbsyncer.parser.constant.ModelConstant;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.storage.constant.ConfigConstant;
@@ -52,6 +53,7 @@ public class MappingServiceImpl implements MappingService {
         mapping.setTargetConnectorId(targetConnectorId);
 
         // TODO 缺少默认值
+        mapping.setModel(ModelConstant.FULL);
         mapping.setListener(new PollingListenerConfig());
         String json = JsonUtil.objToJson(mapping);
         return manager.addMapping(json);

+ 20 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/constant/ModelConstant.java

@@ -0,0 +1,20 @@
+package org.dbsyncer.parser.constant;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/03/30 16:55
+ */
+public class ModelConstant {
+
+    /**
+     * 增量同步
+     */
+    public static final String INCREMENT = "increment";
+
+    /**
+     * 全量同步
+     */
+    public static final String FULL = "full";
+
+}

+ 17 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Mapping.java

@@ -1,6 +1,7 @@
 package org.dbsyncer.parser.model;
 
 import org.dbsyncer.listener.config.ListenerConfig;
+import org.dbsyncer.parser.constant.ModelConstant;
 
 /**
  * 驱动映射关系
@@ -17,6 +18,13 @@ public class Mapping extends AbstractConfigModel {
     // 目标源连接器ID
     private String targetConnectorId;
 
+    /**
+     * 同步方式
+     *
+     * @see ModelConstant
+     */
+    private String model;
+
     // 监听配置
     private ListenerConfig listener;
 
@@ -44,6 +52,15 @@ public class Mapping extends AbstractConfigModel {
         return this;
     }
 
+    public String getModel() {
+        return model;
+    }
+
+    public Mapping setModel(String model) {
+        this.model = model;
+        return this;
+    }
+
     public ListenerConfig getListener() {
         return listener;
     }

+ 1 - 0
dbsyncer-parser/src/main/resources/Mapping.json

@@ -34,6 +34,7 @@
     }
   ],
   "plugin": {
+    "name":"用户信息转换插件",
     "className": "com.xx.hr.convert.MyImpl"
   },
   "listener": {

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

@@ -10,13 +10,13 @@
             <div class="col-md-4">
                 <label class="col-sm-3 control-label text-right">线程<strong class="driverVerifcateRequired">*</strong></label>
                 <div class="col-sm-9">
-                    <input type="number" id="threadNum" class="form-control" min="1" dbsyncer-valid="require" th:value="${mapping?.threadNum}">
+                    <input type="number" name="threadNum" class="form-control" min="1" dbsyncer-valid="require" th:value="${mapping?.threadNum}">
                 </div>
             </div>
             <div class="col-md-4">
                 <label class="col-sm-3 control-label text-right">批量<strong class="driverVerifcateRequired">*</strong></label>
                 <div class="col-sm-9">
-                    <input type="number" id="batchNum" class="form-control" min="1" dbsyncer-valid="require" th:value="${mapping?.batchNum}">
+                    <input type="number" name="batchNum" class="form-control" min="1" dbsyncer-valid="require" th:value="${mapping?.batchNum}">
                 </div>
             </div>
         </div>