dbeaver 查詢歷史記錄數據傳輸過程


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傳輸過來的數據。當然還需要注冊監聽事件,注冊監聽事件代碼:

 

銷毀程序時,監聽事件也需要銷毀:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM