CB-2302 move connection folders

This commit is contained in:
yagudin10
2022-08-23 10:45:42 +03:00
parent 3ae5f02dec
commit 780fcbc509
2 changed files with 19 additions and 8 deletions
@@ -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");
}
}
}
@@ -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;