提交 df654614 编写于 作者: S Serge Rider

#10 Editors model refactoring (get rid of DBeaverCore)


Former-commit-id: fa01a401
上级 0bbe1573
...@@ -126,6 +126,7 @@ Require-Bundle: org.eclipse.core.runtime, ...@@ -126,6 +126,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.nebula.widgets.gallery, org.eclipse.nebula.widgets.gallery,
org.jkiss.dbeaver.model;visibility:=reexport, org.jkiss.dbeaver.model;visibility:=reexport,
org.jkiss.dbeaver.ui;visibility:=reexport, org.jkiss.dbeaver.ui;visibility:=reexport,
org.jkiss.dbeaver.ui.editors.base;visibility:=reexport,
org.jkiss.utils;visibility:=reexport, org.jkiss.utils;visibility:=reexport,
org.jkiss.dbeaver.data.transfer, org.jkiss.dbeaver.data.transfer,
org.jkiss.bundle.bouncycastle;resolution:=optional org.jkiss.bundle.bouncycastle;resolution:=optional
......
...@@ -495,6 +495,8 @@ public class DBeaverCore implements DBPPlatform { ...@@ -495,6 +495,8 @@ public class DBeaverCore implements DBPPlatform {
return projectRegistry; return projectRegistry;
} }
@NotNull
@Override
public DBPExternalFileManager getExternalFileManager() { public DBPExternalFileManager getExternalFileManager() {
return projectRegistry; return projectRegistry;
} }
......
...@@ -447,19 +447,6 @@ public class DataSourceRegistry implements DBPDataSourceRegistry ...@@ -447,19 +447,6 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
return SecurePreferencesFactory.getDefault().node("dbeaver").node("datasources"); return SecurePreferencesFactory.getDefault().node("dbeaver").node("datasources");
} }
public static List<DataSourceRegistry> getAllRegistries() {
List<DataSourceRegistry> result = new ArrayList<>();
for (IProject project : DBeaverCore.getInstance().getLiveProjects()) {
if (project.isOpen()) {
DataSourceRegistry registry = DBeaverCore.getInstance().getProjectRegistry().getDataSourceRegistry(project);
if (registry != null) {
result.add(registry);
}
}
}
return result;
}
public static List<DBPDataSourceContainer> getAllDataSources() { public static List<DBPDataSourceContainer> getAllDataSources() {
List<DBPDataSourceContainer> result = new ArrayList<>(); List<DBPDataSourceContainer> result = new ArrayList<>();
for (IProject project : DBeaverCore.getInstance().getLiveProjects()) { for (IProject project : DBeaverCore.getInstance().getLiveProjects()) {
...@@ -474,23 +461,6 @@ public class DataSourceRegistry implements DBPDataSourceRegistry ...@@ -474,23 +461,6 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
} }
/**
* Find data source in all available registries
*/
public static DBPDataSourceContainer findDataSource(String dataSourceId) {
ProjectRegistry projectRegistry = DBeaverCore.getInstance().getProjectRegistry();
for (IProject project : DBeaverCore.getInstance().getLiveProjects()) {
DataSourceRegistry dataSourceRegistry = projectRegistry.getDataSourceRegistry(project);
if (dataSourceRegistry != null) {
DBPDataSourceContainer dataSourceContainer = dataSourceRegistry.getDataSource(dataSourceId);
if (dataSourceContainer != null) {
return dataSourceContainer;
}
}
}
return null;
}
private void loadDataSources(boolean refresh) { private void loadDataSources(boolean refresh) {
if (!project.isOpen()) { if (!project.isOpen()) {
return; return;
......
...@@ -46,6 +46,7 @@ import org.jkiss.dbeaver.core.CoreCommands; ...@@ -46,6 +46,7 @@ import org.jkiss.dbeaver.core.CoreCommands;
import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener; import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener;
...@@ -56,7 +57,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; ...@@ -56,7 +57,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.load.AbstractLoadService; import org.jkiss.dbeaver.model.runtime.load.AbstractLoadService;
import org.jkiss.dbeaver.model.sql.SQLConstants; import org.jkiss.dbeaver.model.sql.SQLConstants;
import org.jkiss.dbeaver.model.sql.SQLDialect; import org.jkiss.dbeaver.model.sql.SQLDialect;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
import org.jkiss.dbeaver.runtime.qm.DefaultEventFilter; import org.jkiss.dbeaver.runtime.qm.DefaultEventFilter;
import org.jkiss.dbeaver.ui.*; import org.jkiss.dbeaver.ui.*;
import org.jkiss.dbeaver.ui.controls.ProgressLoaderVisualizer; import org.jkiss.dbeaver.ui.controls.ProgressLoaderVisualizer;
...@@ -893,7 +893,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere ...@@ -893,7 +893,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPrefere
QMMStatementExecuteInfo stmtExec = (QMMStatementExecuteInfo) object; QMMStatementExecuteInfo stmtExec = (QMMStatementExecuteInfo) object;
if (dsContainer == null) { if (dsContainer == null) {
String containerId = stmtExec.getStatement().getSession().getContainerId(); String containerId = stmtExec.getStatement().getSession().getContainerId();
dsContainer = DataSourceRegistry.findDataSource(containerId); dsContainer = DBUtils.findDataSource(containerId);
} }
String queryString = stmtExec.getQueryString(); String queryString = stmtExec.getQueryString();
if (!CommonUtils.isEmptyTrimmed(queryString)) { if (!CommonUtils.isEmptyTrimmed(queryString)) {
......
...@@ -23,7 +23,6 @@ import org.eclipse.ui.model.IWorkbenchAdapter; ...@@ -23,7 +23,6 @@ import org.eclipse.ui.model.IWorkbenchAdapter;
import org.eclipse.ui.model.WorkbenchAdapter; import org.eclipse.ui.model.WorkbenchAdapter;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.IDataSourceContainerProvider;
...@@ -33,6 +32,7 @@ import org.jkiss.dbeaver.model.navigator.DBNDataSource; ...@@ -33,6 +32,7 @@ import org.jkiss.dbeaver.model.navigator.DBNDataSource;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.preferences.DBPPropertySource; import org.jkiss.dbeaver.model.preferences.DBPPropertySource;
import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.runtime.properties.PropertySourceEditable; import org.jkiss.dbeaver.runtime.properties.PropertySourceEditable;
import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.DBeaverIcons;
...@@ -90,7 +90,7 @@ public abstract class DatabaseEditorInput<NODE extends DBNDatabaseNode> implemen ...@@ -90,7 +90,7 @@ public abstract class DatabaseEditorInput<NODE extends DBNDatabaseNode> implemen
@Override @Override
public String getName() public String getName()
{ {
if (DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.NAVIGATOR_EDITOR_FULL_NAME)) { if (DBWorkbench.getPlatform().getPreferenceStore().getBoolean(DBeaverPreferences.NAVIGATOR_EDITOR_FULL_NAME)) {
return node.getNodeFullName(); return node.getNodeFullName();
} else { } else {
return node.getName(); return node.getName();
...@@ -103,7 +103,7 @@ public abstract class DatabaseEditorInput<NODE extends DBNDatabaseNode> implemen ...@@ -103,7 +103,7 @@ public abstract class DatabaseEditorInput<NODE extends DBNDatabaseNode> implemen
if (getExecutionContext() == null || if (getExecutionContext() == null ||
getDatabaseObject() == null || getDatabaseObject() == null ||
!getDatabaseObject().isPersisted() || !getDatabaseObject().isPersisted() ||
!DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS)) !DBWorkbench.getPlatform().getPreferenceStore().getBoolean(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS))
{ {
return null; return null;
} }
......
...@@ -22,12 +22,12 @@ import org.eclipse.ui.IElementFactory; ...@@ -22,12 +22,12 @@ import org.eclipse.ui.IElementFactory;
import org.eclipse.ui.IMemento; import org.eclipse.ui.IMemento;
import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNModel; import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.utils.CommonUtils; import org.jkiss.utils.CommonUtils;
public class DatabaseEditorInputFactory implements IElementFactory public class DatabaseEditorInputFactory implements IElementFactory
...@@ -68,7 +68,7 @@ public class DatabaseEditorInputFactory implements IElementFactory ...@@ -68,7 +68,7 @@ public class DatabaseEditorInputFactory implements IElementFactory
final String activePageId = memento.getString(TAG_ACTIVE_PAGE); final String activePageId = memento.getString(TAG_ACTIVE_PAGE);
final String activeFolderId = memento.getString(TAG_ACTIVE_FOLDER); final String activeFolderId = memento.getString(TAG_ACTIVE_FOLDER);
final DBPDataSourceContainer dataSourceContainer = DataSourceRegistry.findDataSource(dataSourceId); final DBPDataSourceContainer dataSourceContainer = DBUtils.findDataSource(dataSourceId);
if (dataSourceContainer == null) { if (dataSourceContainer == null) {
log.error("Can't find data source '" + dataSourceId + "'"); //$NON-NLS-2$ log.error("Can't find data source '" + dataSourceId + "'"); //$NON-NLS-2$
return null; return null;
...@@ -79,7 +79,7 @@ public class DatabaseEditorInputFactory implements IElementFactory ...@@ -79,7 +79,7 @@ public class DatabaseEditorInputFactory implements IElementFactory
return null; return null;
} }
final IProject project = dataSourceContainer.getRegistry().getProject(); final IProject project = dataSourceContainer.getRegistry().getProject();
final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel(); final DBNModel navigatorModel = DBWorkbench.getPlatform().getNavigatorModel();
navigatorModel.ensureProjectLoaded(project); navigatorModel.ensureProjectLoaded(project);
return new DatabaseLazyEditorInput(dataSourceContainer, project, nodePath, nodeName, activePageId, activeFolderId); return new DatabaseLazyEditorInput(dataSourceContainer, project, nodePath, nodeName, activePageId, activeFolderId);
...@@ -87,7 +87,7 @@ public class DatabaseEditorInputFactory implements IElementFactory ...@@ -87,7 +87,7 @@ public class DatabaseEditorInputFactory implements IElementFactory
public static void saveState(IMemento memento, DatabaseEditorInput input) public static void saveState(IMemento memento, DatabaseEditorInput input)
{ {
if (!DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS)) { if (!DBWorkbench.getPlatform().getPreferenceStore().getBoolean(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS)) {
return; return;
} }
final DBCExecutionContext context = input.getExecutionContext(); final DBCExecutionContext context = input.getExecutionContext();
......
...@@ -17,11 +17,11 @@ ...@@ -17,11 +17,11 @@
package org.jkiss.dbeaver.ui.editors; package org.jkiss.dbeaver.ui.editors;
import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPage;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
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.INavigatorListener; import org.jkiss.dbeaver.model.navigator.INavigatorListener;
import org.jkiss.dbeaver.runtime.DBWorkbench;
/** /**
* DatabaseEditorListener * DatabaseEditorListener
...@@ -44,7 +44,7 @@ public class DatabaseEditorListener implements INavigatorListener ...@@ -44,7 +44,7 @@ public class DatabaseEditorListener implements INavigatorListener
dataSourceContainer.acquire(databaseEditor); dataSourceContainer.acquire(databaseEditor);
} }
// Register node listener // Register node listener
DBeaverCore.getInstance().getNavigatorModel().addListener(this); DBWorkbench.getPlatform().getNavigatorModel().addListener(this);
} }
public void dispose() public void dispose()
...@@ -56,7 +56,7 @@ public class DatabaseEditorListener implements INavigatorListener ...@@ -56,7 +56,7 @@ public class DatabaseEditorListener implements INavigatorListener
} }
// Remove node listener // Remove node listener
DBeaverCore.getInstance().getNavigatorModel().removeListener(this); DBWorkbench.getPlatform().getNavigatorModel().removeListener(this);
} }
public DBNNode getTreeNode() public DBNNode getTreeNode()
...@@ -86,7 +86,7 @@ public class DatabaseEditorListener implements INavigatorListener ...@@ -86,7 +86,7 @@ public class DatabaseEditorListener implements INavigatorListener
} }
} }
if (closeEditor) { if (closeEditor) {
if (DBeaverCore.isClosing()) { if (DBWorkbench.getPlatform().isShuttingDown()) {
// Do not update editors during shutdown, just remove listeners // Do not update editors during shutdown, just remove listeners
dispose(); dispose();
return; return;
......
...@@ -22,7 +22,6 @@ import org.eclipse.jface.resource.ImageDescriptor; ...@@ -22,7 +22,6 @@ import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IPersistableElement; import org.eclipse.ui.IPersistableElement;
import org.jkiss.code.Nullable; 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.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.edit.DBECommandContext; import org.jkiss.dbeaver.model.edit.DBECommandContext;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
...@@ -33,6 +32,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode; ...@@ -33,6 +32,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.preferences.DBPPropertySource; import org.jkiss.dbeaver.model.preferences.DBPPropertySource;
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;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.runtime.properties.PropertySourceCustom; import org.jkiss.dbeaver.runtime.properties.PropertySourceCustom;
import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.UITask; import org.jkiss.dbeaver.ui.UITask;
...@@ -184,7 +184,7 @@ public class DatabaseLazyEditorInput implements IDatabaseEditorInput ...@@ -184,7 +184,7 @@ public class DatabaseLazyEditorInput implements IDatabaseEditorInput
public IDatabaseEditorInput initializeRealInput(final DBRProgressMonitor monitor) throws DBException public IDatabaseEditorInput initializeRealInput(final DBRProgressMonitor monitor) throws DBException
{ {
final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel(); final DBNModel navigatorModel = DBWorkbench.getPlatform().getNavigatorModel();
while (!dataSource.isConnected()) { while (!dataSource.isConnected()) {
boolean connected; boolean connected;
......
...@@ -37,14 +37,12 @@ import org.eclipse.ui.ide.IDE; ...@@ -37,14 +37,12 @@ import org.eclipse.ui.ide.IDE;
import org.jkiss.code.NotNull; import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPExternalFileManager; import org.jkiss.dbeaver.model.DBPExternalFileManager;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants;
import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
import org.jkiss.dbeaver.utils.ContentUtils; import org.jkiss.dbeaver.utils.ContentUtils;
import org.jkiss.utils.CommonUtils; import org.jkiss.utils.CommonUtils;
...@@ -136,14 +134,6 @@ public class EditorUtils { ...@@ -136,14 +134,6 @@ public class EditorUtils {
////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////
// Datasource <-> resource manipulations // Datasource <-> resource manipulations
public static boolean isReadEmbeddedBinding() {
return DBeaverCore.getGlobalPreferenceStore().getBoolean(SQLPreferenceConstants.SCRIPT_BIND_EMBEDDED_READ);
}
public static boolean isWriteEmbeddedBinding() {
return DBeaverCore.getGlobalPreferenceStore().getBoolean(SQLPreferenceConstants.SCRIPT_BIND_EMBEDDED_WRITE);
}
public static DBPDataSourceContainer getInputDataSource(IEditorInput editorInput) public static DBPDataSourceContainer getInputDataSource(IEditorInput editorInput)
{ {
if (editorInput instanceof IDatabaseEditorInput) { if (editorInput instanceof IDatabaseEditorInput) {
...@@ -161,18 +151,18 @@ public class EditorUtils { ...@@ -161,18 +151,18 @@ public class EditorUtils {
} else { } else {
File localFile = getLocalFileFromInput(editorInput); File localFile = getLocalFileFromInput(editorInput);
if (localFile != null) { if (localFile != null) {
final DBPExternalFileManager efManager = DBeaverCore.getInstance().getExternalFileManager(); final DBPExternalFileManager efManager = DBWorkbench.getPlatform().getExternalFileManager();
String dataSourceId = (String) efManager.getFileProperty(localFile, PROP_SQL_DATA_SOURCE_ID); String dataSourceId = (String) efManager.getFileProperty(localFile, PROP_SQL_DATA_SOURCE_ID);
String projectName = (String) efManager.getFileProperty(localFile, PROP_SQL_PROJECT_ID); String projectName = (String) efManager.getFileProperty(localFile, PROP_SQL_PROJECT_ID);
if (CommonUtils.isEmpty(dataSourceId) || CommonUtils.isEmpty(projectName)) { if (CommonUtils.isEmpty(dataSourceId) || CommonUtils.isEmpty(projectName)) {
return null; return null;
} }
final IProject project = DBeaverCore.getInstance().getWorkspace().getEclipseWorkspace().getRoot().getProject(projectName); final IProject project = DBWorkbench.getPlatform().getWorkspace().getEclipseWorkspace().getRoot().getProject(projectName);
if (project == null || !project.exists()) { if (project == null || !project.exists()) {
log.error("Can't locate project '" + projectName + "' in workspace"); log.error("Can't locate project '" + projectName + "' in workspace");
return null; return null;
} }
DataSourceRegistry dataSourceRegistry = DBeaverCore.getInstance().getProjectRegistry().getDataSourceRegistry(project); DBPDataSourceRegistry dataSourceRegistry = DBWorkbench.getPlatform().getProjectManager().getDataSourceRegistry(project);
return dataSourceRegistry == null ? null : dataSourceRegistry.getDataSource(dataSourceId); return dataSourceRegistry == null ? null : dataSourceRegistry.getDataSource(dataSourceId);
} else { } else {
...@@ -194,12 +184,12 @@ public class EditorUtils { ...@@ -194,12 +184,12 @@ public class EditorUtils {
if (dataSourceId != null) { if (dataSourceId != null) {
IProject project = file.getProject(); IProject project = file.getProject();
if (projectId != null) { if (projectId != null) {
final IProject fileProject = DBeaverCore.getInstance().getWorkspace().getEclipseWorkspace().getRoot().getProject(projectId); final IProject fileProject = DBWorkbench.getPlatform().getWorkspace().getEclipseWorkspace().getRoot().getProject(projectId);
if (fileProject != null && fileProject.exists()) { if (fileProject != null && fileProject.exists()) {
project = fileProject; project = fileProject;
} }
} }
DataSourceRegistry dataSourceRegistry = DBeaverCore.getInstance().getProjectRegistry().getDataSourceRegistry(project); DBPDataSourceRegistry dataSourceRegistry = DBWorkbench.getPlatform().getProjectManager().getDataSourceRegistry(project);
return dataSourceRegistry == null ? null : dataSourceRegistry.getDataSource(dataSourceId); return dataSourceRegistry == null ? null : dataSourceRegistry.getDataSource(dataSourceId);
} else { } else {
// Try to extract from embedded comment // Try to extract from embedded comment
...@@ -211,7 +201,7 @@ public class EditorUtils { ...@@ -211,7 +201,7 @@ public class EditorUtils {
} }
} }
public static void setInputDataSource(@NotNull IEditorInput editorInput, @Nullable DBPDataSourceContainer dataSourceContainer, boolean notify) public static void setInputDataSource(@NotNull IEditorInput editorInput, @Nullable DBPDataSourceContainer dataSourceContainer)
{ {
if (editorInput instanceof INonPersistentEditorInput) { if (editorInput instanceof INonPersistentEditorInput) {
((INonPersistentEditorInput) editorInput).setProperty(PROP_SQL_DATA_SOURCE_CONTAINER, dataSourceContainer); ((INonPersistentEditorInput) editorInput).setProperty(PROP_SQL_DATA_SOURCE_CONTAINER, dataSourceContainer);
...@@ -219,19 +209,19 @@ public class EditorUtils { ...@@ -219,19 +209,19 @@ public class EditorUtils {
} }
IFile file = getFileFromInput(editorInput); IFile file = getFileFromInput(editorInput);
if (file != null) { if (file != null) {
setFileDataSource(file, dataSourceContainer, notify); setFileDataSource(file, dataSourceContainer);
} else { } else {
File localFile = getLocalFileFromInput(editorInput); File localFile = getLocalFileFromInput(editorInput);
if (localFile != null) { if (localFile != null) {
setFileDataSource(dataSourceContainer, localFile); setFileDataSource(localFile, dataSourceContainer);
} else { } else {
log.error("Can't set datasource for input " + editorInput); log.error("Can't set datasource for input " + editorInput);
} }
} }
} }
private static void setFileDataSource(@Nullable DBPDataSourceContainer dataSourceContainer, File localFile) { private static void setFileDataSource(File localFile, @Nullable DBPDataSourceContainer dataSourceContainer) {
final DBPExternalFileManager efManager = DBeaverCore.getInstance().getExternalFileManager(); final DBPExternalFileManager efManager = DBWorkbench.getPlatform().getExternalFileManager();
efManager.setFileProperty( efManager.setFileProperty(
localFile, localFile,
PROP_SQL_PROJECT_ID, PROP_SQL_PROJECT_ID,
...@@ -243,18 +233,10 @@ public class EditorUtils { ...@@ -243,18 +233,10 @@ public class EditorUtils {
} }
public static void setFileDataSource(@NotNull IFile file, @Nullable DBPDataSourceContainer dataSourceContainer) public static void setFileDataSource(@NotNull IFile file, @Nullable DBPDataSourceContainer dataSourceContainer)
{
setFileDataSource(file, dataSourceContainer, false);
}
public static void setFileDataSource(@NotNull IFile file, @Nullable DBPDataSourceContainer dataSourceContainer, boolean notify)
{ {
try { try {
file.setPersistentProperty(QN_DATA_SOURCE_ID, dataSourceContainer == null ? null : dataSourceContainer.getId()); file.setPersistentProperty(QN_DATA_SOURCE_ID, dataSourceContainer == null ? null : dataSourceContainer.getId());
file.setPersistentProperty(QN_PROJECT_ID, dataSourceContainer == null ? null : dataSourceContainer.getRegistry().getProject().getName()); file.setPersistentProperty(QN_PROJECT_ID, dataSourceContainer == null ? null : dataSourceContainer.getRegistry().getProject().getName());
if (notify) {
NavigatorUtils.refreshNavigatorResource(file, dataSourceContainer);
}
} catch (CoreException e) { } catch (CoreException e) {
log.error("Internal error while writing file property", e); log.error("Internal error while writing file property", e);
} }
......
...@@ -21,10 +21,10 @@ import org.eclipse.ui.IElementFactory; ...@@ -21,10 +21,10 @@ import org.eclipse.ui.IElementFactory;
import org.eclipse.ui.IMemento; import org.eclipse.ui.IMemento;
import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.navigator.DBNModel; import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.ui.editors.entity.NodeEditorInput; import org.jkiss.dbeaver.ui.editors.entity.NodeEditorInput;
public class NodeEditorInputFactory implements IElementFactory public class NodeEditorInputFactory implements IElementFactory
...@@ -48,7 +48,7 @@ public class NodeEditorInputFactory implements IElementFactory ...@@ -48,7 +48,7 @@ public class NodeEditorInputFactory implements IElementFactory
if (nodePath == null) { if (nodePath == null) {
return null; return null;
} }
final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel(); final DBNModel navigatorModel = DBWorkbench.getPlatform().getNavigatorModel();
try { try {
final DBNNode node = navigatorModel.getNodeByPath(new VoidProgressMonitor(), nodePath); final DBNNode node = navigatorModel.getNodeByPath(new VoidProgressMonitor(), nodePath);
......
...@@ -107,6 +107,7 @@ import org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationDescriptor; ...@@ -107,6 +107,7 @@ import org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationDescriptor;
import org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationPanelDescriptor; import org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationPanelDescriptor;
import org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationRegistry; import org.jkiss.dbeaver.ui.editors.sql.registry.SQLPresentationRegistry;
import org.jkiss.dbeaver.ui.editors.text.ScriptPositionColumn; import org.jkiss.dbeaver.ui.editors.text.ScriptPositionColumn;
import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
import org.jkiss.dbeaver.ui.views.SQLResultsView; import org.jkiss.dbeaver.ui.views.SQLResultsView;
import org.jkiss.dbeaver.ui.views.plan.ExplainPlanViewer; import org.jkiss.dbeaver.ui.views.plan.ExplainPlanViewer;
import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.GeneralUtils;
...@@ -300,7 +301,11 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -300,7 +301,11 @@ public class SQLEditor extends SQLEditorBase implements
} }
IEditorInput input = getEditorInput(); IEditorInput input = getEditorInput();
if (input != null) { if (input != null) {
EditorUtils.setInputDataSource(input, container, true); EditorUtils.setInputDataSource(input, container);
IFile file = EditorUtils.getFileFromInput(input);
if (file != null) {
NavigatorUtils.refreshNavigatorResource(file, container);
}
} }
checkConnected(false, status -> UIUtils.asyncExec(() -> { checkConnected(false, status -> UIUtils.asyncExec(() -> {
...@@ -317,7 +322,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -317,7 +322,7 @@ public class SQLEditor extends SQLEditorBase implements
dataSourceContainer.acquire(this); dataSourceContainer.acquire(this);
} }
if (EditorUtils.isWriteEmbeddedBinding()) { if (SQLEditorBase.isWriteEmbeddedBinding()) {
// Patch connection reference // Patch connection reference
UIUtils.syncExec(this::embedDataSourceAssociation); UIUtils.syncExec(this::embedDataSourceAssociation);
} }
...@@ -327,7 +332,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -327,7 +332,7 @@ public class SQLEditor extends SQLEditorBase implements
private void updateDataSourceContainer() { private void updateDataSourceContainer() {
DBPDataSourceContainer inputDataSource = null; DBPDataSourceContainer inputDataSource = null;
if (EditorUtils.isReadEmbeddedBinding()) { if (SQLEditorBase.isReadEmbeddedBinding()) {
// Try to get datasource from contents (always, no matter what ) // Try to get datasource from contents (always, no matter what )
inputDataSource = getDataSourceFromContent(); inputDataSource = getDataSourceFromContent();
} }
...@@ -2008,7 +2013,7 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -2008,7 +2013,7 @@ public class SQLEditor extends SQLEditorBase implements
IFileStore fileStore = EFS.getStore(saveFile.toURI()); IFileStore fileStore = EFS.getStore(saveFile.toURI());
IEditorInput input = new FileStoreEditorInput(fileStore); IEditorInput input = new FileStoreEditorInput(fileStore);
EditorUtils.setInputDataSource(input, getDataSourceContainer(), false); EditorUtils.setInputDataSource(input, getDataSourceContainer());
init(getEditorSite(), input); init(getEditorSite(), input);
} catch (CoreException e) { } catch (CoreException e) {
......
...@@ -49,6 +49,7 @@ import org.jkiss.dbeaver.ModelPreferences; ...@@ -49,6 +49,7 @@ import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.core.CoreCommands; import org.jkiss.dbeaver.core.CoreCommands;
import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverActivator;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect; import org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect;
...@@ -168,6 +169,14 @@ public abstract class SQLEditorBase extends BaseTextEditor implements IErrorVisu ...@@ -168,6 +169,14 @@ public abstract class SQLEditorBase extends BaseTextEditor implements IErrorVisu
return false; return false;
} }
static boolean isReadEmbeddedBinding() {
return DBWorkbench.getPlatform().getPreferenceStore().getBoolean(SQLPreferenceConstants.SCRIPT_BIND_EMBEDDED_READ);
}
static boolean isWriteEmbeddedBinding() {
return DBWorkbench.getPlatform().getPreferenceStore().getBoolean(SQLPreferenceConstants.SCRIPT_BIND_EMBEDDED_WRITE);
}
protected void handleInputChange(IEditorInput input) { protected void handleInputChange(IEditorInput input) {
if (isBigScript(input)) { if (isBigScript(input)) {
uninstallOccurrencesFinder(); uninstallOccurrencesFinder();
......
...@@ -270,7 +270,7 @@ public class OpenHandler extends AbstractDataSourceHandler { ...@@ -270,7 +270,7 @@ public class OpenHandler extends AbstractDataSourceHandler {
} }
public static SQLEditor openSQLConsole(IWorkbenchWindow workbenchWindow, DBPDataSourceContainer dataSourceContainer, IEditorInput sqlInput) { public static SQLEditor openSQLConsole(IWorkbenchWindow workbenchWindow, DBPDataSourceContainer dataSourceContainer, IEditorInput sqlInput) {
EditorUtils.setInputDataSource(sqlInput, dataSourceContainer, false); EditorUtils.setInputDataSource(sqlInput, dataSourceContainer);
return openSQLEditor(workbenchWindow, sqlInput); return openSQLEditor(workbenchWindow, sqlInput);
} }
......
...@@ -30,6 +30,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode; ...@@ -30,6 +30,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.navigator.DBNResource; import org.jkiss.dbeaver.model.navigator.DBNResource;
import org.jkiss.dbeaver.ui.dialogs.connection.SelectDataSourceDialog; import org.jkiss.dbeaver.ui.dialogs.connection.SelectDataSourceDialog;
import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.EditorUtils;
import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.dbeaver.utils.RuntimeUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -61,7 +62,8 @@ public class NavigatorHandlerAssociateScript extends NavigatorHandlerObjectBase ...@@ -61,7 +62,8 @@ public class NavigatorHandlerAssociateScript extends NavigatorHandlerObjectBase
} }
DBPDataSourceContainer dataSource = dialog.getDataSource(); DBPDataSourceContainer dataSource = dialog.getDataSource();
for (IFile script : scripts) { for (IFile script : scripts) {
EditorUtils.setFileDataSource(script, dataSource, true); EditorUtils.setFileDataSource(script, dataSource);
NavigatorUtils.refreshNavigatorResource(script, dataSource);
} }
} }
return null; return null;
......
...@@ -699,7 +699,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven ...@@ -699,7 +699,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven
// Register as datasource listener in all datasources // Register as datasource listener in all datasources
// We need it because at this moment there could be come already loaded registries (on startup) // We need it because at this moment there could be come already loaded registries (on startup)
DataSourceProviderRegistry.getInstance().addDataSourceRegistryListener(DataSourceManagementToolbar.this); DataSourceProviderRegistry.getInstance().addDataSourceRegistryListener(DataSourceManagementToolbar.this);
for (DataSourceRegistry registry : DataSourceRegistry.getAllRegistries()) { for (DBPDataSourceRegistry registry : DBUtils.getAllRegistries()) {
handleRegistryLoad(registry); handleRegistryLoad(registry);
} }
......
...@@ -31,7 +31,7 @@ import org.jkiss.dbeaver.debug.DBGException; ...@@ -31,7 +31,7 @@ import org.jkiss.dbeaver.debug.DBGException;
import org.jkiss.dbeaver.debug.core.model.DatabaseDebugTarget; import org.jkiss.dbeaver.debug.core.model.DatabaseDebugTarget;
import org.jkiss.dbeaver.debug.core.model.DatabaseProcess; import org.jkiss.dbeaver.debug.core.model.DatabaseProcess;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.GeneralUtils;
import java.util.Map; import java.util.Map;
...@@ -42,7 +42,7 @@ public class DatabaseLaunchDelegate extends LaunchConfigurationDelegate { ...@@ -42,7 +42,7 @@ public class DatabaseLaunchDelegate extends LaunchConfigurationDelegate {
public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
throws CoreException { throws CoreException {
String datasourceId = configuration.getAttribute(DBGConstants.ATTR_DATASOURCE_ID, (String)null); String datasourceId = configuration.getAttribute(DBGConstants.ATTR_DATASOURCE_ID, (String)null);
DBPDataSourceContainer datasourceDescriptor = DataSourceRegistry.findDataSource(datasourceId); DBPDataSourceContainer datasourceDescriptor = DBUtils.findDataSource(datasourceId);
if (datasourceDescriptor == null) { if (datasourceDescriptor == null) {
String message = NLS.bind("Unable to find data source with id {0}", datasourceId); String message = NLS.bind("Unable to find data source with id {0}", datasourceId);
throw new CoreException(DebugUtils.newErrorStatus(message)); throw new CoreException(DebugUtils.newErrorStatus(message));
......
...@@ -26,7 +26,7 @@ import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate; ...@@ -26,7 +26,7 @@ import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate;
import org.jkiss.dbeaver.debug.DBGConstants; import org.jkiss.dbeaver.debug.DBGConstants;
import org.jkiss.dbeaver.debug.core.DebugUtils; import org.jkiss.dbeaver.debug.core.DebugUtils;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.model.DBUtils;
public class DBGSourcePathComputer implements ISourcePathComputerDelegate { public class DBGSourcePathComputer implements ISourcePathComputerDelegate {
...@@ -34,7 +34,7 @@ public class DBGSourcePathComputer implements ISourcePathComputerDelegate { ...@@ -34,7 +34,7 @@ public class DBGSourcePathComputer implements ISourcePathComputerDelegate {
public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor) public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor)
throws CoreException { throws CoreException {
String datasourceId = configuration.getAttribute(DBGConstants.ATTR_DATASOURCE_ID, ""); String datasourceId = configuration.getAttribute(DBGConstants.ATTR_DATASOURCE_ID, "");
DBPDataSourceContainer dataSource = DataSourceRegistry.findDataSource(datasourceId); DBPDataSourceContainer dataSource = DBUtils.findDataSource(datasourceId);
if (dataSource == null) { if (dataSource == null) {
throw new CoreException(DebugUtils.newErrorStatus("Can't find datasource " + datasourceId)); throw new CoreException(DebugUtils.newErrorStatus("Can't find datasource " + datasourceId));
} }
......
...@@ -39,6 +39,7 @@ import org.jkiss.dbeaver.debug.ui.internal.DebugConfigurationPanelRegistry; ...@@ -39,6 +39,7 @@ import org.jkiss.dbeaver.debug.ui.internal.DebugConfigurationPanelRegistry;
import org.jkiss.dbeaver.debug.ui.internal.DebugUIMessages; import org.jkiss.dbeaver.debug.ui.internal.DebugUIMessages;
import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext; import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.registry.DataSourceRegistry;
import org.jkiss.dbeaver.runtime.RunnableContextDelegate; import org.jkiss.dbeaver.runtime.RunnableContextDelegate;
...@@ -204,7 +205,7 @@ public class DatabaseDebugConfigurationTab extends AbstractLaunchConfigurationTa ...@@ -204,7 +205,7 @@ public class DatabaseDebugConfigurationTab extends AbstractLaunchConfigurationTa
this.currentConfiguration = configuration; this.currentConfiguration = configuration;
try { try {
String dsId = configuration.getAttribute(DBGConstants.ATTR_DATASOURCE_ID, (String) null); String dsId = configuration.getAttribute(DBGConstants.ATTR_DATASOURCE_ID, (String) null);
DBPDataSourceContainer dataSource = DataSourceRegistry.findDataSource(dsId); DBPDataSourceContainer dataSource = DBUtils.findDataSource(dsId);
connectionCombo.select(dataSource); connectionCombo.select(dataSource);
if (dataSource != null) { if (dataSource != null) {
driverText.setText(dataSource.getDriver().getFullName()); driverText.setText(dataSource.getDriver().getFullName());
......
...@@ -20,6 +20,7 @@ import org.eclipse.core.resources.IProject; ...@@ -20,6 +20,7 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindow;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.connection.DBPConnectionType; import org.jkiss.dbeaver.model.connection.DBPConnectionType;
import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.registry.DataSourceDescriptor;
...@@ -60,7 +61,7 @@ public class WorkbenchInitializerCreateSampleDatabase implements IWorkbenchWindo ...@@ -60,7 +61,7 @@ public class WorkbenchInitializerCreateSampleDatabase implements IWorkbenchWindo
// No active project // No active project
return; return;
} }
if (DataSourceRegistry.findDataSource(SAMPLE_DB1_ID) != null) { if (DBUtils.findDataSource(SAMPLE_DB1_ID) != null) {
// Already exist // Already exist
return; return;
} }
......
...@@ -24,6 +24,7 @@ import org.jkiss.dbeaver.DBException; ...@@ -24,6 +24,7 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.app.DBPProjectManager;
import org.jkiss.dbeaver.model.data.*; import org.jkiss.dbeaver.model.data.*;
import org.jkiss.dbeaver.model.exec.*; import org.jkiss.dbeaver.model.exec.*;
import org.jkiss.dbeaver.model.impl.data.DBDValueError; import org.jkiss.dbeaver.model.impl.data.DBDValueError;
...@@ -35,6 +36,7 @@ import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; ...@@ -35,6 +36,7 @@ import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.sql.*; import org.jkiss.dbeaver.model.sql.*;
import org.jkiss.dbeaver.model.struct.*; import org.jkiss.dbeaver.model.struct.*;
import org.jkiss.dbeaver.model.struct.rdb.*; import org.jkiss.dbeaver.model.struct.rdb.*;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.runtime.jobs.InvalidateJob; import org.jkiss.dbeaver.runtime.jobs.InvalidateJob;
import org.jkiss.dbeaver.runtime.ui.DBUserInterface; import org.jkiss.dbeaver.runtime.ui.DBUserInterface;
import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.dbeaver.utils.GeneralUtils;
...@@ -1667,4 +1669,34 @@ public final class DBUtils { ...@@ -1667,4 +1669,34 @@ public final class DBUtils {
} }
return null; return null;
} }
public static List<DBPDataSourceRegistry> getAllRegistries() {
List<DBPDataSourceRegistry> result = new ArrayList<>();
for (IProject project : DBWorkbench.getPlatform().getLiveProjects()) {
if (project.isOpen()) {
DBPDataSourceRegistry registry = DBWorkbench.getPlatform().getProjectManager().getDataSourceRegistry(project);
if (registry != null) {
result.add(registry);
}
}
}
return result;
}
/**
* Find data source in all available registries
*/
public static DBPDataSourceContainer findDataSource(String dataSourceId) {
DBPProjectManager projectRegistry = DBWorkbench.getPlatform().getProjectManager();
for (IProject project : DBWorkbench.getPlatform().getLiveProjects()) {
DBPDataSourceRegistry dataSourceRegistry = projectRegistry.getDataSourceRegistry(project);
if (dataSourceRegistry != null) {
DBPDataSourceContainer dataSourceContainer = dataSourceRegistry.getDataSource(dataSourceId);
if (dataSourceContainer != null) {
return dataSourceContainer;
}
}
}
return null;
}
} }
...@@ -20,6 +20,7 @@ package org.jkiss.dbeaver.model.app; ...@@ -20,6 +20,7 @@ package org.jkiss.dbeaver.model.app;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspace;
import org.jkiss.code.NotNull; import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.DBPExternalFileManager;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.data.DBDRegistry; import org.jkiss.dbeaver.model.data.DBDRegistry;
import org.jkiss.dbeaver.model.edit.DBERegistry; import org.jkiss.dbeaver.model.edit.DBERegistry;
...@@ -83,6 +84,9 @@ public interface DBPPlatform ...@@ -83,6 +84,9 @@ public interface DBPPlatform
@NotNull @NotNull
DBASecureStorage getSecureStorage(); DBASecureStorage getSecureStorage();
@NotNull
DBPExternalFileManager getExternalFileManager();
@NotNull @NotNull
File getTempFolder(DBRProgressMonitor monitor, String name) throws IOException; File getTempFolder(DBRProgressMonitor monitor, String name) throws IOException;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册