提交 6f42ef7b 编写于 作者: J jurgen

Data source provider refactoring

上级 c0934b04
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
package org.jkiss.dbeaver.model; package org.jkiss.dbeaver.model;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataSource;
/** /**
* DataSource provider. * DataSource provider.
......
...@@ -21,7 +21,6 @@ import org.eclipse.jface.preference.IPreferenceStore; ...@@ -21,7 +21,6 @@ import org.eclipse.jface.preference.IPreferenceStore;
import org.jkiss.code.NotNull; import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.IDataSourceProvider;
import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.data.DBDPreferences; import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
...@@ -32,7 +31,7 @@ import java.util.Collection; ...@@ -32,7 +31,7 @@ import java.util.Collection;
/** /**
* DBSDataSourceContainer * DBSDataSourceContainer
*/ */
public interface DBSDataSourceContainer extends DBSObject, DBDPreferences, IDataSourceProvider public interface DBSDataSourceContainer extends DBSObject, DBDPreferences
{ {
/** /**
* Container unique ID * Container unique ID
......
...@@ -30,28 +30,29 @@ import org.jkiss.code.Nullable; ...@@ -30,28 +30,29 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI; 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.DBPDataSource;
import org.jkiss.dbeaver.model.DBPObject; 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.DBECommandContext;
import org.jkiss.dbeaver.model.edit.DBEObjectEditor; import org.jkiss.dbeaver.model.edit.DBEObjectEditor;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNEvent; import org.jkiss.dbeaver.model.navigator.DBNEvent;
import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.navigator.IDBNListener; 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.DBSObject;
import org.jkiss.dbeaver.model.struct.DBSWrapper; import org.jkiss.dbeaver.model.struct.DBSWrapper;
import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry;
import org.jkiss.dbeaver.registry.tree.DBXTreeFolder; import org.jkiss.dbeaver.registry.tree.DBXTreeFolder;
import org.jkiss.dbeaver.registry.tree.DBXTreeNode; import org.jkiss.dbeaver.registry.tree.DBXTreeNode;
import org.jkiss.dbeaver.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.ui.INavigatorModelView;
import org.jkiss.dbeaver.ui.NavigatorUtils; import org.jkiss.dbeaver.ui.NavigatorUtils;
import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen;
import org.jkiss.dbeaver.ui.controls.ListContentProvider; import org.jkiss.dbeaver.ui.controls.ListContentProvider;
import org.jkiss.dbeaver.ui.controls.ObjectViewerRenderer; import org.jkiss.dbeaver.ui.controls.ObjectViewerRenderer;
import org.jkiss.dbeaver.ui.controls.TreeContentProvider; 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.PropertySourceAbstract;
import org.jkiss.dbeaver.ui.properties.PropertySourceEditable; import org.jkiss.dbeaver.ui.properties.PropertySourceEditable;
import org.jkiss.utils.CommonUtils; import org.jkiss.utils.CommonUtils;
...@@ -64,7 +65,7 @@ import java.util.Set; ...@@ -64,7 +65,7 @@ import java.util.Set;
/** /**
* NodeListControl * NodeListControl
*/ */
public abstract class NodeListControl extends ObjectListControl<DBNNode> implements IDataSourceProvider, INavigatorModelView, IDBNListener, IMenuListener { public abstract class NodeListControl extends ObjectListControl<DBNNode> implements IDataSourceContainerProvider, INavigatorModelView, IDBNListener, IMenuListener {
//static final Log log = Log.getLog(NodeListControl.class); //static final Log log = Log.getLog(NodeListControl.class);
private final IWorkbenchSite workbenchSite; private final IWorkbenchSite workbenchSite;
...@@ -119,10 +120,12 @@ public abstract class NodeListControl extends ObjectListControl<DBNNode> impleme ...@@ -119,10 +120,12 @@ public abstract class NodeListControl extends ObjectListControl<DBNNode> impleme
} }
@Override @Override
public DBPDataSource getDataSource() public DBSDataSourceContainer getDataSourceContainer() {
{
if (rootNode instanceof DBNDatabaseNode) { if (rootNode instanceof DBNDatabaseNode) {
return ((DBNDatabaseNode) rootNode).getObject().getDataSource(); DBPDataSource dataSource = ((DBNDatabaseNode) rootNode).getObject().getDataSource();
if (dataSource != null) {
return dataSource.getContainer();
}
} }
return null; return null;
} }
......
...@@ -33,6 +33,7 @@ import org.eclipse.swt.widgets.*; ...@@ -33,6 +33,7 @@ import org.eclipse.swt.widgets.*;
import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.IDataSourceContainerProvider;
import org.jkiss.dbeaver.model.IDataSourceProvider; import org.jkiss.dbeaver.model.IDataSourceProvider;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.runtime.AbstractJob; import org.jkiss.dbeaver.runtime.AbstractJob;
...@@ -367,8 +368,8 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl ...@@ -367,8 +368,8 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl
} }
IFilter propertyFilter = new DataSourcePropertyFilter( IFilter propertyFilter = new DataSourcePropertyFilter(
ObjectListControl.this instanceof IDataSourceProvider ? ObjectListControl.this instanceof IDataSourceContainerProvider ?
((IDataSourceProvider)ObjectListControl.this).getDataSource() : ((IDataSourceContainerProvider)ObjectListControl.this).getDataSourceContainer() :
null); null);
// Create columns from classes' annotations // Create columns from classes' annotations
......
...@@ -41,7 +41,7 @@ import org.jkiss.dbeaver.ui.editors.StringEditorInput; ...@@ -41,7 +41,7 @@ import org.jkiss.dbeaver.ui.editors.StringEditorInput;
import org.jkiss.dbeaver.ui.editors.SubEditorSite; import org.jkiss.dbeaver.ui.editors.SubEditorSite;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase; 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 IEditorSite subSite;
private SQLEditorBase sqlViewer; private SQLEditorBase sqlViewer;
...@@ -76,7 +76,7 @@ public abstract class BaseSQLDialog extends BaseDialog implements IDataSourcePro ...@@ -76,7 +76,7 @@ public abstract class BaseSQLDialog extends BaseDialog implements IDataSourcePro
sqlViewer = new SQLEditorBase() { sqlViewer = new SQLEditorBase() {
@Override @Override
public DBCExecutionContext getExecutionContext() { public DBCExecutionContext getExecutionContext() {
return BaseSQLDialog.this.getDataSource(); return BaseSQLDialog.this.getExecutionContext();
} }
}; };
updateSQL(); updateSQL();
...@@ -100,6 +100,8 @@ public abstract class BaseSQLDialog extends BaseDialog implements IDataSourcePro ...@@ -100,6 +100,8 @@ public abstract class BaseSQLDialog extends BaseDialog implements IDataSourcePro
return panel; return panel;
} }
protected abstract DBCExecutionContext getExecutionContext();
protected abstract String getSQLText(); protected abstract String getSQLText();
protected void createCopyButton(Composite parent) protected void createCopyButton(Composite parent)
......
...@@ -130,7 +130,7 @@ public abstract class GenerateMultiSQLDialog<T extends DBSObject> extends Genera ...@@ -130,7 +130,7 @@ public abstract class GenerateMultiSQLDialog<T extends DBSObject> extends Genera
generateObjectCommand(lines, object); generateObjectCommand(lines, object);
objectsSQL.put(object, lines); objectsSQL.put(object, lines);
} }
final DataSourceJob job = new DataSourceJob(jobName, null, getDataSource()) { final DataSourceJob job = new DataSourceJob(jobName, null, getExecutionContext()) {
public Exception objectProcessingError; public Exception objectProcessingError;
@Override @Override
......
...@@ -151,9 +151,8 @@ public abstract class GenerateSQLDialog extends BaseSQLDialog { ...@@ -151,9 +151,8 @@ public abstract class GenerateSQLDialog extends BaseSQLDialog {
} }
@Override @Override
public DBPDataSource getDataSource() protected DBCExecutionContext getExecutionContext() {
{ return executionContext;
return executionContext.getDataSource();
} }
@Override @Override
......
...@@ -26,6 +26,7 @@ import org.eclipse.ui.IWorkbenchPartSite; ...@@ -26,6 +26,7 @@ import org.eclipse.ui.IWorkbenchPartSite;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
public class ViewSQLDialog extends BaseSQLDialog { public class ViewSQLDialog extends BaseSQLDialog {
...@@ -106,10 +107,8 @@ public class ViewSQLDialog extends BaseSQLDialog { ...@@ -106,10 +107,8 @@ public class ViewSQLDialog extends BaseSQLDialog {
} }
} }
@Nullable
@Override @Override
public DBPDataSource getDataSource() protected DBCExecutionContext getExecutionContext() {
{
return dataSource; return dataSource;
} }
} }
\ No newline at end of file
...@@ -19,9 +19,10 @@ package org.jkiss.dbeaver.ui.properties; ...@@ -19,9 +19,10 @@ package org.jkiss.dbeaver.ui.properties;
import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.IFilter; import org.eclipse.jface.viewers.IFilter;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer;
/** /**
* Datasource property filter * Datasource property filter
...@@ -30,10 +31,19 @@ public class DataSourcePropertyFilter implements IFilter { ...@@ -30,10 +31,19 @@ public class DataSourcePropertyFilter implements IFilter {
private final boolean showExpensive; private final boolean showExpensive;
public DataSourcePropertyFilter()
{
this((DBSDataSourceContainer)null);
}
public DataSourcePropertyFilter(DBPDataSource dataSource) public DataSourcePropertyFilter(DBPDataSource dataSource)
{ {
IPreferenceStore store = dataSource != null ? this(dataSource == null ? null : dataSource.getContainer());
dataSource.getContainer().getPreferenceStore() : }
public DataSourcePropertyFilter(DBSDataSourceContainer container)
{
IPreferenceStore store = container != null ?
container.getPreferenceStore() :
DBeaverCore.getGlobalPreferenceStore(); DBeaverCore.getGlobalPreferenceStore();
this.showExpensive = store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES); this.showExpensive = store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES);
} }
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
*/ */
package org.jkiss.dbeaver.ui.properties; 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.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.jface.viewers.IFilter; import org.eclipse.jface.viewers.IFilter;
...@@ -25,6 +24,7 @@ import org.eclipse.swt.widgets.Shell; ...@@ -25,6 +24,7 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource; import org.eclipse.ui.views.properties.IPropertySource;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.core.Log;
import org.jkiss.dbeaver.model.IDataSourceProvider; import org.jkiss.dbeaver.model.IDataSourceProvider;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObject;
...@@ -282,7 +282,7 @@ public abstract class PropertySourceAbstract implements IPropertySourceMulti ...@@ -282,7 +282,7 @@ public abstract class PropertySourceAbstract implements IPropertySourceMulti
} else if (editableValue instanceof IDataSourceProvider) { } else if (editableValue instanceof IDataSourceProvider) {
filter = new DataSourcePropertyFilter(((IDataSourceProvider) editableValue).getDataSource()); filter = new DataSourcePropertyFilter(((IDataSourceProvider) editableValue).getDataSource());
} else { } else {
filter = new DataSourcePropertyFilter(null); filter = new DataSourcePropertyFilter();
} }
List<ObjectPropertyDescriptor> annoProps = ObjectAttributeDescriptor.extractAnnotations(this, editableValue.getClass(), filter); List<ObjectPropertyDescriptor> annoProps = ObjectAttributeDescriptor.extractAnnotations(this, editableValue.getClass(), filter);
for (final ObjectPropertyDescriptor desc : annoProps) { for (final ObjectPropertyDescriptor desc : annoProps) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册