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

QM refactoring. Remove references on DS objects

上级 11446782
......@@ -18,17 +18,17 @@
package org.jkiss.dbeaver.runtime.qm;
import org.eclipse.core.runtime.IStatus;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPPreferenceListener;
import org.jkiss.dbeaver.model.qm.QMConstants;
import org.jkiss.dbeaver.model.qm.QMEventFilter;
import org.jkiss.dbeaver.model.qm.QMMetaEvent;
import org.jkiss.dbeaver.model.qm.QMMetaListener;
import org.jkiss.dbeaver.utils.RuntimeUtils;
import org.jkiss.dbeaver.model.qm.meta.*;
import org.jkiss.dbeaver.utils.ContentUtils;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.dbeaver.utils.RuntimeUtils;
import java.io.File;
import java.io.FileWriter;
......@@ -156,7 +156,7 @@ public class QMLogFileWriter implements QMMetaListener, DBPPreferenceListener {
}
} else if (object instanceof QMMSessionInfo) {
QMMSessionInfo sessionInfo = (QMMSessionInfo)object;
buffer.append(action).append(" SESSION [").append(sessionInfo.getContainer().getName()).append("]");
buffer.append(action).append(" SESSION [").append(sessionInfo.getContainerName()).append("]");
}
buffer.append(lineSeparator);
......
......@@ -33,7 +33,10 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.RGB;
......@@ -46,13 +49,13 @@ import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPPreferenceListener;
import org.jkiss.dbeaver.model.DBPPreferenceStore;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.qm.*;
import org.jkiss.dbeaver.model.qm.meta.*;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.sql.SQLDialect;
import org.jkiss.dbeaver.runtime.qm.DefaultEventFilter;
import org.jkiss.dbeaver.ui.*;
import org.jkiss.dbeaver.ui.dialogs.sql.BaseSQLDialog;
......@@ -141,10 +144,10 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere
return CoreMessages.controls_querylog_rollback;
}
} else if (object instanceof QMMSessionInfo) {
DBPDataSourceContainer container = ((QMMSessionInfo) object).getContainer();
String containerName = ((QMMSessionInfo) object).getContainerName();
switch (event.getAction()) {
case BEGIN: return CoreMessages.controls_querylog_connected_to + (container == null ? "?" : container.getName()) + "\"";
case END: return CoreMessages.controls_querylog_disconnected_from + (container == null ? "?" : container.getName()) + "\"";
case BEGIN: return CoreMessages.controls_querylog_connected_to + containerName + "\"";
case END: return CoreMessages.controls_querylog_disconnected_from + containerName + "\"";
default: return "?";
}
}
......@@ -237,41 +240,41 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere
String getText(QMMetaEvent event)
{
QMMObject object = event.getObject();
DBPDataSourceContainer container = null;
String containerName = null;
if (object instanceof QMMSessionInfo) {
container = ((QMMSessionInfo) object).getContainer();
containerName = ((QMMSessionInfo) object).getContainerName();
} else if (object instanceof QMMTransactionInfo) {
container = ((QMMTransactionInfo) object).getSession().getContainer();
containerName = ((QMMTransactionInfo) object).getSession().getContainerName();
} else if (object instanceof QMMTransactionSavepointInfo) {
container = ((QMMTransactionSavepointInfo) object).getTransaction().getSession().getContainer();
containerName = ((QMMTransactionSavepointInfo) object).getTransaction().getSession().getContainerName();
} else if (object instanceof QMMStatementInfo) {
container = ((QMMStatementInfo) object).getSession().getContainer();
containerName = ((QMMStatementInfo) object).getSession().getContainerName();
} else if (object instanceof QMMStatementExecuteInfo) {
container = ((QMMStatementExecuteInfo) object).getStatement().getSession().getContainer();
containerName = ((QMMStatementExecuteInfo) object).getStatement().getSession().getContainerName();
}
return container == null ? "?" : container.getName();
return containerName == null ? "?" : containerName;
}
};
private static LogColumn COLUMN_CONTEXT = new LogColumn("context", CoreMessages.controls_querylog_column_context_name, CoreMessages.controls_querylog_column_context_tooltip, 150) {
@Override
String getText(QMMetaEvent event) {
QMMObject object = event.getObject();
DBCExecutionContext context = null;
String contextName = null;
if (object instanceof QMMSessionInfo) {
context = ((QMMSessionInfo) object).getReference();
contextName = ((QMMSessionInfo) object).getContextName();
} else if (object instanceof QMMTransactionInfo) {
context = ((QMMTransactionInfo) object).getSession().getReference();
contextName = ((QMMTransactionInfo) object).getSession().getContextName();
} else if (object instanceof QMMTransactionSavepointInfo) {
context = ((QMMTransactionSavepointInfo) object).getTransaction().getSession().getReference();
contextName = ((QMMTransactionSavepointInfo) object).getTransaction().getSession().getContextName();
} else if (object instanceof QMMStatementInfo) {
context = ((QMMStatementInfo) object).getSession().getReference();
contextName = ((QMMStatementInfo) object).getSession().getContextName();
} else if (object instanceof QMMStatementExecuteInfo) {
context = ((QMMStatementExecuteInfo) object).getStatement().getSession().getReference();
contextName = ((QMMStatementExecuteInfo) object).getStatement().getSession().getContextName();
}
if (context == null) {
if (contextName == null) {
return "?";
}
return context.getContextName();
return contextName;
}
};
private static LogColumn[] ALL_COLUMNS = new LogColumn[] {
......@@ -928,10 +931,15 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere
}
@Override
protected DBCExecutionContext getExecutionContext() {
protected SQLDialect getSQLDialect() {
if (object.getObject() instanceof QMMStatementExecuteInfo) {
return ((QMMStatementExecuteInfo) object.getObject()).getStatement().getSession().getReference();
return ((QMMStatementExecuteInfo) object.getObject()).getStatement().getSession().getSQLDialect();
}
return super.getSQLDialect();
}
@Override
protected DBCExecutionContext getExecutionContext() {
return null;
}
......
......@@ -34,6 +34,8 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.sql.SQLDataSource;
import org.jkiss.dbeaver.model.sql.SQLDialect;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.BaseDialog;
import org.jkiss.dbeaver.ui.editors.StringEditorInput;
......@@ -80,6 +82,11 @@ public abstract class BaseSQLDialog extends BaseDialog {
editorPH.setLayout(new FillLayout());
sqlViewer = new SQLEditorBase() {
@Override
protected SQLDialect getSQLDialect() {
return BaseSQLDialog.this.getSQLDialect();
}
@Override
public DBCExecutionContext getExecutionContext() {
return BaseSQLDialog.this.getExecutionContext();
......@@ -106,6 +113,14 @@ public abstract class BaseSQLDialog extends BaseDialog {
return panel;
}
protected SQLDialect getSQLDialect() {
DBCExecutionContext executionContext = getExecutionContext();
if (executionContext != null && executionContext.getDataSource() instanceof SQLDataSource) {
return ((SQLDataSource) executionContext.getDataSource()).getSQLDialect();
}
return null;
}
protected abstract DBCExecutionContext getExecutionContext();
protected abstract String getSQLText();
......
......@@ -23,6 +23,8 @@ import org.jkiss.dbeaver.model.qm.QMMetaEvent;
import org.jkiss.dbeaver.model.qm.meta.*;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditor;
import java.util.Objects;
/**
* SQL log filter
*/
......@@ -44,7 +46,7 @@ class SQLLogFilter implements QMEventFilter {
// - session changes (if session belongs to active datasource)
QMMObject object = event.getObject();
if (object instanceof QMMSessionInfo) {
return ((QMMSessionInfo)object).getContainer() == editor.getDataSourceContainer();
return Objects.equals(((QMMSessionInfo) object).getContainerId(), editor.getDataSourceContainer().getId());
} else {
if (object instanceof QMMStatementExecuteInfo) {
return belongsToEditor(((QMMStatementExecuteInfo) object).getStatement().getSession());
......@@ -60,8 +62,12 @@ class SQLLogFilter implements QMEventFilter {
}
private boolean belongsToEditor(QMMSessionInfo session) {
DBCExecutionContext executionContext = session.getReference();
return executionContext != null && executionContext == editor.getExecutionContext();
String containerId = session.getContainerId();
String contextName = session.getContextName();
DBCExecutionContext executionContext = editor.getExecutionContext();
return executionContext != null &&
Objects.equals(executionContext.getDataSource().getContainer().getId(), containerId) &&
Objects.equals(executionContext.getContextName(), contextName);
}
}
......@@ -17,23 +17,26 @@
*/
package org.jkiss.dbeaver.model.qm.meta;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSavepoint;
import org.jkiss.dbeaver.model.exec.DBCStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import java.lang.ref.SoftReference;
import org.jkiss.dbeaver.model.sql.SQLDataSource;
import org.jkiss.dbeaver.model.sql.SQLDialect;
/**
* Data source information
*/
public class QMMSessionInfo extends QMMObject {
private final String containerId;
private SoftReference<DBCExecutionContext> reference;
private SoftReference<DBPDataSourceContainer> container;
private String containerId;
private String containerName;
private String driverId;
private DBPConnectionConfiguration connectionConfiguration;
private String contextName;
private SQLDialect sqlDialect;
private boolean transactional;
private QMMSessionInfo previous;
......@@ -44,8 +47,13 @@ public class QMMSessionInfo extends QMMObject {
public QMMSessionInfo(DBCExecutionContext context, boolean transactional, QMMSessionInfo previous)
{
this.containerId = context.getDataSource().getContainer().getId();
this.reference = new SoftReference<>(context);
this.container = new SoftReference<>(context.getDataSource().getContainer());
this.containerName = context.getDataSource().getContainer().getName();
this.driverId = context.getDataSource().getContainer().getDriver().getId();
this.connectionConfiguration = context.getDataSource().getContainer().getConnectionConfiguration();
this.contextName = context.getContextName();
if (context.getDataSource() instanceof SQLDataSource) {
this.sqlDialect = ((SQLDataSource) context.getDataSource()).getSQLDialect();
}
this.previous = previous;
this.transactional = transactional;
if (transactional) {
......@@ -214,14 +222,20 @@ public class QMMSessionInfo extends QMMObject {
return containerId;
}
public DBPDataSourceContainer getContainer()
{
return container.get();
public String getContainerName() {
return containerName;
}
public DBCExecutionContext getReference()
{
return reference == null ? null : reference.get();
public String getDriverId() {
return driverId;
}
public DBPConnectionConfiguration getConnectionConfiguration() {
return connectionConfiguration;
}
public String getContextName() {
return contextName;
}
public QMMStatementInfo getStatementStack()
......@@ -250,4 +264,7 @@ public class QMMSessionInfo extends QMMObject {
return "SESSION " + containerId;
}
public SQLDialect getSQLDialect() {
return sqlDialect;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册