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