AE86 3 лет назад
Родитель
Сommit
ecc07c991d

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

@@ -1,6 +1,7 @@
 package org.dbsyncer.biz.checker.impl.mapping;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.NumberUtils;
 import org.dbsyncer.biz.checker.MappingConfigChecker;
 import org.dbsyncer.listener.config.ListenerConfig;
 import org.dbsyncer.listener.enums.ListenerTypeEnum;
@@ -22,7 +23,7 @@ public class TimingConfigChecker implements MappingConfigChecker {
 
     @Override
     public void modify(Mapping mapping, Map<String, String> params) {
-        String cron = params.get("incrementStrategyTimingCronExpression");
+        String period = params.get("incrementStrategyTimingPeriodExpression");
         String eventFieldName = params.get("incrementStrategyTimingEventFieldName");
         String insert = params.get("incrementStrategyTimingInsert");
         String update = params.get("incrementStrategyTimingUpdate");
@@ -31,8 +32,8 @@ public class TimingConfigChecker implements MappingConfigChecker {
         ListenerConfig config = mapping.getListener();
         Assert.notNull(config, "ListenerConfig can not be null.");
 
-        if (StringUtils.isNotBlank(cron)) {
-            config.setCronExpression(cron);
+        if (StringUtils.isNotBlank(period)) {
+            config.setPeriod(NumberUtils.toLong(period, 30));
         }
         if (StringUtils.isNotBlank(eventFieldName)) {
             config.setEventFieldName(eventFieldName);

+ 4 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/event/RowChangedEvent.java

@@ -43,6 +43,10 @@ public class RowChangedEvent {
         return tableGroupIndex;
     }
 
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
     public String getTableName() {
         return tableName;
     }

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

@@ -20,8 +20,8 @@ public class ListenerConfig {
      */
     private int readNum = 200;
 
-    // 定时表达式, 格式: [秒] [分] [小时] [日] [月] [周]
-    private String cronExpression = "*/30 * * * * ?";
+    // 定时(秒)
+    private long period = 30;
 
     // 事件字段
     private String eventFieldName = "";
@@ -61,12 +61,12 @@ public class ListenerConfig {
         this.readNum = readNum;
     }
 
-    public String getCronExpression() {
-        return cronExpression;
+    public long getPeriod() {
+        return period;
     }
 
-    public void setCronExpression(String cronExpression) {
-        this.cronExpression = cronExpression;
+    public void setPeriod(long period) {
+        this.period = period;
     }
 
     public String getEventFieldName() {

+ 4 - 5
dbsyncer-listener/src/main/java/org/dbsyncer/listener/quartz/QuartzExtractor.java

@@ -40,21 +40,20 @@ public class QuartzExtractor extends AbstractExtractor implements ScheduledTaskJ
     private Set<String> insert;
     private Set<String> delete;
     private String taskKey;
-    private String cron;
+    private long period;
     private AtomicBoolean running;
 
     @Override
     public void start() {
         init();
         run();
-        scheduledTaskService.start(taskKey, cron, this);
-        logger.info("启动定时任务:{} >> {}", taskKey, cron);
+        scheduledTaskService.start(taskKey, period * 1000, this);
+        logger.info("启动定时任务:{} >> {}秒", taskKey, period);
     }
 
     @Override
     public void run() {
         try {
-            logger.debug("执行定时任务:{} >> {}", taskKey, cron);
             if (running.compareAndSet(false, true)) {
                 // 依次执行同步映射关系
                 for (int i = 0; i < commandSize; i++) {
@@ -175,7 +174,7 @@ public class QuartzExtractor extends AbstractExtractor implements ScheduledTaskJ
         delete = Stream.of(listenerConfig.getDelete().split(",")).collect(Collectors.toSet());
 
         taskKey = UUIDUtil.getUUID();
-        cron = listenerConfig.getCronExpression();
+        period = listenerConfig.getPeriod();
         running = new AtomicBoolean();
     }
 

+ 1 - 4
dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/impl/IncrementPuller.java

@@ -254,10 +254,7 @@ public class IncrementPuller extends AbstractPuller implements ScheduledTaskJob,
         @Override
         public void changedEvent(RowChangedEvent rowChangedEvent) {
             final FieldPicker picker = tablePicker.get(rowChangedEvent.getTableGroupIndex());
-            logger.info("监听数据=> tableName:{}, event:{}, before:{}, after:{}", picker.getTableGroup().getSourceTable().getName(),
-                    rowChangedEvent.getEvent(),
-                    rowChangedEvent.getBefore(),
-                    rowChangedEvent.getAfter());
+            rowChangedEvent.setTableName(picker.getTableGroup().getSourceTable().getName());
 
             // 处理过程有异常向上抛
             parser.execute(mapping, picker.getTableGroup(), rowChangedEvent);

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

@@ -54,7 +54,7 @@
   "model":"full",
   "listener": {
     "listenerType": "Polling",
-    "cronExpression": "*/30 * * * * ?",
+    "period": 30,
     "eventFieldName": "MyEvent",
     "update": [
       "U",

+ 1 - 0
dbsyncer-plugin/src/main/java/org/dbsyncer/plugin/PluginFactory.java

@@ -117,6 +117,7 @@ public class PluginFactory {
                 String className = s.getClass().getName();
                 service.put(className, s);
                 plugins.add(new Plugin(s.getName(), className, s.getVersion(), fileName));
+                logger.info("{}, {}_{} {}", fileName, s.getName(), s.getVersion(), className);
             }
         } catch (MalformedURLException e) {
             logger.error(e.getMessage());

+ 1 - 1
dbsyncer-plugin/src/main/java/org/dbsyncer/plugin/service/DemoConvertServiceImpl.java

@@ -26,7 +26,7 @@ public class DemoConvertServiceImpl implements ConvertService {
 
     @Override
     public void convert(String event, Map source, Map target) {
-        logger.info(String.format("插件正在处理同步数据,事件:%s,数据:%s", event, source));
+        logger.info("插件正在处理同步数据,事件:{},数据:{}", event, source);
     }
 
     @Override

+ 1 - 1
dbsyncer-web/src/main/resources/public/mapping/edit.html

@@ -15,7 +15,7 @@
 
             <!-- 隐藏表单值 -->
             <div class="form-group hidden">
-                <input name="id" type="text" th:value="${mapping?.id}"/>
+                <input id="mappingId" name="id" type="text" th:value="${mapping?.id}"/>
                 <input name="name" type="text" th:value="${mapping?.name}"/>
             </div>
 

+ 2 - 2
dbsyncer-web/src/main/resources/public/mapping/editIncrementQuartz.html

@@ -6,9 +6,9 @@
     <div class="form-group">
         <div class="row">
             <div class="col-md-4">
-                <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">
-                    <input name="incrementStrategyTimingCronExpression" type="text" class="form-control" dbsyncer-valid="require" th:value="${mapping?.listener?.cronExpression}?:'*/30 * * * * ?'"/>
+                    <input name="incrementStrategyTimingPeriodExpression" type="number" min="1" class="form-control" dbsyncer-valid="require" th:value="${mapping?.listener?.period}?:30"/>
                 </div>
             </div>
             <div class="col-md-4">

+ 22 - 17
dbsyncer-web/src/main/resources/static/js/mapping/edit.js

@@ -25,12 +25,31 @@ function bindMappingModelChange() {
         cursor: true,
         radioClass: 'iradio_flat-blue',
     }).on('ifChecked', function (event) {
-        showMappingEditConfig($(this).val());
+        var $form = $("#mappingModifyForm");
+        if ($form.formValidate() == true) {
+            var data = $form.serializeJson();
+            doPoster("/mapping/edit", data, function (response) {
+                if (response.success == true) {
+                    refresh($("#mappingId").val());
+                } else {
+                    bootGrowl(data.resultValue, "danger");
+                }
+            });
+        }
     });
 
     // 渲染选择radio配置
-    var value = $mappingModelChange.find('input[type="radio"]:checked').val();
-    showMappingEditConfig(value);
+    var $value = $mappingModelChange.find('input[type="radio"]:checked').val();
+    // 显示驱动编辑配置(全量/增量)
+    var $full = $("#mappingFullConfig");
+    var $increment = $("#mappingIncrementConfig");
+    if ('full' == $value) {
+        $increment.addClass("hidden");
+        $full.removeClass("hidden");
+    } else {
+        $full.addClass("hidden");
+        $increment.removeClass("hidden");
+    }
 }
 
 // 绑定删除表关系复选框事件
@@ -70,20 +89,6 @@ function getCheckedBoxSize($checkbox){
     return checked;
 }
 
-// 显示驱动编辑配置(全量/增量)
-function showMappingEditConfig($value) {
-    var $full = $("#mappingFullConfig");
-    var $increment = $("#mappingIncrementConfig");
-
-    if ('full' == $value) {
-        $increment.addClass("hidden");
-        $full.removeClass("hidden");
-    } else {
-        $full.addClass("hidden");
-        $increment.removeClass("hidden");
-    }
-}
-
 // 绑定表关系点击事件
 function bindMappingTableGroupListClick() {
     var $tableGroupList = $("#tableGroupList");