提交 31dbb5a4 编写于 作者: J jurgen

Navigator model refactoring

上级 aea2d4db
......@@ -291,6 +291,7 @@ public class DBeaverCore implements DBPApplication {
log.debug("Shutdown completed in " + (System.currentTimeMillis() - startTime) + "ms");
}
@Override
public IWorkspace getWorkspace()
{
return workspace;
......
......@@ -18,6 +18,7 @@
package org.jkiss.dbeaver.model;
import org.eclipse.core.resources.IWorkspace;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.navigator.DBNModel;
......@@ -29,5 +30,6 @@ public interface DBPApplication
@NotNull
DBNModel getNavigatorModel();
IWorkspace getWorkspace();
}
......@@ -19,6 +19,7 @@
package org.jkiss.dbeaver.model;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import java.util.Collection;
......@@ -63,6 +64,8 @@ public interface DBPDriver extends DBPObject
boolean isCustomDriverLoader();
DBXTreeNode getNavigatorRoot();
Collection<DBPPropertyDescriptor> getConnectionPropertyDescriptors();
Map<Object, Object> getDefaultConnectionProperties();
......
......@@ -26,13 +26,12 @@ import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBIconComposite;
import org.jkiss.dbeaver.model.DBPEvent;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration;
import org.jkiss.dbeaver.model.runtime.DBRProgressListener;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.utils.CommonUtils;
import java.util.Collection;
......@@ -45,11 +44,11 @@ public class DBNDataSource extends DBNDatabaseNode implements IAdaptable
private final DBSDataSourceContainer dataSource;
private DBXTreeNode treeRoot;
public DBNDataSource(DBNNode parentNode, DataSourceDescriptor dataSource)
public DBNDataSource(@NotNull DBNNode parentNode, @NotNull DBSDataSourceContainer dataSource)
{
super(parentNode);
this.dataSource = dataSource;
this.treeRoot = dataSource.getDriver().getProviderDescriptor().getTreeDescriptor();
this.treeRoot = dataSource.getDriver().getNavigatorRoot();
DBNModel.getInstance().addNode(this, false);
}
......
......@@ -23,14 +23,13 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.runtime.DBRProgressListener;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.*;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeFolder;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeItem;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeObject;
import org.jkiss.dbeaver.model.runtime.DBRProgressListener;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.*;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.BeanUtils;
import org.jkiss.utils.CommonUtils;
......@@ -498,7 +497,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
public DBSDataSourceContainer getDataSourceContainer()
{
DBPDataSource dataSource = getDataSource();
return dataSource == null ? null : (DataSourceDescriptor) dataSource.getContainer();
return dataSource == null ? null : dataSource.getContainer();
}
public DBPDataSource getDataSource() {
......
......@@ -18,11 +18,11 @@
package org.jkiss.dbeaver.model.navigator;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
......@@ -117,7 +117,7 @@ public class DBNLocalFolder extends DBNNode implements DBNContainer
@Override
public Class<? extends DBSObject> getChildrenClass()
{
return DataSourceDescriptor.class;
return DBSDataSourceContainer.class;
}
@Override
......
......@@ -20,14 +20,10 @@ package org.jkiss.dbeaver.model.navigator;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBPEvent;
import org.jkiss.dbeaver.model.DBPEventListener;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer;
import org.jkiss.utils.CommonUtils;
import java.lang.reflect.InvocationTargetException;
......@@ -39,18 +35,18 @@ import java.util.*;
public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEventListener
{
private List<DBNDataSource> dataSources = new ArrayList<DBNDataSource>();
private DataSourceRegistry dataSourceRegistry;
private DBPDataSourceRegistry dataSourceRegistry;
private volatile List<DBNNode> children;
private final List<DBNLocalFolder> folders = new ArrayList<DBNLocalFolder>();
public DBNProjectDatabases(DBNProject parentNode, DataSourceRegistry dataSourceRegistry)
public DBNProjectDatabases(DBNProject parentNode, DBPDataSourceRegistry dataSourceRegistry)
{
super(parentNode);
this.dataSourceRegistry = dataSourceRegistry;
this.dataSourceRegistry.addDataSourceListener(this);
List<DataSourceDescriptor> projectDataSources = this.dataSourceRegistry.getDataSources();
for (DataSourceDescriptor ds : projectDataSources) {
List<? extends DBSDataSourceContainer> projectDataSources = this.dataSourceRegistry.getDataSources();
for (DBSDataSourceContainer ds : projectDataSources) {
addDataSource(ds, false);
}
}
......@@ -77,7 +73,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
return "connections";
}
public DataSourceRegistry getDataSourceRegistry()
public DBPDataSourceRegistry getDataSourceRegistry()
{
return dataSourceRegistry;
}
......@@ -95,9 +91,9 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
}
@Override
public Class<DataSourceDescriptor> getChildrenClass()
public Class<DBSDataSourceContainer> getChildrenClass()
{
return DataSourceDescriptor.class;
return DBSDataSourceContainer.class;
}
@Override
......@@ -200,7 +196,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
return null;
}
private DBNDataSource addDataSource(DataSourceDescriptor descriptor, boolean reflect)
private DBNDataSource addDataSource(DBSDataSourceContainer descriptor, boolean reflect)
{
DBNDataSource newNode = new DBNDataSource(this, descriptor);
dataSources.add(newNode);
......@@ -211,7 +207,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
return newNode;
}
void removeDataSource(DataSourceDescriptor descriptor)
void removeDataSource(DBSDataSourceContainer descriptor)
{
DBNDataSource removedNode = null;
for (Iterator<DBNDataSource> iter = dataSources.iterator(); iter.hasNext(); ) {
......@@ -233,8 +229,8 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
{
switch (event.getAction()) {
case OBJECT_ADD:
if (event.getObject() instanceof DataSourceDescriptor) {
addDataSource((DataSourceDescriptor) event.getObject(), true);
if (event.getObject() instanceof DBSDataSourceContainer) {
addDataSource((DBSDataSourceContainer) event.getObject(), true);
} else if (DBNModel.getInstance().getNodeByObject(event.getObject()) == null) {
final DBNDatabaseNode parentNode = DBNModel.getInstance().getParentNode(event.getObject());
......@@ -266,8 +262,8 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
}
break;
case OBJECT_REMOVE:
if (event.getObject() instanceof DataSourceDescriptor) {
removeDataSource((DataSourceDescriptor) event.getObject());
if (event.getObject() instanceof DBSDataSourceContainer) {
removeDataSource((DBSDataSourceContainer) event.getObject());
} else {
final DBNDatabaseNode node = DBNModel.getInstance().getNodeByObject(event.getObject());
if (node != null && node.getParentNode() instanceof DBNDatabaseNode) {
......
......@@ -35,6 +35,7 @@ import org.jkiss.dbeaver.core.Log;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.impl.AbstractDescriptor;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
......@@ -573,6 +574,11 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver
return customDriverLoader;
}
@Override
public DBXTreeNode getNavigatorRoot() {
return providerDescriptor.getTreeDescriptor();
}
public void setCustomDriverLoader(boolean customDriverLoader)
{
this.customDriverLoader = customDriverLoader;
......
......@@ -28,14 +28,14 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.ui.resources.AbstractResourceHandler;
import org.jkiss.dbeaver.model.navigator.*;
import org.jkiss.dbeaver.model.runtime.DBRProgressListener;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen;
import org.jkiss.dbeaver.ui.resources.AbstractResourceHandler;
import org.jkiss.dbeaver.utils.ContentUtils;
import org.jkiss.utils.CommonUtils;
......@@ -102,7 +102,7 @@ public class BookmarksHandlerImpl extends AbstractResourceHandler {
}
final BookmarkStorage storage = new BookmarkStorage((IFile) resource, false);
try {
final DataSourceDescriptor dataSourceContainer = projectNode.getDatabases().getDataSourceRegistry().getDataSource(storage.getDataSourceId());
final DBSDataSourceContainer dataSourceContainer = projectNode.getDatabases().getDataSourceRegistry().getDataSource(storage.getDataSourceId());
if (dataSourceContainer == null) {
throw new DBException("Can't find datasource '" + storage.getDataSourceId() + "'"); //$NON-NLS-2$
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册