https://www.cnblogs.com/ZMargo/articles/12810810.html
在這篇文章中,我解釋了查詢歷史數據存儲位置,在org.jkiss.dbeaver.runtime.qm.QMMCollectorImpl 類中eventPool 的變量中存儲
在進行每次查詢時,都會去觸發org.jkiss.dbeaver.runtime.qm.QMMCollectorImpl.fireMetaEvent(QMMObject, Action) 這個方法。目前我希望把執行歷史記錄能存儲到SQLite數據庫中,在QMMCollectorImpl 這個類中操作多有不便,我希望獲取操作歷史記錄的操作語句,操作時間等變量,這些變量都在查詢歷史日志頁面有定義方法,即 org.jkiss.dbeaver.ui.controls.querylog.QueryLogViewer 這個類中getText方法
所以,現在來看下 events數據如何從 QMMCollectorImpl 類傳輸到 QueryLogViewer 類。
在QMMCollectorImpl 類中,空參構造調用了Job定時任務
定義了250毫秒執行一次Job任務。這個EventDispatcher 類是內部類,定義如下:
里面會根據判斷條件去執行listener中 metaInfoChanged 方法。而 QueryLogViewer 也實現了 QMMetaListener ,因此,在QueryLogViewer 類中,對應的 metaInfoChanged 方法就能獲取到從QMMCollectorImpl傳輸過來的數據。當然還需要注冊監聽事件,注冊監聽事件代碼:
銷毀程序時,監聽事件也需要銷毀: