Bläddra i källkod

up config model

AE86 5 år sedan
förälder
incheckning
877e7f1389

+ 6 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MysqlLogConfigChecker.java

@@ -1,7 +1,7 @@
 package org.dbsyncer.biz.checker.impl.mapping;
 
 import org.dbsyncer.biz.checker.MappingLogConfigChecker;
-import org.dbsyncer.listener.config.LogListenerConfig;
+import org.dbsyncer.listener.config.ListenerConfig;
 import org.dbsyncer.parser.model.Mapping;
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
@@ -20,11 +20,13 @@ public class MysqlLogConfigChecker implements MappingLogConfigChecker {
 
     @Override
     public void modify(Mapping mapping, Map<String, String> params) {
-        LogListenerConfig listenerConfig = new LogListenerConfig();
+        ListenerConfig config = mapping.getListener();
+        Assert.notNull(config, "ListenerConfig can not be null.");
+
         String label = params.get("incrementStrategyLogTableLabel");
         Assert.hasText(label, "MysqlLogConfigChecker check params incrementStrategyLogTableLabel is empty");
-        listenerConfig.setTableLabel(label);
-        mapping.setListener(listenerConfig);
+        config.setTableLabel(label);
+        mapping.setListener(config);
     }
 
 }

+ 5 - 2
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/TimingConfigChecker.java

@@ -2,9 +2,10 @@ package org.dbsyncer.biz.checker.impl.mapping;
 
 import org.apache.commons.lang.StringUtils;
 import org.dbsyncer.biz.checker.MappingConfigChecker;
-import org.dbsyncer.listener.config.TimingListenerConfig;
+import org.dbsyncer.listener.config.ListenerConfig;
 import org.dbsyncer.parser.model.Mapping;
 import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
 
 import java.util.Map;
 
@@ -26,7 +27,9 @@ public class TimingConfigChecker implements MappingConfigChecker {
         String update = params.get("incrementStrategyTimingUpdate");
         String delete = params.get("incrementStrategyTimingDelete");
 
-        TimingListenerConfig config = new TimingListenerConfig();
+        ListenerConfig config = mapping.getListener();
+        Assert.notNull(config, "ListenerConfig can not be null.");
+
         if (StringUtils.isNotBlank(cron)) {
             config.setCronExpression(cron);
         }

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

@@ -6,7 +6,8 @@ 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.listener.config.TimingListenerConfig;
+import org.dbsyncer.listener.config.ListenerConfig;
+import org.dbsyncer.listener.enums.ListenerEnum;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.constant.ModelConstant;
 import org.dbsyncer.parser.model.Connector;
@@ -54,7 +55,7 @@ public class MappingServiceImpl implements MappingService {
         mapping.setTargetConnectorId(targetConnectorId);
 
         mapping.setModel(ModelConstant.FULL);
-        mapping.setListener(new TimingListenerConfig());
+        mapping.setListener(new ListenerConfig(ListenerEnum.POLLING.getCode()));
         String json = JsonUtil.objToJson(mapping);
         return manager.addMapping(json);
     }

+ 74 - 2
dbsyncer-listener/src/main/java/org/dbsyncer/listener/config/ListenerConfig.java

@@ -15,12 +15,84 @@ public class ListenerConfig {
      */
     private String listenerType;
 
+    // 定时表达式, 格式: [秒] [分] [小时] [日] [月] [周]
+    private String cronExpression = "*/30 * * * * ?";
+
+    // 事件字段
+    private String eventFieldName = "";
+
+    // 修改事件, 例如当eventFieldName值等于U 或 update时,判定该条数据为修改操作
+    private String update = "U";
+
+    // 插入事件
+    private String insert = "I";
+
+    // 删除事件
+    private String delete = "D";
+
+    // 表别名
+    private String tableLabel = "T1";
+
+    public ListenerConfig() {
+    }
+
+    public ListenerConfig(String listenerType) {
+        this.listenerType = listenerType;
+    }
+
     public String getListenerType() {
         return listenerType;
     }
 
-    public ListenerConfig setListenerType(String listenerType) {
+    public void setListenerType(String listenerType) {
         this.listenerType = listenerType;
-        return this;
+    }
+
+    public String getCronExpression() {
+        return cronExpression;
+    }
+
+    public void setCronExpression(String cronExpression) {
+        this.cronExpression = cronExpression;
+    }
+
+    public String getEventFieldName() {
+        return eventFieldName;
+    }
+
+    public void setEventFieldName(String eventFieldName) {
+        this.eventFieldName = eventFieldName;
+    }
+
+    public String getUpdate() {
+        return update;
+    }
+
+    public void setUpdate(String update) {
+        this.update = update;
+    }
+
+    public String getInsert() {
+        return insert;
+    }
+
+    public void setInsert(String insert) {
+        this.insert = insert;
+    }
+
+    public String getDelete() {
+        return delete;
+    }
+
+    public void setDelete(String delete) {
+        this.delete = delete;
+    }
+
+    public String getTableLabel() {
+        return tableLabel;
+    }
+
+    public void setTableLabel(String tableLabel) {
+        this.tableLabel = tableLabel;
     }
 }

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

@@ -1,11 +1,5 @@
 package org.dbsyncer.listener.enums;
 
-import org.apache.commons.lang.StringUtils;
-import org.dbsyncer.listener.ListenerException;
-import org.dbsyncer.listener.config.LogListenerConfig;
-import org.dbsyncer.listener.config.MysqlListenerConfig;
-import org.dbsyncer.listener.config.TimingListenerConfig;
-
 /**
  * 支持监听器类型
  *
@@ -15,45 +9,24 @@ import org.dbsyncer.listener.config.TimingListenerConfig;
  */
 public enum ListenerEnum {
 
-    /**
-     * Mysql
-     */
-    MYSQL("Mysql", MysqlListenerConfig.class),
     /**
      * 日志
      */
-    LOG("Log", LogListenerConfig.class),
+    LOG("Log"),
     /**
      * 定时
      */
-    POLLING("Polling", TimingListenerConfig.class);
-
-    // 策略名称
-    private String type;
+    POLLING("Polling");
 
-    // 配置
-    private Class<?> configClass;
-
-    ListenerEnum(String type, Class<?> configClass) {
-        this.type = type;
-        this.configClass = configClass;
-    }
-
-    public static Class<?> getConfigClass(String type) throws ListenerException {
-        for (ListenerEnum e : ListenerEnum.values()) {
-            if (StringUtils.equals(type, e.getType())) {
-                return e.getConfigClass();
-            }
-        }
-        throw new ListenerException(String.format("Listener type \"%s\" does not exist.", type));
-    }
+    // 策略编码
+    private String code;
 
-    public String getType() {
-        return type;
+    ListenerEnum(String code) {
+        this.code = code;
     }
 
-    public Class<?> getConfigClass() {
-        return configClass;
+    public String getCode() {
+        return code;
     }
 
 }

+ 0 - 7
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ParserFactory.java

@@ -124,15 +124,8 @@ public class ParserFactory implements Parser {
         Mapping mapping = null;
         try {
             JSONObject map = new JSONObject(json);
-            JSONObject listener = (JSONObject) map.remove("listener");
             mapping = JsonUtil.jsonToObj(map.toString(), Mapping.class);
             Assert.notNull(mapping, "Mapping can not be null.");
-
-            // 解析监听器
-            String listenerType = listener.getString("listenerType");
-            Class<?> configClass = ListenerEnum.getConfigClass(listenerType);
-            ListenerConfig obj = (ListenerConfig) JsonUtil.jsonToObj(listener.toString(), configClass);
-            mapping.setListener(obj);
         } catch (JSONException e) {
             logger.error(e.getMessage());
             throw new ParserException(e.getMessage());

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

@@ -8,7 +8,7 @@
             <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 name="incrementStrategyLogTableLabel" type="text" dbsyncer-valid="require" class="form-control" value="T1">
+                    <input name="incrementStrategyLogTableLabel" type="text" dbsyncer-valid="require" class="form-control" th:value="${mapping?.listener?.tableLabel}?:'T1'">
                 </div>
             </div>
             <div class="col-md-8"></div>