33package com.dengzii.plugin.template.model
44
55import com.dengzii.plugin.template.utils.Logger
6- import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
76import java.io.File
87import java.util.*
98import java.util.regex.Pattern
@@ -29,6 +28,7 @@ open class FileTreeNode() {
2928 get() = realChildren
3029
3130 var placeholders: MutableMap <String , String >? = null
31+
3232 // all placeholder in tree node name
3333 val allPlaceholder = mutableListOf<String >()
3434
@@ -43,6 +43,7 @@ open class FileTreeNode() {
4343 // the label composed by 'name' and 'isDir'.
4444 @Transient
4545 private val labeledChildren = mutableMapOf<String , FileTreeNode >()
46+
4647 @Transient
4748 var parent: FileTreeNode ? = null
4849
@@ -69,9 +70,17 @@ open class FileTreeNode() {
6970 this .name = name
7071 this .parent = parent
7172 this .isDir = isDir
72- name.getPlaceholder().ifNotEmpty {
73- allPlaceholder.addAll(this )
73+ if (name.getPlaceholder().isNotEmpty()) {
74+ allPlaceholder.addAll(name.getPlaceholder())
75+ }
76+ }
77+
78+ fun getTreeNodeCount (): Int {
79+ var count = realChildren.size
80+ realChildren.forEach {
81+ count + = it.getTreeNodeCount()
7482 }
83+ return count
7584 }
7685
7786 fun removeFromParent (): Boolean {
@@ -137,6 +146,17 @@ open class FileTreeNode() {
137146 }
138147 }
139148
149+ fun getNodeHasTemplateInTree (): List <FileTreeNode > {
150+ val nodes = mutableListOf<FileTreeNode >()
151+ if (fileTemplates != null ) {
152+ nodes.add(this )
153+ }
154+ realChildren.forEach {
155+ nodes.addAll(it.getNodeHasTemplateInTree())
156+ }
157+ return nodes
158+ }
159+
140160 fun getFileTemplateInherit (): MutableMap <String , String >? {
141161 return fileTemplates ? : parent?.getFileTemplateInherit()
142162 }
0 commit comments