Browse Source

add check

AE86 5 years ago
parent
commit
8c0e5758e6

+ 41 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/BaseServiceImpl.java

@@ -0,0 +1,41 @@
+package org.dbsyncer.biz.impl;
+
+import org.dbsyncer.manager.Manager;
+import org.dbsyncer.parser.enums.MetaEnum;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.parser.model.Meta;
+import org.dbsyncer.parser.model.TableGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.Assert;
+
+public class BaseServiceImpl {
+
+    @Autowired
+    protected Manager manager;
+
+    /**
+     * 驱动启停锁
+     */
+    protected final static Object LOCK = new Object();
+
+    protected boolean isRunning(String metaId) {
+        Meta meta = manager.getMeta(metaId);
+        if (null != meta) {
+            int state = meta.getState();
+            return MetaEnum.isRunning(state);
+        }
+        return false;
+    }
+
+    protected void assertRunning(String metaId) {
+        Assert.isTrue(!isRunning(metaId), "驱动正在运行, 请先停止.");
+    }
+
+    protected void assertRunning(TableGroup model) {
+        synchronized (LOCK) {
+            Mapping mapping = manager.getMapping(model.getMappingId());
+            assertRunning(mapping.getMetaId());
+        }
+    }
+
+}

+ 10 - 29
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MappingServiceImpl.java

@@ -7,9 +7,7 @@ import org.dbsyncer.biz.vo.ConnectorVo;
 import org.dbsyncer.biz.vo.MappingVo;
 import org.dbsyncer.biz.vo.MappingVo;
 import org.dbsyncer.biz.vo.MetaVo;
 import org.dbsyncer.biz.vo.MetaVo;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.CollectionUtils;
-import org.dbsyncer.manager.Manager;
 import org.dbsyncer.monitor.Monitor;
 import org.dbsyncer.monitor.Monitor;
-import org.dbsyncer.parser.enums.MetaEnum;
 import org.dbsyncer.parser.enums.ModelEnum;
 import org.dbsyncer.parser.enums.ModelEnum;
 import org.dbsyncer.parser.model.*;
 import org.dbsyncer.parser.model.*;
 import org.dbsyncer.storage.constant.ConfigConstant;
 import org.dbsyncer.storage.constant.ConfigConstant;
@@ -31,22 +29,16 @@ import java.util.stream.Collectors;
  * @date 2019/10/17 23:20
  * @date 2019/10/17 23:20
  */
  */
 @Service
 @Service
-public class MappingServiceImpl implements MappingService {
+public class MappingServiceImpl extends BaseServiceImpl implements MappingService {
 
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
 
-    @Autowired
-    private Manager manager;
-
     @Autowired
     @Autowired
     private Monitor monitor;
     private Monitor monitor;
 
 
     @Autowired
     @Autowired
     private Checker mappingChecker;
     private Checker mappingChecker;
 
 
-    // 驱动启停锁
-    private final static Object LOCK = new Object();
-
     @Override
     @Override
     public String add(Map<String, String> params) {
     public String add(Map<String, String> params) {
         ConfigModel model = mappingChecker.checkAddConfigModel(params);
         ConfigModel model = mappingChecker.checkAddConfigModel(params);
@@ -102,8 +94,16 @@ public class MappingServiceImpl implements MappingService {
     @Override
     @Override
     public String start(String id) {
     public String start(String id) {
         Mapping mapping = assertMappingExist(id);
         Mapping mapping = assertMappingExist(id);
+        final String metaId = mapping.getMetaId();
         synchronized (LOCK) {
         synchronized (LOCK) {
-            assertRunning(mapping.getMetaId());
+            assertRunning(metaId);
+
+            // 清空同步记录
+            Meta meta = manager.getMeta(metaId);
+            meta.getFail().set(0);
+            meta.getSuccess().set(0);
+            manager.editMeta(meta);
+
             manager.start(mapping);
             manager.start(mapping);
         }
         }
         return "驱动启动成功";
         return "驱动启动成功";
@@ -173,23 +173,4 @@ public class MappingServiceImpl implements MappingService {
         return mapping;
         return mapping;
     }
     }
 
 
-    /**
-     * 检查是否运行中,运行中抛出异常提示
-     *
-     * @param metaId
-     * @return
-     */
-    private void assertRunning(String metaId) {
-        Assert.isTrue(!isRunning(metaId), "驱动正在运行中, 请先停止.");
-    }
-
-    private boolean isRunning(String metaId) {
-        Meta meta = manager.getMeta(metaId);
-        if (null != meta) {
-            int state = meta.getState();
-            return MetaEnum.isRunning(state);
-        }
-        return false;
-    }
-
 }
 }

+ 5 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/TableGroupServiceImpl.java

@@ -5,8 +5,6 @@ import org.dbsyncer.biz.checker.Checker;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.connector.config.Field;
 import org.dbsyncer.connector.config.Field;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.Manager;
-import org.dbsyncer.parser.model.ConfigModel;
-import org.dbsyncer.parser.model.FieldMapping;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.TableGroup;
 import org.dbsyncer.parser.model.TableGroup;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -23,7 +21,7 @@ import java.util.*;
  * @date 2019/11/27 23:14
  * @date 2019/11/27 23:14
  */
  */
 @Service
 @Service
-public class TableGroupServiceImpl implements TableGroupService {
+public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroupService {
 
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
 
@@ -36,6 +34,7 @@ public class TableGroupServiceImpl implements TableGroupService {
     @Override
     @Override
     public String add(Map<String, String> params) {
     public String add(Map<String, String> params) {
         TableGroup model = (TableGroup) tableGroupChecker.checkAddConfigModel(params);
         TableGroup model = (TableGroup) tableGroupChecker.checkAddConfigModel(params);
+        assertRunning(model);
         String id = manager.addTableGroup(model);
         String id = manager.addTableGroup(model);
 
 
         // 合并驱动公共字段
         // 合并驱动公共字段
@@ -45,7 +44,8 @@ public class TableGroupServiceImpl implements TableGroupService {
 
 
     @Override
     @Override
     public String edit(Map<String, String> params) {
     public String edit(Map<String, String> params) {
-        ConfigModel model = tableGroupChecker.checkEditConfigModel(params);
+        TableGroup model = (TableGroup) tableGroupChecker.checkEditConfigModel(params);
+        assertRunning(model);
         return manager.editTableGroup(model);
         return manager.editTableGroup(model);
     }
     }
 
 
@@ -53,6 +53,7 @@ public class TableGroupServiceImpl implements TableGroupService {
     public boolean remove(String id) {
     public boolean remove(String id) {
         TableGroup tableGroup = manager.getTableGroup(id);
         TableGroup tableGroup = manager.getTableGroup(id);
         Assert.notNull(tableGroup, "tableGroup can not be null.");
         Assert.notNull(tableGroup, "tableGroup can not be null.");
+        assertRunning(tableGroup);
 
 
         manager.removeTableGroup(id);
         manager.removeTableGroup(id);
         mergeMappingColumn(tableGroup.getMappingId());
         mergeMappingColumn(tableGroup.getMappingId());

+ 7 - 7
dbsyncer-web/src/main/resources/templates/index/index.html

@@ -124,24 +124,24 @@
                                                 <table class="table table-hover">
                                                 <table class="table table-hover">
                                                     <tbody>
                                                     <tbody>
                                                     <tr>
                                                     <tr>
-                                                        <td>同步方式: <span th:text="${m?.meta?.model}"></span></td>
+                                                        <td>同步方式> <span th:text="${m?.meta?.model}"></span></td>
                                                     </tr>
                                                     </tr>
                                                     <tr>
                                                     <tr>
                                                         <td class="text-left">
                                                         <td class="text-left">
-                                                            同步结果:
+                                                            同步结果>
                                                             总数:[[${m?.meta?.total}]]
                                                             总数:[[${m?.meta?.total}]]
                                                             <span th:if="${m?.meta?.model eq '全量' and (m?.meta?.success + m?.meta?.fail) gt 0}">
                                                             <span th:if="${m?.meta?.model eq '全量' and (m?.meta?.success + m?.meta?.fail) gt 0}">
-                                                                        ,进度:[[${#numbers.formatDecimal(((m?.meta?.success + m?.meta?.fail) / m?.meta?.total * 100.00),0 ,2)}]]%
-                                                                        ,耗时:[[${(m?.meta?.endTime - m?.meta?.beginTime) / 1000}]]秒
-                                                                    </span>
+                                                            ,进度:[[${#numbers.formatDecimal(((m?.meta?.success + m?.meta?.fail) / m?.meta?.total * 100.00),0 ,2)}]]%
+                                                            ,耗时:[[${(m?.meta?.endTime - m?.meta?.beginTime) / 1000}]]秒
+                                                            </span>
                                                             <span th:if="${m?.meta?.success gt 0}">,成功:[[${m?.meta?.success}]]</span>
                                                             <span th:if="${m?.meta?.success gt 0}">,成功:[[${m?.meta?.success}]]</span>
                                                             <span th:if="${m?.meta?.fail gt 0}">,失败:[[${m?.meta?.fail}]] <a href="javascript:;" class="label label-danger">日志</a></span>
                                                             <span th:if="${m?.meta?.fail gt 0}">,失败:[[${m?.meta?.fail}]] <a href="javascript:;" class="label label-danger">日志</a></span>
                                                         </td>
                                                         </td>
                                                     </tr>
                                                     </tr>
                                                     <tr>
                                                     <tr>
                                                         <td class="text-left">
                                                         <td class="text-left">
-                                                            启动时间:
-                                                            <span th:if="${m?.meta?.state != 0 and m?.meta?.beginTime gt 0}">[[${#dates.format(m?.meta?.beginTime, 'yyyy-MM-dd HH:mm:ss')}]]</span>
+                                                            启动时间>
+                                                            <span th:if="${m?.meta?.beginTime gt 0}">[[${#dates.format(m?.meta?.beginTime, 'yyyy-MM-dd HH:mm:ss')}]]</span>
                                                         </td>
                                                         </td>
                                                     </tr>
                                                     </tr>
                                                     </tbody>
                                                     </tbody>