Ver código fonte

update driver name

AE86 5 anos atrás
pai
commit
0bb96138c3

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

@@ -2,20 +2,18 @@ package org.dbsyncer.biz.impl;
 
 import org.dbsyncer.biz.MappingService;
 import org.dbsyncer.biz.checker.Checker;
+import org.dbsyncer.biz.vo.ConnectorVo;
 import org.dbsyncer.biz.vo.MappingVo;
 import org.dbsyncer.common.util.CollectionUtils;
-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.ConfigModel;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
-import org.dbsyncer.storage.constant.ConfigConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
@@ -87,11 +85,25 @@ public class MappingServiceImpl implements MappingService {
         return true;
     }
 
+    boolean running = false;
+
+    /**
+     * 定时推送消息
+     */
+    @Scheduled(fixedRate = 5000)
+    public void callback() {
+        running = running ? false : true;
+    }
+
     private MappingVo convertMapping2Vo(Mapping mapping) {
         Assert.notNull(mapping, "Mapping can not be null.");
         Connector s = manager.getConnector(mapping.getSourceConnectorId());
         Connector t = manager.getConnector(mapping.getTargetConnectorId());
-        MappingVo vo = new MappingVo(false, s, t);
+        ConnectorVo sConn = new ConnectorVo(running);
+        BeanUtils.copyProperties(s, sConn);
+        ConnectorVo tConn = new ConnectorVo(running);
+        BeanUtils.copyProperties(t, tConn);
+        MappingVo vo = new MappingVo(running, sConn, tConn);
         BeanUtils.copyProperties(mapping, vo);
         return vo;
     }

+ 26 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/ConnectorVo.java

@@ -0,0 +1,26 @@
+package org.dbsyncer.biz.vo;
+
+import org.dbsyncer.parser.model.Connector;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/04/10 17:20
+ */
+public class ConnectorVo extends Connector {
+
+    // 是否运行
+    private boolean running;
+
+    public ConnectorVo(boolean running) {
+        this.running = running;
+    }
+
+    public boolean isRunning() {
+        return running;
+    }
+
+    public void setRunning(boolean running) {
+        this.running = running;
+    }
+}

+ 7 - 8
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/MappingVo.java

@@ -1,6 +1,5 @@
 package org.dbsyncer.biz.vo;
 
-import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.Mapping;
 
 /**
@@ -14,10 +13,10 @@ public class MappingVo extends Mapping {
     private boolean running;
 
     // 连接器
-    private Connector sourceConnector;
-    private Connector targetConnector;
+    private ConnectorVo sourceConnector;
+    private ConnectorVo targetConnector;
 
-    public MappingVo(boolean running, Connector sourceConnector, Connector targetConnector) {
+    public MappingVo(boolean running, ConnectorVo sourceConnector, ConnectorVo targetConnector) {
         this.running = running;
         this.sourceConnector = sourceConnector;
         this.targetConnector = targetConnector;
@@ -31,19 +30,19 @@ public class MappingVo extends Mapping {
         this.running = running;
     }
 
-    public Connector getSourceConnector() {
+    public ConnectorVo getSourceConnector() {
         return sourceConnector;
     }
 
-    public void setSourceConnector(Connector sourceConnector) {
+    public void setSourceConnector(ConnectorVo sourceConnector) {
         this.sourceConnector = sourceConnector;
     }
 
-    public Connector getTargetConnector() {
+    public ConnectorVo getTargetConnector() {
         return targetConnector;
     }
 
-    public void setTargetConnector(Connector targetConnector) {
+    public void setTargetConnector(ConnectorVo targetConnector) {
         this.targetConnector = targetConnector;
     }
 }

+ 30 - 0
dbsyncer-web/src/main/resources/static/js/mapping/edit.js

@@ -103,6 +103,33 @@ function bindMappingConvertListClick() {
 //    bindMappingDeleteClick($(".convertDelete"));
 }
 
+// 绑定下拉自动匹配字段
+function bindAutoSelect(){
+    var $sourceSelect = $("#sourceTable");
+    var $targetSelect = $("#targetTable");
+
+    // 绑定数据源下拉切换事件
+    $sourceSelect.change(function () {
+        var v = $(this).select2("val");
+        $targetSelect.val(v).trigger("change");
+    });
+}
+
+// 修改驱动名称
+function mappingModifyName(){
+    var $name = $("#mappingModifyName");
+    var tmp = $name.text();
+    $name.text("");
+    $name.append("<input type='text'/>");
+    var $input = $name.find("input");
+    $input.focus().val(tmp);
+    $input.blur(function(){
+        $name.text($(this).val());
+        $("#mappingModifyForm input[name='name']").val($(this).val());
+        $input.unbind();
+    });
+}
+
 $(function () {
     // 绑定同步方式切换事件
     bindMappingModelChange();
@@ -118,6 +145,9 @@ $(function () {
     // 绑定转换配置点击事件
     bindMappingConvertListClick();
 
+    // 绑定下拉自动匹配字段
+    bindAutoSelect();
+
     // 初始化select2插件
     $(".select-control").select2({
         width: "100%",

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

@@ -83,14 +83,15 @@
                                                         </div>
                                                         <div class="col-md-1"></div>
                                                     </div>
-                                                    <span class="well-sign-left"><i class="fa fa-2x fa-circle well-sign-green"></i></span>
+                                                    <span th:if="${m?.sourceConnector?.running}" class="well-sign-left"><i class="fa fa-2x fa-circle well-sign-green"></i></span>
+                                                    <span th:unless="${m?.sourceConnector?.running}" th:title="连接器异常" class="well-sign-left"><i class="fa fa-2x fa-times-circle-o well-sign-red"></i></span>
                                                 </div>
 
                                                 <!--中间图标 -->
                                                 <div class="col-md-2">
                                                     <div class="line">
-                                                        <span class="running-through-rate well-sign-green">✔</span>
-                                                        <span class="running-state">[[${m?.running}]]</span>
+                                                        <span th:if="${m?.running}" class="running-through-rate well-sign-green">✔</span>
+                                                        <span class="running-state">[[${m?.running}?'运行中':'未运行']]</span>
                                                     </div>
                                                 </div>
 
@@ -104,7 +105,8 @@
                                                             <span th:text="${m?.targetConnector?.name}" th:title="${m?.targetConnector?.name}"></span>
                                                         </div>
                                                         <div class="col-md-1"></div>
-                                                        <span class="well-sign-right"><i class="fa fa-2x fa-times-circle-o well-sign-red"></i></span>
+                                                        <span th:if="${m?.targetConnector?.running}" class="well-sign-right"><i class="fa fa-2x fa-circle well-sign-green"></i></span>
+                                                        <span th:unless="${m?.targetConnector?.running}" th:title="连接器异常" class="well-sign-right"><i class="fa fa-2x fa-times-circle-o well-sign-red"></i></span>
                                                     </div>
                                                 </div>
                                             </div>
@@ -116,18 +118,21 @@
                                         <div class="dropdown">
                                             <a data-toggle="dropdown" href="javascript:;"><span class="well-sign-operation"><i class="fa fa-gears fa-2x"></i></span></a>
                                             <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
-                                                <li th:url="'/mapping/start?id='+${m?.id}"><a href="javascript:;"><i class="fa fa-check-circle-o well-sign-green"></i>&nbsp;&nbsp;启动</a></li>
-                                                <li th:url="'/mapping/stop?id='+${m?.id}"><a href="javascript:;"><i class="fa fa-times-circle-o well-sign-red"></i>&nbsp;&nbsp;停止</a></li>
-                                                <li th:url="'/mapping/remove?id='+${m?.id}" confirm="true" confirmMessage="确认删除?"><a href="javascript:;"><i class="fa fa-trash well-sign-red"></i>&nbsp;&nbsp;删除</a></li>
+                                                <!-- 未运行 -->
+                                                <li th:if="${not m?.running}" th:url="'/mapping/start?id='+${m?.id}"><a href="javascript:;"><i class="fa fa-check-circle-o well-sign-green"></i>&nbsp;&nbsp;启动</a></li>
+                                                <!-- 运行中 -->
+                                                <li th:if="${m?.running}" th:url="'/mapping/stop?id='+${m?.id}"><a href="javascript:;"><i class="fa fa-times-circle-o well-sign-red"></i>&nbsp;&nbsp;停止</a></li>
+                                                <!-- 未运行 -->
+                                                <li th:if="${not m?.running}" th:url="'/mapping/remove?id='+${m?.id}" confirm="true" confirmMessage="确认删除?"><a href="javascript:;"><i class="fa fa-trash well-sign-red"></i>&nbsp;&nbsp;删除</a></li>
                                             </ul>
                                         </div>
+                                    </div>
                                     <!-- 驱动__结束 -->
-                                </div>
 
+                                </div>
                             </div>
                         </div>
                     </div>
-                    </div>
                 </div>
                 <!-- 驱动结束位置 -->
             </form>

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

@@ -7,13 +7,16 @@
         <form id="mappingModifyForm" class="form-horizontal" role="form" method="post">
             <!-- 标题 -->
             <div class="row text-center">
-                <h3>[[${mapping?.name}]]&nbsp;<i class="fa fa-edit well-sign-green"></i></h3>
+                <h3>
+                    <span id="mappingModifyName">[[${mapping?.name}]]</span>&nbsp;
+                    <i th:onclick="mappingModifyName()" th:title="点击修改名称" class="fa fa-edit well-sign-green dbsyncer_pointer"></i></h3>
                 <p>[[${mapping?.id}]]</p>
             </div>
 
             <!-- 隐藏表单值 -->
             <div class="form-group hidden">
-                <input name="id" class="form-control" type="text" th:value="${mapping?.id}"/>
+                <input name="id" type="text" th:value="${mapping?.id}"/>
+                <input name="name" type="text" th:value="${mapping?.name}"/>
             </div>
 
             <!-- 驱动信息面板 -->