提交 8be9b259 编写于 作者: J jurgen

Model refactoring

上级 3ba6086d
......@@ -24,6 +24,7 @@ import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPApplication;
import org.jkiss.dbeaver.model.DBPPreferenceStore;
import org.jkiss.dbeaver.model.DBPProjectManager;
import org.jkiss.dbeaver.registry.PluginServiceRegistry;
import org.jkiss.dbeaver.runtime.IPluginService;
import org.jkiss.dbeaver.runtime.net.GlobalProxyAuthenticator;
......@@ -175,7 +176,7 @@ public class DBeaverCore implements DBPApplication {
initializeProjects();
// Navigator model
this.navigatorModel = new DBNModel();
this.navigatorModel = new DBNModel(this);
this.navigatorModel.initialize();
// Activate plugin services
......@@ -297,6 +298,11 @@ public class DBeaverCore implements DBPApplication {
return workspace;
}
@Override
public DBPProjectManager getProjectManager() {
return getProjectRegistry();
}
/**
* Returns configuration file
*/
......
......@@ -18,10 +18,13 @@
package org.jkiss.dbeaver.model;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import java.util.Collection;
/**
* DBPApplication
*/
......@@ -32,4 +35,7 @@ public interface DBPApplication
IWorkspace getWorkspace();
DBPProjectManager getProjectManager();
Collection<IProject> getLiveProjects();
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.model;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.jkiss.dbeaver.model.project.DBPProjectListener;
import org.jkiss.dbeaver.model.project.DBPResourceHandler;
/**
* ProjectManager
*/
public interface DBPProjectManager
{
DBPResourceHandler getResourceHandler(IResource resource);
IProject getActiveProject();
void setActiveProject(IProject project);
void addProject(IProject project);
void removeProject(IProject project);
void addProjectListener(DBPProjectListener listener);
void removeProjectListener(DBPProjectListener listener);
DBPDataSourceRegistry getDataSourceRegistry(IProject project);
}
......@@ -49,7 +49,7 @@ public class DBNDataSource extends DBNDatabaseNode implements IAdaptable
super(parentNode);
this.dataSource = dataSource;
this.treeRoot = dataSource.getDriver().getNavigatorRoot();
DBNModel.getInstance().addNode(this, false);
registerNode();
}
@Override
......@@ -68,7 +68,7 @@ public class DBNDataSource extends DBNDatabaseNode implements IAdaptable
@Override
protected void dispose(boolean reflect)
{
DBNModel.getInstance().removeNode(this, reflect);
unregisterNode(reflect);
super.dispose(reflect);
}
......
......@@ -45,13 +45,13 @@ public class DBNDatabaseFolder extends DBNDatabaseNode implements DBNContainer,
{
super(parent);
this.meta = meta;
DBNModel.getInstance().addNode(this);
registerNode();
}
@Override
protected void dispose(boolean reflect)
{
DBNModel.getInstance().removeNode(this, reflect);
unregisterNode(reflect);
super.dispose(reflect);
}
......
......@@ -34,7 +34,7 @@ public class DBNDatabaseItem extends DBNDatabaseNode
super(parent);
this.meta = meta;
this.object = object;
DBNModel.getInstance().addNode(this, reflect);
registerNode();
}
@Override
......@@ -46,9 +46,7 @@ public class DBNDatabaseItem extends DBNDatabaseNode
@Override
protected void dispose(boolean reflect)
{
// Notify model
// Reflect changes only if underlying object is not persisted
DBNModel.getInstance().removeNode(this, reflect);
unregisterNode(reflect);
this.object = null;
super.dispose(reflect);
}
......@@ -61,9 +59,9 @@ public class DBNDatabaseItem extends DBNDatabaseNode
@Override
protected void reloadObject(DBRProgressMonitor monitor, DBSObject object) {
DBNModel.getInstance().removeNode(this, false);
unregisterNode(false);
this.object = object;
DBNModel.getInstance().addNode(this, false);
registerNode();
}
@Override
......
......@@ -52,6 +52,20 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
super(parentNode);
}
protected void registerNode() {
DBNModel model = getModel();
if (model != null) {
model.addNode(this);
}
}
protected void unregisterNode(boolean reflect) {
DBNModel model = getModel();
if (model != null) {
model.removeNode(this, reflect);
}
}
@Override
void dispose(boolean reflect)
{
......@@ -178,7 +192,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
synchronized (this) {
childNodes.add(newChild);
}
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.ADD, DBNEvent.NodeChange.LOAD, newChild));
getModel().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.ADD, DBNEvent.NodeChange.LOAD, newChild));
} else {
log.error("Cannot add child item to " + getNodeName() + ". Conditions doesn't met"); //$NON-NLS-1$ //$NON-NLS-2$
}
......@@ -262,7 +276,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
return;
}
this.locked = true;
DBNModel model = DBNModel.getInstance();
DBNModel model = getModel();
try {
model.fireNodeUpdate(source, this, DBNEvent.NodeChange.LOCK);
......@@ -361,7 +375,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
monitor.done();
if (filtered) {
DBNModel.getInstance().fireNodeUpdate(this, this, DBNEvent.NodeChange.REFRESH);
getModel().fireNodeUpdate(this, this, DBNEvent.NodeChange.REFRESH);
}
}
......@@ -449,7 +463,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
// Refresh children recursive
oldChild.reloadChildren(monitor);
}
DBNModel.getInstance().fireNodeUpdate(this, oldChild, DBNEvent.NodeChange.REFRESH);
getModel().fireNodeUpdate(this, oldChild, DBNEvent.NodeChange.REFRESH);
toList.add(oldChild);
added = true;
......
......@@ -37,13 +37,13 @@ public class DBNDatabaseObject extends DBNDatabaseNode implements DBSObject
{
super(parent);
this.meta = meta;
DBNModel.getInstance().addNode(this);
registerNode();
}
@Override
protected void dispose(boolean reflect)
{
DBNModel.getInstance().removeNode(this, reflect);
unregisterNode(reflect);
super.dispose(reflect);
}
......
......@@ -23,15 +23,14 @@ import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.Log;
import org.jkiss.dbeaver.model.DBIconComposite;
import org.jkiss.dbeaver.model.DBPApplication;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeFolder;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.model.struct.DBSObjectState;
import org.jkiss.dbeaver.registry.ProjectRegistry;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeFolder;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
......@@ -51,18 +50,18 @@ import java.util.Map;
public class DBNModel implements IResourceChangeListener {
static final Log log = Log.getLog(DBNModel.class);
private final DBPApplication application;
private DBNRoot root;
private final List<INavigatorListener> listeners = new ArrayList<INavigatorListener>();
private transient INavigatorListener[] listenersCopy = null;
private final Map<DBSObject, Object> nodeMap = new HashMap<DBSObject, Object>();
public DBNModel()
{
public DBNModel(DBPApplication application) {
this.application = application;
}
public static DBNModel getInstance()
{
return DBeaverCore.getInstance().getNavigatorModel();
public DBPApplication getApplication() {
return application;
}
public void initialize()
......@@ -70,25 +69,19 @@ public class DBNModel implements IResourceChangeListener {
if (this.root != null) {
throw new IllegalStateException("Can't initialize navigator model more than once");
}
this.root = new DBNRoot();
this.root = new DBNRoot(this);
// Add all existing projects to root node
final DBeaverCore core = DBeaverCore.getInstance();
for (IProject project : core.getLiveProjects()) {
for (IProject project : application.getLiveProjects()) {
root.addProject(project, false);
}
/*
for (DataSourceDescriptor dataSource : registry.getDataSources()) {
root.addProject(dataSource);
}
*/
core.getWorkspace().addResourceChangeListener(this);
application.getWorkspace().addResourceChangeListener(this);
}
public void dispose()
{
DBeaverCore.getInstance().getWorkspace().removeResourceChangeListener(this);
application.getWorkspace().removeResourceChangeListener(this);
this.root.dispose(false);
synchronized (nodeMap) {
this.nodeMap.clear();
......@@ -193,7 +186,7 @@ public class DBNModel implements IResourceChangeListener {
@Nullable
public DBNDataSource getDataSourceByPath(String path) throws DBException
{
DBNProject project = getRoot().getProject(getProjectRegistry().getActiveProject());
DBNProject project = getRoot().getProject(application.getProjectManager().getActiveProject());
if (project == null) {
log.debug("Project node not found");
return null;
......@@ -204,7 +197,7 @@ public class DBNModel implements IResourceChangeListener {
@Nullable
public DBNNode getNodeByPath(DBRProgressMonitor monitor, String path) throws DBException
{
DBNProject project = getRoot().getProject(getProjectRegistry().getActiveProject());
DBNProject project = getRoot().getProject(application.getProjectManager().getActiveProject());
if (project == null) {
log.debug("Project node not found");
return null;
......@@ -444,8 +437,8 @@ public class DBNModel implements IResourceChangeListener {
// New projectNode
getRoot().addProject(project, true);
if (getProjectRegistry().getActiveProject() == null) {
getProjectRegistry().setActiveProject(project);
if (application.getProjectManager().getActiveProject() == null) {
application.getProjectManager().setActiveProject(project);
}
} else {
// Project not found - report an error
......@@ -455,8 +448,8 @@ public class DBNModel implements IResourceChangeListener {
if (childDelta.getKind() == IResourceDelta.REMOVED) {
// Project deleted
getRoot().removeProject(project);
if (project == getProjectRegistry().getActiveProject()) {
getProjectRegistry().setActiveProject(null);
if (project == application.getProjectManager().getActiveProject()) {
application.getProjectManager().setActiveProject(null);
}
} else {
if (childDelta.getFlags() == IResourceDelta.OPEN) {
......@@ -503,8 +496,4 @@ public class DBNModel implements IResourceChangeListener {
}
}
private static ProjectRegistry getProjectRegistry() {
return DBeaverCore.getInstance().getProjectRegistry();
}
}
......@@ -36,7 +36,7 @@ public abstract class DBNNode implements DBPNamedObject, DBPPersistedObject
{
static final Log log = Log.getLog(DBNNode.class);
private DBNNode parentNode;
private final DBNNode parentNode;
protected DBNNode()
{
......@@ -55,17 +55,15 @@ public abstract class DBNNode implements DBPNamedObject, DBPPersistedObject
void dispose(boolean reflect)
{
this.parentNode = null;
}
public DBNNode getParentNode()
{
return parentNode;
public DBNModel getModel() {
return parentNode == null ? null : parentNode.getModel();
}
protected void setParentNode(DBNNode parentNode)
public DBNNode getParentNode()
{
this.parentNode = parentNode;
return parentNode;
}
public boolean isLocked()
......
......@@ -23,13 +23,12 @@ import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.project.DBPResourceHandler;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.DBIcon;
import java.util.ArrayList;
import java.util.List;
......@@ -42,7 +41,7 @@ public class DBNProject extends DBNResource implements IAdaptable
public DBNProject(DBNNode parentNode, IProject project, DBPResourceHandler handler)
{
super(parentNode, project, handler);
DBeaverCore.getInstance().getProjectRegistry().addProject(project);
getModel().getApplication().getProjectManager().addProject(project);
}
@Override
......@@ -50,7 +49,7 @@ public class DBNProject extends DBNResource implements IAdaptable
{
IProject project = getProject();
super.dispose(reflect);
DBeaverCore.getInstance().getProjectRegistry().removeProject(project);
getModel().getApplication().getProjectManager().removeProject(project);
}
public IProject getProject()
......@@ -109,7 +108,7 @@ public class DBNProject extends DBNResource implements IAdaptable
public boolean supportsRename()
{
// Do not rename active projects
return DBeaverCore.getInstance().getProjectRegistry().getActiveProject() != getProject();
return getModel().getApplication().getProjectManager().getActiveProject() != getProject();
}
@Override
......@@ -134,7 +133,7 @@ public class DBNProject extends DBNResource implements IAdaptable
throw new DBException("Can't open project '" + getProject().getName() + "'", e);
}
}
DataSourceRegistry dataSourceRegistry = DBeaverCore.getInstance().getProjectRegistry().getDataSourceRegistry(getProject());
DBPDataSourceRegistry dataSourceRegistry = getModel().getApplication().getProjectManager().getDataSourceRegistry(getProject());
List<DBNNode> children = super.readChildNodes(monitor);
if (dataSourceRegistry != null) {
children.add(0, new DBNProjectDatabases(this, dataSourceRegistry));
......
......@@ -18,7 +18,6 @@
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.*;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
......@@ -160,7 +159,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
public void refreshChildren()
{
this.children = null;
DBeaverCore.getInstance().getNavigatorModel().fireNodeUpdate(this, this, DBNEvent.NodeChange.STRUCT_REFRESH);
getModel().fireNodeUpdate(this, this, DBNEvent.NodeChange.STRUCT_REFRESH);
}
@Override
......@@ -202,7 +201,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
dataSources.add(newNode);
children = null;
if (reflect) {
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.ADD, newNode));
getModel().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.ADD, newNode));
}
return newNode;
}
......@@ -227,12 +226,13 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
@Override
public void handleDataSourceEvent(DBPEvent event)
{
DBNModel model = getModel();
switch (event.getAction()) {
case OBJECT_ADD:
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());
} else if (model.getNodeByObject(event.getObject()) == null) {
final DBNDatabaseNode parentNode = model.getParentNode(event.getObject());
if (parentNode != null) {
if (parentNode.getChildNodes() == null && parentNode.allowsChildren()) {
......@@ -265,7 +265,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
if (event.getObject() instanceof DBSDataSourceContainer) {
removeDataSource((DBSDataSourceContainer) event.getObject());
} else {
final DBNDatabaseNode node = DBNModel.getInstance().getNodeByObject(event.getObject());
final DBNDatabaseNode node = model.getNodeByObject(event.getObject());
if (node != null && node.getParentNode() instanceof DBNDatabaseNode) {
((DBNDatabaseNode)node.getParentNode()).removeChildItem(event.getObject());
}
......@@ -274,7 +274,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
case OBJECT_UPDATE:
case OBJECT_SELECT:
{
DBNNode dbmNode = DBNModel.getInstance().getNodeByObject(event.getObject());
DBNNode dbmNode = model.getNodeByObject(event.getObject());
if (dbmNode != null) {
DBNEvent.NodeChange nodeChange;
Boolean enabled = null;
......@@ -292,7 +292,7 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
nodeChange = DBNEvent.NodeChange.REFRESH;
}
}
DBNModel.getInstance().fireNodeUpdate(
model.fireNodeUpdate(
this,
dbmNode,
nodeChange);
......
......@@ -22,7 +22,6 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.meta.Property;
......@@ -63,7 +62,7 @@ public class DBNResource extends DBNNode
children = null;
}
if (reflect) {
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.REMOVE, this));
getModel().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.REMOVE, this));
}
}
super.dispose(reflect);
......@@ -147,7 +146,6 @@ public class DBNResource extends DBNNode
protected List<DBNNode> readChildNodes(DBRProgressMonitor monitor) throws DBException
{
//final ProjectRegistry projectRegistry = DBeaverCore.getInstance().getProjectRegistry();
List<DBNNode> result = new ArrayList<DBNNode>();
try {
IResource[] members = ((IContainer) resource).members();
......@@ -192,7 +190,7 @@ public class DBNResource extends DBNNode
// Sub folder
return handler.makeNavigatorNode(this, resource);
}
DBPResourceHandler resourceHandler = DBeaverCore.getInstance().getProjectRegistry().getResourceHandler(resource);
DBPResourceHandler resourceHandler = getModel().getApplication().getProjectManager().getResourceHandler(resource);
if (resourceHandler == null) {
log.debug("Skip resource '" + resource.getName() + "'");
return null;
......@@ -349,9 +347,10 @@ public class DBNResource extends DBNNode
void handleResourceChange(IResourceDelta delta)
{
DBNModel model = getModel();
if (delta.getKind() == IResourceDelta.CHANGED) {
// Update this node in navigator
DBNModel.getInstance().fireNodeEvent(new DBNEvent(delta, DBNEvent.Action.UPDATE, this));
model.fireNodeEvent(new DBNEvent(delta, DBNEvent.Action.UPDATE, this));
}
if (children == null) {
// Child nodes are not yet read so nothing to change here - just return
......@@ -366,7 +365,7 @@ public class DBNResource extends DBNNode
if (newChild != null) {
children.add(newChild);
sortChildren(children);
DBNModel.getInstance().fireNodeEvent(new DBNEvent(childDelta, DBNEvent.Action.ADD, newChild));
model.fireNodeEvent(new DBNEvent(childDelta, DBNEvent.Action.ADD, newChild));
if (childDelta.getKind() == IResourceDelta.CHANGED) {
// Notify just created resource
......
......@@ -19,7 +19,6 @@ package org.jkiss.dbeaver.model.navigator;
import org.eclipse.core.resources.IProject;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.project.DBPProjectListener;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
......@@ -31,12 +30,14 @@ import java.util.*;
*/
public class DBNRoot extends DBNNode implements DBNContainer, DBPProjectListener
{
private final DBNModel model;
private List<DBNProject> projects = new ArrayList<DBNProject>();
public DBNRoot()
public DBNRoot(DBNModel model)
{
super();
DBeaverCore.getInstance().getProjectRegistry().addProjectListener(this);
this.model = model;
model.getApplication().getProjectManager().addProjectListener(this);
}
@Override
......@@ -46,7 +47,12 @@ public class DBNRoot extends DBNNode implements DBNContainer, DBPProjectListener
project.dispose(reflect);
}
projects.clear();
DBeaverCore.getInstance().getProjectRegistry().removeProjectListener(this);
model.getApplication().getProjectManager().removeProjectListener(this);
}
@Override
public DBNModel getModel() {
return model;
}
@Override
......@@ -130,7 +136,7 @@ public class DBNRoot extends DBNNode implements DBNContainer, DBPProjectListener
DBNProject projectNode = new DBNProject(
this,
project,
DBeaverCore.getInstance().getProjectRegistry().getResourceHandler(project));
model.getApplication().getProjectManager().getResourceHandler(project));
projects.add(projectNode);
Collections.sort(projects, new Comparator<DBNProject>() {
@Override
......@@ -139,7 +145,7 @@ public class DBNRoot extends DBNNode implements DBNContainer, DBPProjectListener
return o1.getNodeName().compareTo(o2.getNodeName());
}
});
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.ADD, projectNode));
model.fireNodeEvent(new DBNEvent(this, DBNEvent.Action.ADD, projectNode));
return projectNode;
}
......@@ -150,7 +156,7 @@ public class DBNRoot extends DBNNode implements DBNContainer, DBPProjectListener
DBNProject projectNode = iter.next();
if (projectNode.getProject() == project) {
iter.remove();
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.REMOVE, projectNode));
model.fireNodeEvent(new DBNEvent(this, DBNEvent.Action.REMOVE, projectNode));
projectNode.dispose(true);
break;
}
......@@ -163,10 +169,10 @@ public class DBNRoot extends DBNNode implements DBNContainer, DBPProjectListener
DBNProject projectNode = getProject(newValue);
DBNProject oldProjectNode = getProject(oldValue);
if (projectNode != null) {
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.UPDATE, projectNode));
model.fireNodeEvent(new DBNEvent(this, DBNEvent.Action.UPDATE, projectNode));
}
if (oldProjectNode != null) {
DBNModel.getInstance().fireNodeEvent(new DBNEvent(this, DBNEvent.Action.UPDATE, oldProjectNode));
model.fireNodeEvent(new DBNEvent(this, DBNEvent.Action.UPDATE, oldProjectNode));
}
}
}
......@@ -23,6 +23,7 @@ import org.eclipse.core.runtime.*;
import org.eclipse.swt.widgets.Display;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPProjectManager;
import org.jkiss.dbeaver.ui.resources.DefaultResourceHandlerImpl;
import org.jkiss.dbeaver.model.project.DBPProjectListener;
import org.jkiss.dbeaver.model.project.DBPResourceHandler;
......@@ -34,7 +35,7 @@ import org.jkiss.utils.CommonUtils;
import java.util.*;
public class ProjectRegistry {
public class ProjectRegistry implements DBPProjectManager {
static final Log log = Log.getLog(ProjectRegistry.class);
private static final String PROP_PROJECT_ACTIVE = "project.active";
......@@ -153,6 +154,7 @@ public class ProjectRegistry {
}
}
@Override
public void addProjectListener(DBPProjectListener listener)
{
synchronized (projectListeners) {
......@@ -160,6 +162,7 @@ public class ProjectRegistry {
}
}
@Override
public void removeProjectListener(DBPProjectListener listener)
{
synchronized (projectListeners) {
......@@ -167,6 +170,7 @@ public class ProjectRegistry {
}
}
@Override
public DBPResourceHandler getResourceHandler(IResource resource)
{
if (resource == null || resource.isHidden() || resource.isPhantom()) {
......@@ -255,6 +259,7 @@ public class ProjectRegistry {
return dataSourceRegistry;
}
@Override
public IProject getActiveProject()
{
return activeProject;
......@@ -319,6 +324,7 @@ public class ProjectRegistry {
* Otherwise set of workspace synchronize problems occur
* @param project project
*/
@Override
public void addProject(IProject project)
{
if (busyProjects.contains(project)) {
......@@ -332,6 +338,7 @@ public class ProjectRegistry {
projectDatabases.put(project, new DataSourceRegistry(project));
}
@Override
public void removeProject(IProject project)
{
// Remove project from registry
......
......@@ -18,18 +18,17 @@
package org.jkiss.dbeaver.tools.scripts;
import org.jkiss.dbeaver.core.Log;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.ui.resources.ScriptsHandlerImpl;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.core.Log;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.navigator.DBNProject;
import org.jkiss.dbeaver.model.navigator.DBNResource;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.ui.resources.ScriptsHandlerImpl;
/**
* Utils
......@@ -42,7 +41,7 @@ class ScriptsExportUtils {
{
final IProject activeProject = DBeaverCore.getInstance().getProjectRegistry().getActiveProject();
if (activeProject == null) {
return DBNModel.getInstance().getRoot();
return DBeaverCore.getInstance().getNavigatorModel().getRoot();
}
final DBNProject projectNode = DBeaverCore.getInstance().getNavigatorModel().getRoot().getProject(activeProject);
DBNNode scriptsNode = projectNode;
......
......@@ -21,10 +21,10 @@ import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.ui.PlatformUI;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.model.struct.DBSObject;
......@@ -111,7 +111,7 @@ public class EntityHyperlink implements IHyperlink
monitor.beginTask("Resolve object " + reference.getName(), 1);
try {
DBSObject object = reference.resolveObject(monitor);
node = DBNModel.getInstance().getNodeByObject(monitor, object, true);
node = DBeaverCore.getInstance().getNavigatorModel().getNodeByObject(monitor, object, true);
} catch (DBException e) {
throw new InvocationTargetException(e);
} finally {
......
......@@ -19,11 +19,11 @@ package org.jkiss.dbeaver.ui.search;
import org.eclipse.jface.dialogs.DialogPage;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.core.Log;
import org.jkiss.dbeaver.model.DBPPreferenceStore;
import org.jkiss.dbeaver.model.navigator.DBNDataSource;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
......@@ -77,12 +77,12 @@ public abstract class AbstractSearchPage extends DialogPage implements IObjectSe
while (st.hasMoreTokens()) {
String nodePath = st.nextToken();
try {
DBNDataSource dsNode = DBNModel.getInstance().getDataSourceByPath(nodePath);
DBNDataSource dsNode = DBeaverCore.getInstance().getNavigatorModel().getDataSourceByPath(nodePath);
if (brokenDataSources.contains(dsNode)) {
continue;
}
DBNNode node = DBNModel.getInstance().getNodeByPath(monitor, nodePath);
DBNNode node = DBeaverCore.getInstance().getNavigatorModel().getNodeByPath(monitor, nodePath);
if (node != null) {
result.add(node);
} else {
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.ui.search.data;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.Log;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
......@@ -71,7 +72,7 @@ public class SearchDataQuery implements IObjectSearchQuery {
}
// Search
DBNModel dbnModel = DBNModel.getInstance();
DBNModel dbnModel = DBeaverCore.getInstance().getNavigatorModel();
monitor.beginTask(
"Search \"" + searchString + "\" in " + params.sources.size() + " table(s) / " + dataSources.size() + " database(s)",
......
......@@ -66,7 +66,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
{
super(parent, SWT.NONE);
this.setLayout(new FillLayout());
this.model = DBNModel.getInstance();
this.model = DBeaverCore.getInstance().getNavigatorModel();
this.model.addListener(this);
addDisposeListener(new DisposeListener() {
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册