REQ-3540: 打开克隆到自己
This commit is contained in:
parent
ebef16b5c2
commit
f08f754f71
@ -176,7 +176,7 @@ public class IndexManager {
|
||||
IndexNode srcNode = getOrThrow(srcCode);
|
||||
BizAssertions.assertTrue(indexNodeDao.validSubtreeFileCount(srcNode) <= docProps.getIndexNodeMaxCopyFileSize(),
|
||||
"拷贝文件数超过限制: {}", docProps.getIndexNodeMaxCopyFileSize());
|
||||
IndexNode destParentNode = determineDestParentNode(srcNode, destParentCode, "克隆");
|
||||
IndexNode destParentNode = determineDestParentNode(srcNode, destParentCode, Op.COPY);
|
||||
return async(() -> {
|
||||
// don't inline in transaction
|
||||
CopyFileVisitor copyNodeVisitor = new CopyFileVisitor(copySubtreeOssFiles(srcNode));
|
||||
@ -193,7 +193,7 @@ public class IndexManager {
|
||||
*/
|
||||
public Future<IndexNode> asyncMove(String srcCode, @Nullable String destParentCode) {
|
||||
IndexNode srcNode = getOrThrow(srcCode);
|
||||
IndexNode destParentNode = determineDestParentNode(srcNode, destParentCode, "移动");
|
||||
IndexNode destParentNode = determineDestParentNode(srcNode, destParentCode, Op.MOVE);
|
||||
return async(() -> transaction.execute(unused -> {
|
||||
docLogDao.log("indexNode:asyncMove", srcCode, "srcCode", srcCode, "destParentCode", destParentCode);
|
||||
if (docProps.isLockSubtreeWhenMove())
|
||||
@ -204,12 +204,13 @@ public class IndexManager {
|
||||
}));
|
||||
}
|
||||
|
||||
private IndexNode determineDestParentNode(IndexNode srcNode, String destParentCode, String op) {
|
||||
private IndexNode determineDestParentNode(IndexNode srcNode, String destParentCode, Op op) {
|
||||
IndexNode parent = StringUtils.isBlank(destParentCode) ? null : getOrThrow(destParentCode);
|
||||
if (parent == null)
|
||||
return null;
|
||||
BizAssertions.assertFalse(srcNode.isDirectory() && parent.isFile(), "不能{}文件夹到文件下", op);
|
||||
BizAssertions.assertFalse(srcNode.isSameNodeWith(parent), "不能{}到同一节点下", op);
|
||||
if (op == Op.MOVE)
|
||||
BizAssertions.assertFalse(srcNode.isSameNodeWith(parent), "不能{}到同一节点下", op);
|
||||
BizAssertions.assertFalse(srcNode.isParentOf(parent), "不能{}到子节点下", op);
|
||||
List<IndexNode> subtreeNodes = indexSupport.collectValidSubtreeAsValueRoot(srcNode);
|
||||
int subtreeMaxDepth = IndexNodeTreeUtils.build(subtreeNodes).getChildren().stream() //
|
||||
@ -276,4 +277,14 @@ public class IndexManager {
|
||||
});
|
||||
}
|
||||
|
||||
@RequiredArgsConstructor
|
||||
private enum Op {
|
||||
MOVE("移动"), COPY("克隆");
|
||||
private final String name;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user