提交 7eb6b1b4 编写于 作者: S Serge Rider

#6490 DS drag-n-drop fix. Also project refresh fix (ds list reload)


Former-commit-id: 465313fd
上级 7c4b3511
......@@ -106,14 +106,11 @@ public class DataSourceDescriptorManager extends AbstractObjectManager<DataSourc
dataSource.setName(newName);
registry.addDataSource(dataSource);
} else {
UIUtils.asyncExec(new Runnable() {
@Override
public void run() {
CreateConnectionDialog dialog = new CreateConnectionDialog(
UIUtils.getActiveWorkbenchWindow(),
new NewConnectionWizard());
dialog.open();
}
UIUtils.asyncExec(() -> {
CreateConnectionDialog dialog = new CreateConnectionDialog(
UIUtils.getActiveWorkbenchWindow(),
new NewConnectionWizard());
dialog.open();
});
}
return null;
......@@ -122,13 +119,7 @@ public class DataSourceDescriptorManager extends AbstractObjectManager<DataSourc
@Override
public void deleteObject(DBECommandContext commandContext, final DataSourceDescriptor object, Map<String, Object> options)
{
Runnable remover = new Runnable() {
@Override
public void run()
{
object.getRegistry().removeDataSource(object);
}
};
Runnable remover = () -> object.getRegistry().removeDataSource(object);
if (object.isConnected()) {
DataSourceHandler.disconnectDataSource(object, remover);
} else {
......
......@@ -208,4 +208,6 @@ public interface DBPDataSourceContainer extends DBSObject, DBDPreferences, DBPNa
GeneralUtils.IVariableResolver getVariablesResolver();
DBPDataSourceContainer createCopy(DBPDataSourceRegistry forRegistry);
}
......@@ -156,6 +156,12 @@ public class DBNProject extends DBNResource {
return super.addImplicitMembers(members);
}
@Override
public DBNNode refreshNode(DBRProgressMonitor monitor, Object source) throws DBException {
project.getDataSourceRegistry().refreshConfig();
return super.refreshNode(monitor, source);
}
public DBNResource findResource(IResource resource) {
List<IResource> path = new ArrayList<>();
for (IResource parent = resource; !(parent instanceof IProject); parent = parent.getParent()) {
......
......@@ -171,13 +171,27 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
@Override
public void dropNodes(Collection<DBNNode> nodes) throws DBException {
Set<DBPDataSourceRegistry> registryToRefresh = new LinkedHashSet<>();
for (DBNNode node : nodes) {
if (node instanceof DBNDataSource) {
DBPDataSourceContainer dsContainer = ((DBNDataSource) node).getDataSourceContainer();
dsContainer.getRegistry().removeDataSource(dsContainer);
dataSourceRegistry.addDataSource(dsContainer);
DBPDataSourceContainer oldContainer = ((DBNDataSource) node).getDataSourceContainer();
if (oldContainer.getRegistry() == dataSourceRegistry) {
// the same registry
continue;
}
DBPDataSourceContainer newContainer = oldContainer.createCopy(dataSourceRegistry);
oldContainer.getRegistry().removeDataSource(oldContainer);
dataSourceRegistry.addDataSource(newContainer);
registryToRefresh.add(oldContainer.getRegistry());
registryToRefresh.add(dataSourceRegistry);
}
}
for (DBPDataSourceRegistry registy : registryToRefresh) {
registy.flushConfig();
}
}
public void refreshChildren()
......
......@@ -195,7 +195,7 @@ public class DataSourceDescriptor
public DataSourceDescriptor(@NotNull DataSourceDescriptor source, @NotNull DBPDataSourceRegistry registry)
{
this.registry = registry;
this.origin = source.origin;
this.origin = ((DataSourceRegistry)registry).getDefaultOrigin();
this.id = source.id;
this.name = source.name;
this.description = source.description;
......@@ -1429,6 +1429,13 @@ public class DataSourceDescriptor
};
}
@Override
public DBPDataSourceContainer createCopy(DBPDataSourceRegistry forRegistry) {
DataSourceDescriptor copy = new DataSourceDescriptor(this, forRegistry);
copy.setId(DataSourceDescriptor.generateNewId(copy.getDriver()));
return copy;
}
public static boolean askForPassword(@NotNull final DataSourceDescriptor dataSourceContainer, @Nullable final DBWHandlerConfiguration networkHandler, final boolean passwordOnly)
{
final String prompt = networkHandler != null ?
......
......@@ -786,6 +786,11 @@ public class DataSourceRegistry implements DBPDataSourceRegistry {
return project;
}
@Override
public String toString() {
return project.getName() + " (" + getClass().getSimpleName() + ")";
}
static class ParseResults {
Set<DataSourceDescriptor> updatedDataSources = new LinkedHashSet<>();
Set<DataSourceDescriptor> addedDataSources = new LinkedHashSet<>();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册