Bladeren bron

!89 merge
Merge pull request !89 from AE86/V_1.0.0_RC

AE86 2 jaren geleden
bovenliggende
commit
d142c87bb3

+ 8 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/ConnectorService.java

@@ -19,6 +19,14 @@ public interface ConnectorService {
      */
     String add(Map<String, String> params);
 
+    /**
+     * 复制连接器
+     *
+     * @param id
+     * @return
+     */
+    String copy(String id);
+
     /**
      * 修改连接器
      *

+ 17 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ConnectorServiceImpl.java

@@ -4,16 +4,19 @@ import org.dbsyncer.biz.BizException;
 import org.dbsyncer.biz.ConnectorService;
 import org.dbsyncer.biz.checker.Checker;
 import org.dbsyncer.common.util.CollectionUtils;
+import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.logger.LogType;
 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.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -44,6 +47,20 @@ public class ConnectorServiceImpl extends BaseServiceImpl implements ConnectorSe
         return manager.addConnector(model);
     }
 
+    @Override
+    public String copy(String id) {
+        Connector connector = getConnector(id);
+        Assert.notNull(connector, "The connector id is invalid.");
+
+        Map params = JsonUtil.parseObject(JsonUtil.objToJson(connector.getConfig())).getInnerMap();
+        params.put(ConfigConstant.CONFIG_MODEL_NAME, connector.getName() + "(复制)");
+        ConfigModel model = connectorChecker.checkAddConfigModel(params);
+        log(LogType.ConnectorLog.COPY, model);
+        manager.addConnector(model);
+
+        return String.format("复制成功[%s]", model.getName());
+    }
+
     @Override
     public String edit(Map<String, String> params) {
         ConfigModel model = connectorChecker.checkEditConfigModel(params);

+ 2 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/logger/LogType.java

@@ -79,7 +79,8 @@ public interface LogType {
         UPDATE("21", "修改"),
         DELETE("22", "删除"),
         FAILED("23", "连接失败"),
-        RECONNECT_SUCCESS("24", "重连成功");
+        RECONNECT_SUCCESS("24", "重连成功"),
+        COPY("25", "复制");
 
         private String type;
         private String message;

+ 12 - 1
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/index/ConnectorController.java

@@ -39,6 +39,17 @@ public class ConnectorController extends BaseController {
         return "connector/edit";
     }
 
+    @PostMapping("/copy")
+    @ResponseBody
+    public RestResult add(@RequestParam("id") String id) {
+        try {
+            return RestResult.restSuccess(connectorService.copy(id));
+        } catch (Exception e) {
+            logger.error(e.getLocalizedMessage(), e.getClass());
+            return RestResult.restFail(e.getMessage());
+        }
+    }
+
     @PostMapping("/add")
     @ResponseBody
     public RestResult add(HttpServletRequest request) {
@@ -96,4 +107,4 @@ public class ConnectorController extends BaseController {
         }
     }
 
-}
+}

+ 3 - 2
dbsyncer-web/src/main/resources/public/index/index.html

@@ -72,7 +72,8 @@
                                         <div class="dropdown">
                                             <a data-toggle="dropdown" href="javascript:;"><span class="well-sign-operation"><i class="fa fa-gears fa-1x"></i></span></a>
                                             <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
-                                                <li th:url="'/connector/remove?id='+${c?.id}"><a href="javascript:;"><i class="fa fa-trash well-sign-red"></i>&nbsp;&nbsp;删除</a></li>
+                                                <li class="remove" th:url="'/connector/remove?id='+${c?.id}"><a href="javascript:;"><i class="fa fa-trash well-sign-red"></i>&nbsp;&nbsp;删除</a></li>
+                                                <li class="copy" th:url="'/connector/copy?id='+${c?.id}"><a href="javascript:;"><i class="fa fa-copy"></i>&nbsp;复制</a></li>
                                             </ul>
                                         </div>
                                     </div>
@@ -215,4 +216,4 @@
 </div>
 
 <script th:src="@{/js/index/index.js}"></script>
-</html>
+</html>

+ 9 - 2
dbsyncer-web/src/main/resources/static/js/index/index.js

@@ -108,8 +108,10 @@ function bindQueryData() {
     });
 }
 
+// 给连接下拉菜单绑定事件
 function bindConnectorDropdownMenu() {
-    $(".connectorList .dropdown-menu li").click(function () {
+    // 绑定删除连接事件
+    $(".connectorList .dropdown-menu li.remove").click(function () {
         var $url = $(this).attr("url");
         // 如果当前为恢复状态
         BootstrapDialog.show({
@@ -131,6 +133,11 @@ function bindConnectorDropdownMenu() {
             }]
         });
     });
+    // 绑定复制连接事件
+    $(".connectorList .dropdown-menu li.copy").click(function () {
+        var $url = $(this).attr("url");
+        doPost($url);
+    });
 }
 
 // 给驱动下拉菜单绑定事件
@@ -211,4 +218,4 @@ $(function () {
 
     bindConnectorDropdownMenu();
     bindMappingDropdownMenu();
-});
+});