فهرست منبع

update query data

AE86 5 سال پیش
والد
کامیت
d9f5376ba1

+ 7 - 3
dbsyncer-storage/src/main/java/org/dbsyncer/storage/support/DiskStorageServiceImpl.java

@@ -111,9 +111,13 @@ public class DiskStorageServiceImpl extends AbstractStorageService {
 
     @Override
     public void deleteAll(String collectionId) throws IOException {
-        Shard shard = map.get(collectionId);
-        if (null != shard) {
-            shard.deleteAll();
+        synchronized (this){
+            Shard shard = map.get(collectionId);
+            if (null != shard) {
+                shard.deleteAll();
+                shard.close();
+                map.remove(collectionId);
+            }
         }
     }
 

+ 3 - 6
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/monitor/MonitorController.java

@@ -8,10 +8,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
@@ -60,7 +57,7 @@ public class MonitorController extends BaseController {
         }
     }
 
-    @GetMapping("/clearData")
+    @PostMapping("/clearData")
     @ResponseBody
     public RestResult clearData(@RequestParam(value = "id") String id) {
         try {
@@ -71,7 +68,7 @@ public class MonitorController extends BaseController {
         }
     }
 
-    @GetMapping("/clearLog")
+    @PostMapping("/clearLog")
     @ResponseBody
     public RestResult clearLog() {
         try {

+ 55 - 20
dbsyncer-web/src/main/resources/static/js/monitor/index.js

@@ -1,25 +1,8 @@
-//切换连接器
-function changeMetaData($this) {
-    var $id = $this.val();
-    $initContainer.load('/monitor?id=' + $id);
-}
-
-$(function () {
-    // 初始化select2插件
-    $(".select-control").select2({
-        width: "100%",
-        theme: "classic"
-    });
-
-    //连接器类型切换事件
-    $("select[name='metaData']").change(function () {
-        changeMetaData($(this));
-    });
-
-    // 查看详细数据
+// 查看详细数据
+function bindQueryDataEvent() {
     $(".metaDataList .queryData").click(function () {
         var json = $(this).attr("json");
-        var html = '<div class="row driver_break_word">'+json+'</div>';
+        var html = '<div class="row driver_break_word">' + json + '</div>';
         BootstrapDialog.show({
             title: "注意信息安全",
             type: BootstrapDialog.TYPE_INFO,
@@ -33,5 +16,57 @@ $(function () {
             }]
         });
     });
+}
+
+// 清空数据
+function bindClearEvent($btn, $title, $msg, $url){
+    $btn.click(function () {
+        var $id = $(this).attr("id");
+        var data = {"id": $id};
+        BootstrapDialog.show({
+            title: "警告",
+            type: BootstrapDialog.TYPE_DANGER,
+            message: $title,
+            size: BootstrapDialog.SIZE_NORMAL,
+            buttons: [{
+                label: "确定",
+                action: function (dialog) {
+                    doPoster($url, data, function (data) {
+                        if (data.success == true) {
+                            bootGrowl($msg, "success");
+                            $initContainer.load('/monitor?id=' + $id);
+                        } else {
+                            bootGrowl(data.resultValue, "danger");
+                        }
+                    });
+                    dialog.close();
+                }
+            }, {
+                label: "取消",
+                action: function (dialog) {
+                    dialog.close();
+                }
+            }]
+        });
+
+    });
+}
+
+$(function () {
+    // 初始化select2插件
+    $(".select-control").select2({
+        width: "100%",
+        theme: "classic"
+    });
+
+    //连接器类型切换事件
+    $("select[name='metaData']").change(function () {
+        var $id = $(this).val();
+        $initContainer.load('/monitor?id=' + $id);
+    });
+
+    bindQueryDataEvent();
+    bindClearEvent($(".clearDataBtn"), "确认清空数据?", "清空数据成功!", "/monitor/clearData");
+    bindClearEvent($(".clearLogBtn"), "确认清空日志?", "清空日志成功!", "/monitor/clearLog");
 
 });

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

@@ -5,10 +5,10 @@
 <!-- Connector Mapping -->
 <div class="container-fluid">
     <div class="row">
+        <form class="form-horizontal" role="form" method="post">
 
-        <!-- 连接器管理 -->
-        <div class="col-md-12">
-            <form class="form-horizontal" role="form" method="post">
+            <!-- 连接器管理 -->
+            <div class="col-md-12">
                 <!-- 连接器开始位置 -->
                 <div class="form-group">
                     <div class="col-md-12">
@@ -51,12 +51,10 @@
                     </div>
                 </div>
                 <!-- 连接器开结束位置 -->
-            </form>
-        </div>
+            </div>
 
-        <!-- 驱动管理 -->
-        <div class="col-md-12">
-            <form class="form-horizontal" role="form" method="post">
+            <!-- 驱动管理 -->
+            <div class="col-md-12">
                 <!-- 驱动开始位置 -->
                 <div class="form-group" th:if="${connectors?.size() gt 0}">
                     <div class="col-md-12">
@@ -172,9 +170,9 @@
                     </div>
                 </div>
                 <!-- 驱动结束位置 -->
-            </form>
-        </div>
+            </div>
 
+        </form>
     </div>
 </div>
 

+ 98 - 67
dbsyncer-web/src/main/resources/templates/monitor/monitor.html

@@ -4,80 +4,111 @@
 
 <!-- Monitor -->
 <div class="container-fluid">
+    <div class="row">
+        <form class="form-horizontal" role="form" method="post">
 
-    <div class="form-group">
-        <div class="row">
-            <div class="col-md-3">
-                <!-- 驱动下拉 -->
-                <select id="metaData" name="metaData" class="form-control select-control">
-                    <option th:each="m,s:${meta}" th:value="${m?.id}" th:text="${m?.mappingName} +' (' + ${m?.model} +')'" th:selected="${m?.id eq metaId}"/>
-                </select>
+            <!-- 数据 -->
+            <div class="col-md-12">
+                <div class="form-group">
+                    <div class="col-md-3">
+                        <!-- 驱动下拉 -->
+                        <select id="metaData" name="metaData" class="form-control select-control">
+                            <option th:each="m,s:${meta}" th:value="${m?.id}" th:text="${m?.mappingName} +' (' + ${m?.model} +')'" th:selected="${m?.id eq metaId}"/>
+                        </select>
+                    </div>
+                    <div class="col-sm-4">
+                        <input class="form-control" type="text" maxlength="32" placeholder="请输入内容关键字(最多32个字)." />
+                    </div>
+                    <div class="col-md-1">
+                        <button type="button" class="btn btn-primary">查询数据</button>
+                    </div>
+                    <div class="col-md-4 text-right">
+                        <button th:id="${metaId}" type="button" class="btn btn-default clearDataBtn">清空数据</button>
+                    </div>
+                </div>
+
+                <table class="table table-hover metaDataList">
+                    <thead>
+                    <tr>
+                        <th style="width:3%;"></th>
+                        <th style="width:5%;">事件</th>
+                        <th style="width:5%;">结果</th>
+                        <th style="width:60%;">异常</th>
+                        <th style="width:17%;">时间</th>
+                        <th style="width:10%;">详情</th>
+                    </tr>
+                    </thead>
+                    <tr th:each="d,s : ${data}">
+                        <td th:text="${s.index}+1"></td>
+                        <td th:text="${d?.event}"></td>
+                        <td>
+                            <span th:if="${d?.success}" class="label label-success">成功</span>
+                            <span th:if="${not d?.success}" class="label label-warning">失败</span>
+                        </td>
+                        <td th:text="${d?.error}"></td>
+                        <td th:text="${#dates.format(d?.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
+                        <td><a th:json="${d?.json}" href="javascript:;" class="label label-info queryData">查看数据</a></td>
+                    </tr>
+                </table>
             </div>
-            <div class="col-md-9"></div>
-        </div>
-    </div>
 
-    <!-- 数据 -->
-    <table class="table table-hover metaDataList">
-        <thead>
-        <tr>
-            <th style="width:3%;"></th>
-            <th style="width:12%;">时间</th>
-            <th style="width:5%;">事件</th>
-            <th style="width:5%;">结果</th>
-            <th style="width:65%;">异常</th>
-            <th style="width:10%;">详情</th>
-        </tr>
-        </thead>
-        <tr th:each="d,s : ${data}">
-            <td th:text="${s.index}+1"></td>
-            <td th:text="${#dates.format(d?.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
-            <td th:text="${d?.event}"></td>
-            <td>
-                <span th:if="${d?.success}" class="label label-success">成功</span>
-                <span th:if="${not d?.success}" class="label label-warning">失败</span>
-            </td>
-            <td th:text="${d?.error}"></td>
-            <td><a th:json="${d?.json}" href="javascript:;" class="label label-info queryData">查看数据</a></td>
-        </tr>
-    </table>
+            <!-- 性能指标 -->
+            <div class="col-md-12">
+                <p>CPU 内存 硬盘 堆内存 </p>
+            </div>
 
-    <p>CPU 内存 硬盘 堆内存 </p>
+            <!-- 线程任务 -->
+            <div class="col-md-12">
+                <table class="table table-hover">
+                    <caption>线程任务</caption>
+                    <thead>
+                    <tr>
+                        <th>序号</th>
+                        <th>类型</th>
+                        <th>指标</th>
+                    </tr>
+                    </thead>
+                    <tr th:each="item,userStat:${threadInfo}">
+                        <td th:text="${userStat.index}+1"></td>
+                        <td th:text="${userStat.current.key}"></td><!-- key-->
+                        <td th:text="${userStat.current.value}"></td><!-- value-->
+                    </tr>
+                </table>
+            </div>
 
-    <!-- 线程任务 -->
-    <table class="table table-hover">
-        <caption>线程任务</caption>
-        <thead>
-        <tr>
-            <th>序号</th>
-            <th>类型</th>
-            <th>指标</th>
-        </tr>
-        </thead>
-        <tr th:each="item,userStat:${threadInfo}">
-            <td th:text="${userStat.index}+1"></td>
-            <td th:text="${userStat.current.key}"></td><!-- key-->
-            <td th:text="${userStat.current.value}"></td><!-- value-->
-        </tr>
-    </table>
+            <!-- 日志 -->
+            <div class="col-md-12">
+                <div class="form-group">
+                    <div class="col-sm-4">
+                        <input class="form-control" type="text" maxlength="32" placeholder="请输入内容关键字(最多32个字)." />
+                    </div>
+                    <div class="col-md-1">
+                        <button type="button" class="btn btn-primary">查询日志</button>
+                    </div>
+                    <div class="col-md-4"></div>
+                    <div class="col-md-3 text-right">
+                        <button th:id="${metaId}" type="button" class="btn btn-default clearLogBtn">清空日志</button>
+                    </div>
+                </div>
 
-    <!-- 日志 -->
-    <table class="table table-hover">
-        <caption>日志</caption>
-        <thead>
-        <tr>
-            <th>序号</th>
-            <th>内容</th>
-            <th>时间</th>
-        </tr>
-        </thead>
-        <tr th:each="l,s : ${log}">
-            <td th:text="${s.index}+1"></td>
-            <td th:text="${l?.json}"></td>
-            <td th:text="${#dates.format(l?.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
-        </tr>
-    </table>
+                <table class="table table-hover">
+                    <thead>
+                    <tr>
+                        <th>序号</th>
+                        <th>内容</th>
+                        <th>时间</th>
+                    </tr>
+                    </thead>
+                    <tr th:each="l,s : ${log}">
+                        <td th:text="${s.index}+1"></td>
+                        <td th:text="${l?.json}"></td>
+                        <td th:text="${#dates.format(l?.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
+                    </tr>
+                </table>
+            </div>
 
+        </form>
+    </div>
 </div>
 
 <script th:src="@{/js/monitor/index.js}"></script>