diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/IDataSourceProvider.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/IDataSourceProvider.java index 222367a3a79c25fa3d98ee31571206e04ffbf163..449dd49c1aab461554ee80d76d2d9bc54d9e4e1b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/IDataSourceProvider.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/IDataSourceProvider.java @@ -19,7 +19,6 @@ package org.jkiss.dbeaver.model; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.model.DBPDataSource; /** * DataSource provider. diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java index 94e5615e1ec9c304c5a7aeb42b805635aec73c85..e2b055ceb36362e78845e39123f22f6c86237c93 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java @@ -21,7 +21,6 @@ import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.model.IDataSourceProvider; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.DBDPreferences; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -32,7 +31,7 @@ import java.util.Collection; /** * DBSDataSourceContainer */ -public interface DBSDataSourceContainer extends DBSObject, DBDPreferences, IDataSourceProvider +public interface DBSDataSourceContainer extends DBSObject, DBDPreferences { /** * Container unique ID diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java index ea131cb35bd3e486441c8c5dbeac975999288be6..aade26bd85809227b7b9ad41971464d21e926047 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java @@ -30,28 +30,29 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; -import org.jkiss.dbeaver.model.IDataSourceProvider; -import org.jkiss.dbeaver.ui.editors.IDatabaseEditor; -import org.jkiss.dbeaver.ui.INavigatorModelView; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPObject; +import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.edit.DBECommandContext; import org.jkiss.dbeaver.model.edit.DBEObjectEditor; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNEvent; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.IDBNListener; +import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSWrapper; import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; import org.jkiss.dbeaver.registry.tree.DBXTreeFolder; import org.jkiss.dbeaver.registry.tree.DBXTreeNode; import org.jkiss.dbeaver.runtime.VoidProgressMonitor; +import org.jkiss.dbeaver.ui.INavigatorModelView; import org.jkiss.dbeaver.ui.NavigatorUtils; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.controls.ListContentProvider; import org.jkiss.dbeaver.ui.controls.ObjectViewerRenderer; import org.jkiss.dbeaver.ui.controls.TreeContentProvider; +import org.jkiss.dbeaver.ui.editors.IDatabaseEditor; import org.jkiss.dbeaver.ui.properties.PropertySourceAbstract; import org.jkiss.dbeaver.ui.properties.PropertySourceEditable; import org.jkiss.utils.CommonUtils; @@ -64,7 +65,7 @@ import java.util.Set; /** * NodeListControl */ -public abstract class NodeListControl extends ObjectListControl implements IDataSourceProvider, INavigatorModelView, IDBNListener, IMenuListener { +public abstract class NodeListControl extends ObjectListControl implements IDataSourceContainerProvider, INavigatorModelView, IDBNListener, IMenuListener { //static final Log log = Log.getLog(NodeListControl.class); private final IWorkbenchSite workbenchSite; @@ -119,10 +120,12 @@ public abstract class NodeListControl extends ObjectListControl impleme } @Override - public DBPDataSource getDataSource() - { + public DBSDataSourceContainer getDataSourceContainer() { if (rootNode instanceof DBNDatabaseNode) { - return ((DBNDatabaseNode) rootNode).getObject().getDataSource(); + DBPDataSource dataSource = ((DBNDatabaseNode) rootNode).getObject().getDataSource(); + if (dataSource != null) { + return dataSource.getContainer(); + } } return null; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java index 5f1e1cd857ab041215eb8902f7fdbc6afcbeafe1..aa092dafaf71538c035519071ea84972c4a92f0a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java @@ -33,6 +33,7 @@ import org.eclipse.swt.widgets.*; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.IDataSourceProvider; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.runtime.AbstractJob; @@ -367,8 +368,8 @@ public abstract class ObjectListControl extends ProgressPageControl } IFilter propertyFilter = new DataSourcePropertyFilter( - ObjectListControl.this instanceof IDataSourceProvider ? - ((IDataSourceProvider)ObjectListControl.this).getDataSource() : + ObjectListControl.this instanceof IDataSourceContainerProvider ? + ((IDataSourceContainerProvider)ObjectListControl.this).getDataSourceContainer() : null); // Create columns from classes' annotations diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java index 0c16b2009747b02ba5fc128bf0d68f167f282de9..7137062753a23f065085f6294cb35022c041bb7c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java @@ -41,7 +41,7 @@ import org.jkiss.dbeaver.ui.editors.StringEditorInput; import org.jkiss.dbeaver.ui.editors.SubEditorSite; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase; -public abstract class BaseSQLDialog extends BaseDialog implements IDataSourceProvider { +public abstract class BaseSQLDialog extends BaseDialog { private IEditorSite subSite; private SQLEditorBase sqlViewer; @@ -76,7 +76,7 @@ public abstract class BaseSQLDialog extends BaseDialog implements IDataSourcePro sqlViewer = new SQLEditorBase() { @Override public DBCExecutionContext getExecutionContext() { - return BaseSQLDialog.this.getDataSource(); + return BaseSQLDialog.this.getExecutionContext(); } }; updateSQL(); @@ -100,6 +100,8 @@ public abstract class BaseSQLDialog extends BaseDialog implements IDataSourcePro return panel; } + protected abstract DBCExecutionContext getExecutionContext(); + protected abstract String getSQLText(); protected void createCopyButton(Composite parent) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java index 48714fe4bc69275df706b47b410e30c2c676c8a3..1b9b035c7c9ab84ff4d5a1775c5a2262273da028 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateMultiSQLDialog.java @@ -130,7 +130,7 @@ public abstract class GenerateMultiSQLDialog extends Genera generateObjectCommand(lines, object); objectsSQL.put(object, lines); } - final DataSourceJob job = new DataSourceJob(jobName, null, getDataSource()) { + final DataSourceJob job = new DataSourceJob(jobName, null, getExecutionContext()) { public Exception objectProcessingError; @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateSQLDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateSQLDialog.java index 378eab38e63d8aa64245a6bb8baca90fb3bc0eb4..34500668403bd4d6605b9fe29ae3ba2009b0f8fc 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateSQLDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/GenerateSQLDialog.java @@ -151,9 +151,8 @@ public abstract class GenerateSQLDialog extends BaseSQLDialog { } @Override - public DBPDataSource getDataSource() - { - return executionContext.getDataSource(); + protected DBCExecutionContext getExecutionContext() { + return executionContext; } @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/ViewSQLDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/ViewSQLDialog.java index 4ebfb8c958720bc2e05a71fc70094f8282d7b7f2..e1ae642bae965c9c8374318f8f33978969aebfe3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/ViewSQLDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/ViewSQLDialog.java @@ -26,6 +26,7 @@ import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.exec.DBCExecutionContext; public class ViewSQLDialog extends BaseSQLDialog { @@ -106,10 +107,8 @@ public class ViewSQLDialog extends BaseSQLDialog { } } - @Nullable @Override - public DBPDataSource getDataSource() - { + protected DBCExecutionContext getExecutionContext() { return dataSource; } } \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java index 37cf0cfddbe8343a345c12daac6eaa99744eae99..387b63e69781707c57cd87b90c5419e8753e8d08 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java @@ -19,9 +19,10 @@ package org.jkiss.dbeaver.ui.properties; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.IFilter; +import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDataSource; -import org.jkiss.dbeaver.DBeaverPreferences; +import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; /** * Datasource property filter @@ -30,10 +31,19 @@ public class DataSourcePropertyFilter implements IFilter { private final boolean showExpensive; + public DataSourcePropertyFilter() + { + this((DBSDataSourceContainer)null); + } public DataSourcePropertyFilter(DBPDataSource dataSource) { - IPreferenceStore store = dataSource != null ? - dataSource.getContainer().getPreferenceStore() : + this(dataSource == null ? null : dataSource.getContainer()); + } + + public DataSourcePropertyFilter(DBSDataSourceContainer container) + { + IPreferenceStore store = container != null ? + container.getPreferenceStore() : DBeaverCore.getGlobalPreferenceStore(); this.showExpensive = store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java index 9f65d78411d42c31d969c2826891ff693fc8c6f2..d2fdaac8ad14550d45fb12d428287df769369319 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java @@ -17,7 +17,6 @@ */ package org.jkiss.dbeaver.ui.properties; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.viewers.IFilter; @@ -25,6 +24,7 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertySource; import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.IDataSourceProvider; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; @@ -282,7 +282,7 @@ public abstract class PropertySourceAbstract implements IPropertySourceMulti } else if (editableValue instanceof IDataSourceProvider) { filter = new DataSourcePropertyFilter(((IDataSourceProvider) editableValue).getDataSource()); } else { - filter = new DataSourcePropertyFilter(null); + filter = new DataSourcePropertyFilter(); } List annoProps = ObjectAttributeDescriptor.extractAnnotations(this, editableValue.getClass(), filter); for (final ObjectPropertyDescriptor desc : annoProps) {