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

Data source provider refactoring

上级 c0934b04
......@@ -19,7 +19,6 @@
package org.jkiss.dbeaver.model;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataSource;
/**
* DataSource provider.
......
......@@ -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
......
......@@ -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<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);
private final IWorkbenchSite workbenchSite;
......@@ -119,10 +120,12 @@ public abstract class NodeListControl extends ObjectListControl<DBNNode> 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;
}
......
......@@ -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<OBJECT_TYPE> 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
......
......@@ -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)
......
......@@ -130,7 +130,7 @@ public abstract class GenerateMultiSQLDialog<T extends DBSObject> 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
......
......@@ -151,9 +151,8 @@ public abstract class GenerateSQLDialog extends BaseSQLDialog {
}
@Override
public DBPDataSource getDataSource()
{
return executionContext.getDataSource();
protected DBCExecutionContext getExecutionContext() {
return executionContext;
}
@Override
......
......@@ -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
......@@ -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);
}
......
......@@ -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<ObjectPropertyDescriptor> annoProps = ObjectAttributeDescriptor.extractAnnotations(this, editableValue.getClass(), filter);
for (final ObjectPropertyDescriptor desc : annoProps) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册