mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
Cloud extension improvements
This commit is contained in:
+17
-12
@@ -28,14 +28,16 @@ import io.cloudbeaver.server.CBPlatform;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.jkiss.code.NotNull;
|
||||
import org.jkiss.dbeaver.DBException;
|
||||
import org.jkiss.dbeaver.Log;
|
||||
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
|
||||
import org.jkiss.dbeaver.model.app.DBPProject;
|
||||
import org.jkiss.dbeaver.model.exec.DBCException;
|
||||
import org.jkiss.dbeaver.model.meta.Association;
|
||||
import org.jkiss.dbeaver.model.meta.Property;
|
||||
import org.jkiss.dbeaver.model.navigator.*;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNModel;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNNode;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNProject;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNProjectDatabases;
|
||||
import org.jkiss.dbeaver.model.runtime.*;
|
||||
import org.jkiss.dbeaver.runtime.jobs.DisconnectJob;
|
||||
import org.jkiss.utils.CommonUtils;
|
||||
@@ -81,6 +83,7 @@ public class WebSession {
|
||||
private DBNModel navigatorModel;
|
||||
private DBNProjectDatabases databases;
|
||||
private DBRProgressMonitor progressMonitor = new SessionProgressMonitor();
|
||||
private DBNProject projectNode;
|
||||
|
||||
public WebSession(HttpSession httpSession) {
|
||||
this.id = httpSession.getId();
|
||||
@@ -173,7 +176,7 @@ public class WebSession {
|
||||
this.navigatorModel.initialize();
|
||||
|
||||
DBPProject project = platform.getWorkspace().getActiveProject();
|
||||
DBNProject projectNode = this.navigatorModel.getRoot().getProjectNode(project);
|
||||
this.projectNode = this.navigatorModel.getRoot().getProjectNode(project);
|
||||
this.databases = projectNode.getDatabases();
|
||||
this.locale = Locale.getDefault().getLanguage();
|
||||
|
||||
@@ -245,7 +248,11 @@ public class WebSession {
|
||||
return navigatorModel;
|
||||
}
|
||||
|
||||
public DBNProjectDatabases getDatabases() {
|
||||
public DBNProject getProjectNode() {
|
||||
return projectNode;
|
||||
}
|
||||
|
||||
public DBNProjectDatabases getDatabasesNode() {
|
||||
return databases;
|
||||
}
|
||||
|
||||
@@ -302,14 +309,12 @@ public class WebSession {
|
||||
connectionInfo = connections.get(connectionID);
|
||||
}
|
||||
if (connectionInfo == null) {
|
||||
DBNNode dbNode = null;
|
||||
try {
|
||||
dbNode = navigatorModel.getNodeByPath(progressMonitor, connectionID);
|
||||
} catch (DBException e) {
|
||||
log.debug(e);
|
||||
}
|
||||
if (dbNode instanceof DBNDataSource) {
|
||||
return new WebConnectionInfo(this, ((DBNDataSource) dbNode).getDataSourceContainer());
|
||||
DBPDataSourceContainer dataSource = databases.getDataSourceRegistry().getDataSource(connectionID);
|
||||
if (dataSource != null) {
|
||||
connectionInfo = new WebConnectionInfo(this, dataSource);
|
||||
synchronized (connections) {
|
||||
connections.put(connectionID, connectionInfo);
|
||||
}
|
||||
} else {
|
||||
throw new DBWebException("Connection '" + connectionID + "' not found");
|
||||
}
|
||||
|
||||
+4
-4
@@ -135,7 +135,7 @@ public class WebServiceCore implements DBWServiceCore {
|
||||
throw new DBWebException("Datasource '" + dataSourceId + "' not found");
|
||||
}
|
||||
|
||||
DBPDataSourceRegistry sessionRegistry = webSession.getDatabases().getDataSourceRegistry();
|
||||
DBPDataSourceRegistry sessionRegistry = webSession.getDatabasesNode().getDataSourceRegistry();
|
||||
DBPDataSourceContainer newDataSource = sessionRegistry.createDataSource(dataSourceTemplate);
|
||||
newDataSource.setSavePassword(true);
|
||||
((DataSourceDescriptor)newDataSource).setTemporary(true);
|
||||
@@ -164,7 +164,7 @@ public class WebServiceCore implements DBWServiceCore {
|
||||
|
||||
@Override
|
||||
public WebConnectionInfo createConnection(WebSession webSession, WebConnectionConfig connectionConfig) throws DBWebException {
|
||||
DBPDataSourceRegistry sessionRegistry = webSession.getDatabases().getDataSourceRegistry();
|
||||
DBPDataSourceRegistry sessionRegistry = webSession.getDatabasesNode().getDataSourceRegistry();
|
||||
|
||||
DBPDataSourceContainer newDataSource = makeConnectionInstance(connectionConfig, sessionRegistry);
|
||||
if (CommonUtils.isEmpty(newDataSource.getName())) {
|
||||
@@ -181,7 +181,7 @@ public class WebServiceCore implements DBWServiceCore {
|
||||
|
||||
@Override
|
||||
public WebConnectionInfo testConnection(WebSession webSession, WebConnectionConfig connectionConfig) throws DBWebException {
|
||||
DBPDataSourceRegistry sessionRegistry = webSession.getDatabases().getDataSourceRegistry();
|
||||
DBPDataSourceRegistry sessionRegistry = webSession.getDatabasesNode().getDataSourceRegistry();
|
||||
|
||||
DBPDataSourceContainer newDataSource = makeConnectionInstance(connectionConfig, sessionRegistry);
|
||||
try {
|
||||
@@ -216,7 +216,7 @@ public class WebServiceCore implements DBWServiceCore {
|
||||
// Disconnect in async mode?
|
||||
//new DisconnectJob(connectionInfo.getDataSource()).schedule();
|
||||
}
|
||||
webSession.getDatabases().getDataSourceRegistry().removeDataSource(connectionInfo.getDataSourceContainer());
|
||||
webSession.getDatabasesNode().getDataSourceRegistry().removeDataSource(connectionInfo.getDataSourceContainer());
|
||||
webSession.removeConnection(connectionInfo);
|
||||
|
||||
return disconnected;
|
||||
|
||||
+7
-1
@@ -35,6 +35,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode;
|
||||
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
|
||||
import org.jkiss.dbeaver.model.struct.DBSObject;
|
||||
import org.jkiss.dbeaver.model.struct.rdb.DBSCatalog;
|
||||
import org.jkiss.utils.ArrayUtils;
|
||||
import org.jkiss.utils.CommonUtils;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@@ -56,7 +57,12 @@ public class WebServiceNavigator implements DBWServiceNavigator {
|
||||
DBNNode[] nodeChildren;
|
||||
boolean isRootPath = CommonUtils.isEmpty(parentPath) || "/".equals(parentPath);
|
||||
if (isRootPath) {
|
||||
nodeChildren = session.getDatabases().getChildren(monitor);
|
||||
nodeChildren = session.getDatabasesNode().getChildren(monitor);
|
||||
// Inject extra nodes
|
||||
List<DBNNode> extraNodes = session.getProjectNode().getExtraNodes();
|
||||
if (!extraNodes.isEmpty()) {
|
||||
nodeChildren = ArrayUtils.concatArrays(extraNodes.toArray(new DBNNode[0]), nodeChildren);
|
||||
}
|
||||
} else {
|
||||
DBNNode parentNode = session.getNavigatorModel().getNodeByPath(monitor, parentPath);
|
||||
if (parentNode == null) {
|
||||
|
||||
Reference in New Issue
Block a user