CB-2186 event fixes

This commit is contained in:
Ainur
2022-10-25 10:47:10 +02:00
parent 82e6d83275
commit 90190d2a30
6 changed files with 23 additions and 16 deletions
@@ -296,7 +296,11 @@ public class LocalResourceController implements RMController {
}
@Override
public void saveProjectDataSources(@NotNull String projectId, @NotNull String configuration) throws DBException {
public void saveProjectDataSources(
@NotNull String projectId,
@NotNull String configuration,
@NotNull String[] dataSourceIds
) throws DBException {
final DBPProject project = getProjectMetadata(projectId);
final DBPDataSourceRegistry registry = project.getDataSourceRegistry();
final DBPDataSourceConfigurationStorage storage = new DataSourceMemoryStorage(configuration.getBytes(StandardCharsets.UTF_8));
@@ -205,12 +205,15 @@ public class WebAppUtils {
return RMProjectType.GLOBAL.getPrefix() + "_" + globalConfigurationName;
}
public static void addDatasourceUpdatedEvent(DBPProject project) {
public static void addDataSourceUpdatedEvent(DBPProject project, String datasourceId) {
if (project == null) {
return;
}
getWebApplication().getEventController().addEvent(
new CBEvent(CBEventConstants.CLOUDBEAVER_DATASOURCE_UPDATED, Map.of("projectId", project.getId()))
new CBEvent(
CBEventConstants.CLOUDBEAVER_DATASOURCE_UPDATED,
Map.of("projectId", project.getId(), "dataSourceIds", new String[] {datasourceId})
)
);
}
@@ -50,7 +50,7 @@
<extension point="io.cloudbeaver.event.handler">
<eventHandler class="io.cloudbeaver.server.events.CBConfigurationChangedEventHandler"/>
<eventHandler class="io.cloudbeaver.server.events.CBDatasourceUpdatedEventHandlerImpl"/>\
<eventHandler class="io.cloudbeaver.server.events.CBDataSourceUpdatedEventHandlerImpl"/>\
<eventHandler class="io.cloudbeaver.server.events.CBRmResourceUpdatedEventHandlerImpl"/>
</extension>
@@ -26,7 +26,7 @@ import org.jkiss.dbeaver.model.data.json.JSONUtils;
/**
* Notify all active user session that datasource has been updated
*/
public class CBDatasourceUpdatedEventHandlerImpl extends CBProjectUpdatedEventHandler {
public class CBDataSourceUpdatedEventHandlerImpl extends CBProjectUpdatedEventHandler {
@NotNull
@Override
public String getSupportedEventType() {
@@ -402,7 +402,7 @@ public class WebServiceCore implements DBWServiceCore {
WebConnectionInfo connectionInfo = new WebConnectionInfo(webSession, newDataSource);
webSession.addConnection(connectionInfo);
webSession.addInfoMessage("New connection was created - " + WebServiceUtils.getConnectionContainerInfo(newDataSource));
WebAppUtils.addDatasourceUpdatedEvent(webSession.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(webSession.getProjectById(projectId), connectionInfo.getId());
return connectionInfo;
}
@@ -440,7 +440,7 @@ public class WebServiceCore implements DBWServiceCore {
} catch (DBException e) {
throw new DBWebException("Failed to update connection", e);
}
WebAppUtils.addDatasourceUpdatedEvent(webSession.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(webSession.getProjectById(projectId), connectionInfo.getId());
return connectionInfo;
}
@@ -454,7 +454,7 @@ public class WebServiceCore implements DBWServiceCore {
webSession.addInfoMessage("Delete connection - " +
WebServiceUtils.getConnectionContainerInfo(connectionInfo.getDataSourceContainer()));
closeAndDeleteConnection(webSession, projectId, connectionId, true);
WebAppUtils.addDatasourceUpdatedEvent(webSession.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(webSession.getProjectById(projectId), connectionId);
return true;
}
@@ -491,7 +491,7 @@ public class WebServiceCore implements DBWServiceCore {
WebConnectionInfo connectionInfo = new WebConnectionInfo(webSession, newDataSource);
webSession.addConnection(connectionInfo);
WebAppUtils.addDatasourceUpdatedEvent(webSession.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(webSession.getProjectById(projectId), connectionInfo.getId());
return connectionInfo;
}
@@ -533,7 +533,7 @@ public class WebServiceCore implements DBWServiceCore {
WebConnectionInfo connectionInfo = new WebConnectionInfo(webSession, newDataSource);
dataSourceRegistry.checkForErrors();
webSession.addConnection(connectionInfo);
WebAppUtils.addDatasourceUpdatedEvent(webSession.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(webSession.getProjectById(projectId), connectionInfo.getId());
return connectionInfo;
} catch (DBException e) {
throw new DBWebException("Error copying connection", e);
@@ -712,7 +712,7 @@ public class WebServiceCore implements DBWServiceCore {
DBPDataSourceFolder newFolder = WebServiceUtils.createFolder(parentNode, folderName, sessionRegistry);
WebConnectionFolderInfo folderInfo = new WebConnectionFolderInfo(session, newFolder);
WebServiceUtils.updateConfigAndRefreshDatabases(session, projectId);
WebAppUtils.addDatasourceUpdatedEvent(session.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(session.getProjectById(projectId), folderInfo.getId());
return folderInfo;
} catch (DBException e) {
throw new DBWebException(e.getMessage(), e);
@@ -730,7 +730,7 @@ public class WebServiceCore implements DBWServiceCore {
WebConnectionFolderInfo folderInfo = WebConnectionFolderUtils.getFolderInfo(session, projectId, folderPath);
folderInfo.getDataSourceFolder().setName(newName);
WebServiceUtils.updateConfigAndRefreshDatabases(session, projectId);
WebAppUtils.addDatasourceUpdatedEvent(session.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(session.getProjectById(projectId), folderInfo.getId());
return folderInfo;
}
@@ -748,7 +748,7 @@ public class WebServiceCore implements DBWServiceCore {
DBPDataSourceRegistry sessionRegistry = session.getProjectById(projectId).getDataSourceRegistry();
sessionRegistry.removeFolder(folderInfo.getDataSourceFolder(), false);
WebServiceUtils.updateConfigAndRefreshDatabases(session, projectId);
WebAppUtils.addDatasourceUpdatedEvent(session.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(session.getProjectById(projectId), folderInfo.getId());
} catch (DBException e) {
throw new DBWebException(e.getMessage(), e);
}
@@ -763,7 +763,7 @@ public class WebServiceCore implements DBWServiceCore {
DataSourceDescriptor dataSourceDescriptor = ((DataSourceDescriptor)connectionInfo.getDataSourceContainer());
dataSourceDescriptor.setNavigatorSettings(settings);
dataSourceDescriptor.persistConfiguration();
WebAppUtils.addDatasourceUpdatedEvent(webSession.getProjectById(projectId));
WebAppUtils.addDataSourceUpdatedEvent(webSession.getProjectById(projectId), id);
return connectionInfo;
}
@@ -471,7 +471,7 @@ public class WebServiceNavigator implements DBWServiceNavigator {
((DBNDataSource) node).moveToFolder(folderNode.getOwnerProject(), folder);
node.getOwnerProject().getDataSourceRegistry().updateDataSource(
((DBNDataSource) node).getDataSourceContainer());
WebAppUtils.addDatasourceUpdatedEvent(node.getOwnerProject());
WebAppUtils.addDataSourceUpdatedEvent(node.getOwnerProject(), ((DBNDataSource) node).getDataSourceContainer().getId());
} else if (node instanceof DBNLocalFolder) {
DBPDataSourceFolder folder = WebConnectionFolderUtils.getParentFolder(folderNode);
if (folder != null) {
@@ -484,7 +484,7 @@ public class WebServiceNavigator implements DBWServiceNavigator {
}
((DBNLocalFolder) node).getFolder().setParent(folder);
WebServiceUtils.updateConfigAndRefreshDatabases(session, node.getOwnerProject().getId());
WebAppUtils.addDatasourceUpdatedEvent(node.getOwnerProject());
WebAppUtils.addDataSourceUpdatedEvent(node.getOwnerProject(), ((DBNLocalFolder) node).getFolder().getFolderPath());
} else if (node instanceof DBNResourceManagerResource) {
boolean rmNewNode = folderNode instanceof DBNAbstractResourceManagerNode;
DBNResourceManagerResource rmOldNode = (DBNResourceManagerResource) node;