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传输过来的数据。当然还需要注册监听事件,注册监听事件代码:
销毁程序时,监听事件也需要销毁:
本文来自博客园,作者:margo,转载请注明原文链接:https://www.cnblogs.com/ZMargo/articles/12884438.html