From 245968b282314d97cb6d8434bca8bd1e8d3a3429 Mon Sep 17 00:00:00 2001 From: yanglin Date: Wed, 19 Mar 2025 13:58:54 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3540:=20=E6=83=B9=E5=90=8Dscope=E7=9A=84?= =?UTF-8?q?=E5=AD=90=E8=8A=82=E7=82=B9=E5=90=8D=E5=8F=AF=E4=BB=A5=E9=87=8D?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/nanopart/doc/api/domain/IndexNodeScope.java | 11 +++++++++++ .../cn/axzo/nanopart/doc/file/index/IndexManager.java | 6 +++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java index d0de898b..6638adfc 100644 --- a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java +++ b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java @@ -17,6 +17,17 @@ public interface IndexNodeScope { return DatabaseScope.ANONYMOUS; } + default boolean isChildrenNameDuplicatable() { + switch (context()) { + case FILE_TEMPLATE: + case TEMPLATE_DATABASE: + case FILE_DATABASE: + return false; + default: + return scope().isChildrenNameDuplicatable(); + } + } + default String scopeCode() { return ""; } diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java index 6ae6ab1a..2cd50a0f 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java @@ -116,7 +116,7 @@ public class IndexManager { } private void maybeEnsureChildNameNotUsed(NodeCreate create, IndexNodeType nodeType, boolean withLock) { - if (create.nodeScope().scope().isChildrenNameDuplicatable()) + if (create.nodeScope().isChildrenNameDuplicatable()) return; if (withLock) indexSupport.lockParentAndReleaseOnCommit(create); @@ -129,7 +129,7 @@ public class IndexManager { if (indexNode.getName().equals(newName)) return; docLogDao.log("indexNode:rename", code, "newName", newName); - if (!indexNode.scope().isChildrenNameDuplicatable()) { + if (!indexNode.isChildrenNameDuplicatable()) { indexSupport.lockParentAndReleaseOnCommit(indexNode); indexSupport.ensureChildNameNotUsed(indexNode, indexNode.getNodeType(), newName); } @@ -214,7 +214,7 @@ public class IndexManager { indexNodeDao.connectNodes(TreeUtils.collectValues(connectRoot)); IndexNode rootNode = connectRoot.getChildren().get(0). asValueNode().getValue(); // resolve the name issue - if (!rootNode.scope().isChildrenNameDuplicatable()) + if (!rootNode.isChildrenNameDuplicatable()) indexSupport.incrNameIfDuplicate(rootNode); // get the coped root with full props return indexNodeDao.findOrNull(rootNode.getCode());