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());