瀏覽代碼

update config

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

+ 0 - 7
dbsyncer-biz/src/main/java/org/dbsyncer/biz/MappingService.java

@@ -63,11 +63,4 @@ public interface MappingService {
      */
     boolean stop(String id);
 
-    /**
-     * 获取驱动数据源和目标源表公共字段
-     *
-     * @return
-     */
-    TableGroup getTableGroup();
-
 }

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

@@ -5,7 +5,7 @@ import org.dbsyncer.biz.PluginService;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.connector.config.Filter;
-import org.dbsyncer.parser.convert.FieldConvert;
+import org.dbsyncer.parser.convert.Convert;
 import org.dbsyncer.parser.model.AbstractConfigModel;
 import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.plugin.config.Plugin;
@@ -55,10 +55,10 @@ public abstract class AbstractChecker implements Checker {
         }
 
         // 转换配置
-        String fieldConvertJson = params.get("fieldConvert");
-        if (StringUtils.isNotBlank(fieldConvertJson)) {
-            List<FieldConvert> fieldConvert = JsonUtil.jsonToObj(fieldConvertJson, List.class);
-            model.setFieldConvert(fieldConvert);
+        String convertJson = params.get("convert");
+        if (StringUtils.isNotBlank(convertJson)) {
+            List<Convert> convert = JsonUtil.jsonToObj(convertJson, List.class);
+            model.setConvert(convert);
         }
 
         // 插件配置

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

@@ -6,13 +6,11 @@ import org.dbsyncer.biz.vo.MappingVo;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.connector.config.Field;
-import org.dbsyncer.connector.config.Table;
 import org.dbsyncer.listener.config.TimingListenerConfig;
 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.parser.model.TableGroup;
 import org.dbsyncer.storage.constant.ConfigConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -77,6 +75,14 @@ public class MappingServiceImpl implements MappingService {
     @Override
     public MappingVo getMapping(String id) {
         Mapping mapping = manager.getMapping(id);
+
+        // TODO 模拟测试数据源和目标源表公共字段
+        List<Field> fields = new ArrayList<>();
+        fields.add(new Field("ID","VARCHAR",12));
+        fields.add(new Field("NAME","VARCHAR",12));
+        mapping.setSourceColumn(fields);
+        mapping.setTargetColumn(fields);
+
         return convertMapping2Vo(mapping);
     }
 
@@ -103,21 +109,6 @@ public class MappingServiceImpl implements MappingService {
         return true;
     }
 
-    @Override
-    public TableGroup getTableGroup() {
-        // TODO 模拟测试
-        TableGroup tableGroup = new TableGroup();
-        Table table = new Table();
-        List<Field> fields = new ArrayList<>();
-        fields.add(new Field("ID","VARCHAR",12));
-        fields.add(new Field("NAME","VARCHAR",12));
-        table.setColumn(fields);
-        tableGroup.setSourceTable(table);
-        tableGroup.setTargetTable(table);
-
-        return tableGroup;
-    }
-
     private MappingVo convertMapping2Vo(Mapping mapping) {
         Assert.notNull(mapping, "Mapping can not be null.");
         Connector s = manager.getConnector(mapping.getSourceConnectorId());

+ 28 - 12
dbsyncer-parser/src/main/java/org/dbsyncer/parser/convert/Convert.java

@@ -5,6 +5,8 @@ import org.dbsyncer.parser.enums.ConvertEnum;
 import java.util.List;
 
 /**
+ * 字段转换
+ *
  * @author AE86
  * @version 1.0.0
  * @date 2019/10/1 14:04
@@ -12,29 +14,43 @@ import java.util.List;
 public class Convert {
 
     /**
-     * 方式
-     * @see ConvertEnum
+     * 字段名称
      */
     private String name;
 
-    // 参数
-    private List<String> args;
+    /**
+     * 转换名称
+     * @see ConvertEnum
+     */
+    private String convertName;
+
+    /**
+     * 转换方式
+     *
+     * @see ConvertEnum
+     */
+    private String convertCode;
+
+    /**
+     * 转换参数
+     *
+     * @see ConvertEnum
+     */
+    private String args;
 
     public String getName() {
         return name;
     }
 
-    public Convert setName(String name) {
-        this.name = name;
-        return this;
+    public String getConvertName() {
+        return convertName;
     }
 
-    public List<String> getArgs() {
-        return args;
+    public String getConvertCode() {
+        return convertCode;
     }
 
-    public Convert setArgs(List<String> args) {
-        this.args = args;
-        return this;
+    public String getArgs() {
+        return args;
     }
 }

+ 0 - 36
dbsyncer-parser/src/main/java/org/dbsyncer/parser/convert/FieldConvert.java

@@ -1,36 +0,0 @@
-package org.dbsyncer.parser.convert;
-
-import java.util.List;
-
-/**
- * 字段转换
- * @author AE86
- * @version 1.0.0
- * @date 2019/10/7 14:20
- */
-public class FieldConvert {
-
-    // 字段名称
-    private String name;
-
-    // 转换方式
-    private List<Convert> convert;
-
-    public String getName() {
-        return name;
-    }
-
-    public FieldConvert setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public List<Convert> getConvert() {
-        return convert;
-    }
-
-    public FieldConvert setConvert(List<Convert> convert) {
-        this.convert = convert;
-        return this;
-    }
-}

+ 6 - 6
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/AbstractConfigModel.java

@@ -1,7 +1,7 @@
 package org.dbsyncer.parser.model;
 
 import org.dbsyncer.connector.config.Filter;
-import org.dbsyncer.parser.convert.FieldConvert;
+import org.dbsyncer.parser.convert.Convert;
 import org.dbsyncer.plugin.config.Plugin;
 
 import java.util.List;
@@ -12,7 +12,7 @@ public abstract class AbstractConfigModel extends ConfigModel {
     private List<Filter> filter;
 
     // 转换配置
-    private List<FieldConvert> fieldConvert;
+    private List<Convert> convert;
 
     // 插件配置
     private Plugin plugin;
@@ -25,12 +25,12 @@ public abstract class AbstractConfigModel extends ConfigModel {
         this.filter = filter;
     }
 
-    public List<FieldConvert> getFieldConvert() {
-        return fieldConvert;
+    public List<Convert> getConvert() {
+        return convert;
     }
 
-    public void setFieldConvert(List<FieldConvert> fieldConvert) {
-        this.fieldConvert = fieldConvert;
+    public void setConvert(List<Convert> convert) {
+        this.convert = convert;
     }
 
     public Plugin getPlugin() {

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

@@ -1,8 +1,11 @@
 package org.dbsyncer.parser.model;
 
+import org.dbsyncer.connector.config.Field;
 import org.dbsyncer.listener.config.ListenerConfig;
 import org.dbsyncer.parser.constant.ModelConstant;
 
+import java.util.List;
+
 /**
  * 驱动映射关系
  *
@@ -18,6 +21,12 @@ public class Mapping extends AbstractConfigModel {
     // 目标源连接器ID
     private String targetConnectorId;
 
+    // 数据源字段
+    private List<Field> sourceColumn;
+
+    // 目标源字段
+    private List<Field> targetColumn;
+
     /**
      * 同步方式
      *
@@ -52,6 +61,22 @@ public class Mapping extends AbstractConfigModel {
         return this;
     }
 
+    public List<Field> getSourceColumn() {
+        return sourceColumn;
+    }
+
+    public void setSourceColumn(List<Field> sourceColumn) {
+        this.sourceColumn = sourceColumn;
+    }
+
+    public List<Field> getTargetColumn() {
+        return targetColumn;
+    }
+
+    public void setTargetColumn(List<Field> targetColumn) {
+        this.targetColumn = targetColumn;
+    }
+
     public String getModel() {
         return model;
     }

+ 21 - 11
dbsyncer-parser/src/main/resources/Mapping.json

@@ -6,31 +6,41 @@
   "updateTime": "2019-10-08 21:35:00",
   "sourceConnectorId": "100",
   "targetConnectorId": "666",
+  "sourceColumn":[
+    {
+      "name": "ID",
+      "typeName": "VARCHAR",
+      "type": 12,
+      "pk":true
+    }
+  ],
+  "targetColumn":[
+    {
+      "name": "ID",
+      "typeName": "VARCHAR",
+      "type": 12,
+      "pk":true
+    }
+  ],
   "filter": [
     {
       "name": "AGE",
-      "operator": "and",
+      "operation": "and",
       "filter": ">",
       "value": "0"
     },
     {
       "name": "NAME",
-      "operator": "or",
+      "operation": "or",
       "filter": "=",
       "value": "hello"
     }
   ],
-  "fieldConvert": [
+  "convert": [
     {
       "name": "NAME",
-      "convert": [
-        {
-          "name": "append",
-          "args": [
-            "hello"
-          ]
-        }
-      ]
+      "convert": "REPLACE",
+      "args": "A,B"
     }
   ],
   "plugin": {

+ 6 - 11
dbsyncer-parser/src/main/resources/TableGroup.json

@@ -55,31 +55,26 @@
   "filter": [
     {
       "name": "AGE",
-      "operator": "and",
+      "operation": "and",
       "filter": ">",
       "value": "0"
     },
     {
       "name": "NAME",
-      "operator": "or",
+      "operation": "or",
       "filter": "=",
       "value": "hello"
     }
   ],
-  "fieldConvert": [
+  "convert": [
     {
       "name": "NAME",
-      "convert": [
-        {
-          "name": "append",
-          "args": [
-            "hello"
-          ]
-        }
-      ]
+      "convert": "REPLACE",
+      "args": "A,B"
     }
   ],
   "plugin": {
+    "name":"用户信息转换插件",
     "className": "com.xx.hr.convert.MyImpl"
   }
 }

+ 0 - 1
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/index/MappingController.java

@@ -45,7 +45,6 @@ public class MappingController extends BaseController {
     @GetMapping("/page/{page}")
     public String page(ModelMap model, @PathVariable("page") String page, @RequestParam(value = "id") String id) {
         model.put("mapping", mappingService.getMapping(id));
-        model.put("tableGroup", mappingService.getTableGroup());
         model.put("tableGroups", tableGroupService.getTableGroupAll(id));
         initConfig(model);
         return "mapping/" + page;

+ 13 - 10
dbsyncer-web/src/main/resources/static/js/mapping/editMappingFilterAndConvert.js

@@ -16,8 +16,8 @@ function initFilter(){
 }
 
 // 初始化转换配置点击事件
-function initFieldConvert(){
-    bindConfigListClick($(".convertDelete"), function(){ initFieldConvertParams(); });
+function initConvert(){
+    bindConfigListClick($(".convertDelete"), function(){ initConvertParams(); });
 }
 
 // 初始化映射关系参数
@@ -26,13 +26,13 @@ function initFilterParams(){
     var row = [];
     var $conditionList = $("#conditionList");
     $conditionList.find("tr").each(function(k,v){
-        var opr = $(this).find("td:eq(0)").text();
+        var opt = $(this).find("td:eq(0)").text();
         var sf = $(this).find("td:eq(1)").text();
         var filter = $(this).find("td:eq(2)").text();
         var arg = $(this).find("td:eq(3)").text();
         row.push({
            "name": sf,
-           "operator": opr,
+           "operation": opt,
            "filter": filter,
            "value": arg
          });
@@ -41,21 +41,24 @@ function initFilterParams(){
 }
 
 // 初始化映射关系参数
-function initFieldConvertParams(){
+function initConvertParams(){
     // 生成JSON参数
     var row = [];
     var $convertList = $("#convertList");
     $convertList.find("tr").each(function(k,v){
-        var convert = $(this).find("td:eq(0)").attr("value");
+        var convert = $(this).find("td:eq(0)");
+        var convertCode = convert.attr("value");
+        var convertName = convert.text().replace(/\n/g,'').trim();
         var tf = $(this).find("td:eq(1)").text();
         var args = $(this).find("td:eq(2)").text();
         row.push({
            "name": tf,
-           "convert": convert,
+           "convertName": convertName,
+           "convertCode": convertCode,
            "args": args
          });
     });
-    $("#fieldConvert").val(JSON.stringify(row));
+    $("#convert").val(JSON.stringify(row));
 }
 
 // 绑定新增条件点击事件
@@ -146,7 +149,7 @@ function bindConvertAddClick() {
         $convertList.append(trHtml);
         // 清空参数
         $(".convertArg").val("");
-        initFieldConvert();
+        initConvert();
     });
 }
 
@@ -155,6 +158,6 @@ $(function() {
     initFilter();
     bindConditionAddClick();
     // 转换配置
-    initFieldConvert();
+    initConvert();
     bindConvertAddClick();
 });

+ 25 - 13
dbsyncer-web/src/main/resources/templates/mapping/editMappingConvert.html

@@ -19,6 +19,10 @@
                 <label class="col-sm-3 control-label text-right">目标源表字段</label>
                 <div class="col-sm-9">
                     <select id="convertTargetField" class="form-control select-control">
+                        <!-- 目标源表公共字段 -->
+                        <option th:if="${tableGroup} == null" th:each="c,s:${mapping?.targetColumn}" th:value="${c?.name}" th:text="${c?.name} +' (' + ${c?.typeName} +')'" />
+
+                        <!-- 目标源表字段 -->
                         <option th:each="c,s:${tableGroup?.targetTable?.column}" th:value="${c?.name}" th:text="${c?.name} +' (' + ${c?.typeName} +')'" />
                     </select>
                 </div>
@@ -52,20 +56,28 @@
             <div class="col-md-11">
                 <table class="table table-hover">
                     <thead>
-                    <tr>
-                        <th>转换</th>
-                        <th>目标源表字段</th>
-                        <th>参数</th>
-                        <th>操作</th>
-                    </tr>
+                        <tr>
+                            <th>转换</th>
+                            <th>目标源表字段</th>
+                            <th>参数</th>
+                            <th>操作</th>
+                        </tr>
                     </thead>
                     <tbody id="convertList">
-                    <tr th:each="f,s:${tableGroup?.filter}">
-                        <td th:value="${f?.convertValue}">[[${f?.convert}]]</td>
-                        <td>[[${f?.name}]]</td>
-                        <td>[[${f?.args}]]</td>
-                        <td><a class='fa fa-remove fa-2x convertDelete dbsyncer_pointer' title='删除' ></a></td>
-                    </tr>
+                        <!-- Mapping convert -->
+                        <tr th:if="${tableGroup} == null" th:each="f,s:${mapping?.convert}">
+                            <td th:value="${f?.convertCode}">[[${f?.convertName}]]</td>
+                            <td>[[${f?.name}]]</td>
+                            <td>[[${f?.args}]]</td>
+                            <td><a class='fa fa-remove fa-2x convertDelete dbsyncer_pointer' title='删除' ></a></td>
+                        </tr>
+                        <!-- TableGroup convert -->
+                        <tr th:each="f,s:${tableGroup?.convert}">
+                            <td th:value="${f?.convertCode}">[[${f?.convertName}]]</td>
+                            <td>[[${f?.name}]]</td>
+                            <td>[[${f?.args}]]</td>
+                            <td><a class='fa fa-remove fa-2x convertDelete dbsyncer_pointer' title='删除' ></a></td>
+                        </tr>
                     </tbody>
                 </table>
             </div>
@@ -74,7 +86,7 @@
 
     <!-- 隐藏表单值 -->
     <div class="form-group hidden">
-        <input id="fieldConvert" name="fieldConvert" class="form-control" type="text"/>
+        <input id="convert" name="convert" class="form-control" type="text"/>
     </div>
 
 </div>

+ 21 - 8
dbsyncer-web/src/main/resources/templates/mapping/editMappingFilter.html

@@ -19,6 +19,10 @@
                 <label class="col-sm-3 control-label text-right">数据源表字段</label>
                 <div class="col-sm-9">
                     <select id="conditionSourceField" class="form-control select-control">
+                        <!-- 数据源表公共字段 -->
+                        <option th:if="${tableGroup} == null" th:each="c,s:${mapping?.sourceColumn}" th:value="${c?.name}" th:text="${c?.name} +' (' + ${c?.typeName} +')'" />
+
+                        <!-- 数据源表字段 -->
                         <option th:each="c,s:${tableGroup?.sourceTable?.column}" th:value="${c?.name}" th:text="${c?.name} +' (' + ${c?.typeName} +')'" />
                     </select>
                 </div>
@@ -57,17 +61,26 @@
             <div class="col-md-11">
                 <table class="table table-hover">
                     <thead>
-                    <tr>
-                        <th>组合</th>
-                        <th>数据源表字段</th>
-                        <th>条件</th>
-                        <th>参数</th>
-                        <th>操作</th>
-                    </tr>
+                        <tr>
+                            <th>组合</th>
+                            <th>数据源表字段</th>
+                            <th>条件</th>
+                            <th>参数</th>
+                            <th>操作</th>
+                        </tr>
                     </thead>
                     <tbody id="conditionList">
+                        <!-- Mapping convert -->
+                        <tr th:if="${tableGroup} == null" th:each="f,s:${mapping?.filter}">
+                            <td>[[${f?.operation}]]</td>
+                            <td>[[${f?.name}]]</td>
+                            <td>[[${f?.filter}]]</td>
+                            <td>[[${f?.value}]]</td>
+                            <td><a class='fa fa-remove fa-2x conditionDelete dbsyncer_pointer' title='删除' ></a></td>
+                        </tr>
+                        <!-- TableGroup convert -->
                         <tr th:each="f,s:${tableGroup?.filter}">
-                            <td>[[${f?.operator}]]</td>
+                            <td>[[${f?.operation}]]</td>
                             <td>[[${f?.name}]]</td>
                             <td>[[${f?.filter}]]</td>
                             <td>[[${f?.value}]]</td>