提交 cc030581 编写于 作者: S serge-rider

QM event browser model

上级 e0a679b1
......@@ -16,8 +16,10 @@
*/
package org.jkiss.dbeaver.runtime.qm;
import org.eclipse.core.runtime.Adapters;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.qm.*;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
......@@ -40,6 +42,7 @@ public class QMControllerImpl implements QMController {
private QMExecutionHandler defaultHandler;
private QMMCollectorImpl metaHandler;
private final List<QMExecutionHandler> handlers = new ArrayList<>();
private QMEventBrowser eventBrowser;
public QMControllerImpl() {
defaultHandler = (QMExecutionHandler) Proxy.newProxyInstance(
......@@ -79,6 +82,19 @@ public class QMControllerImpl implements QMController {
return defaultHandler;
}
@Override
public synchronized QMEventBrowser getEventBrowser() {
if (eventBrowser == null) {
eventBrowser = Adapters.adapt(this, QMEventBrowser.class);
if (eventBrowser == null) {
// Default browser
eventBrowser = new DefaultEventBrowser();
}
}
return eventBrowser;
}
@Override
public void registerHandler(QMExecutionHandler handler) {
synchronized (handlers) {
......@@ -107,27 +123,6 @@ public class QMControllerImpl implements QMController {
metaHandler.removeListener(metaListener);
}
@Override
public QMEventCursor getQueryHistoryCursor(
@NotNull DBRProgressMonitor monitor,
@Nullable String containerId,
@Nullable String sessionId,
@Nullable String searchString)
{
if (CommonUtils.isEmpty(searchString)) {
return new QMUtils.ListCursorImpl(metaHandler.getPastEvents());
} else {
searchString = searchString.toLowerCase();
List<QMMetaEvent> filtered = new ArrayList<>();
for (QMMetaEvent event : metaHandler.getPastEvents()) {
if (event.getObject().getText().toLowerCase().contains(searchString)) {
filtered.add(event);
}
}
return new QMUtils.ListCursorImpl(filtered);
}
}
List<QMExecutionHandler> getHandlers()
{
synchronized (handlers) {
......@@ -169,4 +164,27 @@ public class QMControllerImpl implements QMController {
}
private class DefaultEventBrowser implements QMEventBrowser {
@Override
public QMEventCursor getQueryHistoryCursor(
@NotNull DBRProgressMonitor monitor,
@Nullable String containerId,
@Nullable String sessionId,
@Nullable String searchString)
throws DBException
{
if (CommonUtils.isEmpty(searchString)) {
return new QMUtils.ListCursorImpl(metaHandler.getPastEvents());
} else {
searchString = searchString.toLowerCase();
List<QMMetaEvent> filtered = new ArrayList<>();
for (QMMetaEvent event : metaHandler.getPastEvents()) {
if (event.getObject().getText().toLowerCase().contains(searchString)) {
filtered.add(event);
}
}
return new QMUtils.ListCursorImpl(filtered);
}
}
}
}
......@@ -164,7 +164,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere
return CoreMessages.controls_querylog_rollback;
}
} else if (object instanceof QMMSessionInfo) {
String containerName = ((QMMSessionInfo) object).getContainerName() + " <" + ((QMMSessionInfo) object).getContextName() + ">";
String containerName = ((QMMSessionInfo) object).getContainerName();
switch (event.getAction()) {
case BEGIN: return CoreMessages.controls_querylog_connected_to + containerName + "\"";
case END: return CoreMessages.controls_querylog_disconnected_from + containerName + "\"";
......
......@@ -20,12 +20,14 @@ package org.jkiss.dbeaver.model.qm;
/**
* Query manager controller
*/
public interface QMController extends QMEventBrowser {
public interface QMController {
QMMCollector getMetaCollector();
QMExecutionHandler getDefaultHandler();
QMEventBrowser getEventBrowser();
void registerHandler(QMExecutionHandler handler);
void unregisterHandler(QMExecutionHandler handler);
......
......@@ -19,6 +19,7 @@ package org.jkiss.dbeaver.model.qm;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
/**
......@@ -30,6 +31,7 @@ public interface QMEventBrowser {
@NotNull DBRProgressMonitor monitor,
@Nullable String containerId,
@Nullable String sessionId,
@Nullable String searchString);
@Nullable String searchString)
throws DBException;
}
......@@ -71,7 +71,7 @@ public class QMUtils {
if (application == null) {
return null;
}
return application.getQueryManager();
return application.getQueryManager().getEventBrowser();
}
public static boolean isTransactionActive(DBCExecutionContext executionContext) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册