mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-2302 move connection folders
This commit is contained in:
+14
@@ -21,6 +21,10 @@ import io.cloudbeaver.model.WebConnectionFolderInfo;
|
||||
import io.cloudbeaver.model.session.WebSession;
|
||||
import org.jkiss.code.Nullable;
|
||||
import org.jkiss.dbeaver.model.DBPDataSourceFolder;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNLocalFolder;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNNode;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNProject;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNRoot;
|
||||
import org.jkiss.utils.CommonUtils;
|
||||
|
||||
public class WebConnectionFolderUtils {
|
||||
@@ -44,4 +48,14 @@ public class WebConnectionFolderUtils {
|
||||
throw new DBWebException("Folder name '" + folderName + "' contains illegal characters: /");
|
||||
}
|
||||
}
|
||||
|
||||
public static DBPDataSourceFolder getParentFolder(DBNNode folderNode) throws DBWebException {
|
||||
if (folderNode instanceof DBNRoot || folderNode instanceof DBNProject) {
|
||||
return null;
|
||||
} else if (folderNode instanceof DBNLocalFolder) {
|
||||
return ((DBNLocalFolder) folderNode).getFolder();
|
||||
} else {
|
||||
throw new DBWebException("Navigator node '" + folderNode.getNodeItemPath() + "' is not a folder node");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-8
@@ -466,17 +466,14 @@ public class WebServiceNavigator implements DBWServiceNavigator {
|
||||
}
|
||||
checkProjectEditAccess(node, session);
|
||||
if (node instanceof DBNDataSource) {
|
||||
DBPDataSourceFolder folder;
|
||||
if (folderNode instanceof DBNRoot || folderNode instanceof DBNProject) {
|
||||
folder = null;
|
||||
} else if (folderNode instanceof DBNLocalFolder) {
|
||||
folder = ((DBNLocalFolder) folderNode).getFolder();
|
||||
} else {
|
||||
throw new DBWebException("Navigator node '" + folderNodePath + "' is not a folder node");
|
||||
}
|
||||
DBPDataSourceFolder folder = WebConnectionFolderUtils.getParentFolder(folderNode);
|
||||
((DBNDataSource) node).moveToFolder(folderNode.getOwnerProject(), folder);
|
||||
node.getOwnerProject().getDataSourceRegistry().updateDataSource(
|
||||
((DBNDataSource) node).getDataSourceContainer());
|
||||
} else if (node instanceof DBNLocalFolder) {
|
||||
DBPDataSourceFolder folder = WebConnectionFolderUtils.getParentFolder(folderNode);
|
||||
((DBNLocalFolder) node).getFolder().setParent(folder);
|
||||
WebServiceUtils.updateConfigAndRefreshDatabases(session, node.getOwnerProject().getId());
|
||||
} else if (node instanceof DBNResourceManagerResource) {
|
||||
boolean rmNewNode = folderNode instanceof DBNAbstractResourceManagerNode;
|
||||
DBNResourceManagerResource rmOldNode = (DBNResourceManagerResource) node;
|
||||
|
||||
Reference in New Issue
Block a user