@@ -18,7 +18,6 @@ package org.modelix.model.sync.bulk
18
18
19
19
import mu.KLogger
20
20
import org.modelix.model.api.BuiltinLanguages
21
- import org.modelix.model.api.SimpleConcept
22
21
import org.modelix.model.data.ModelData
23
22
import org.modelix.model.data.NodeData
24
23
@@ -27,38 +26,39 @@ fun mergeModelData(vararg models: ModelData): ModelData {
27
26
}
28
27
29
28
internal fun logImportSize (nodeData : NodeData , logger : KLogger ) {
30
- logger.debug { " Number of modules: ${countMpsModules(nodeData)} " }
31
- logger.debug { " Number of models: ${countMpsModels(nodeData)} " }
32
- logger.debug { " Number of concepts: ${countConcepts(nodeData)} " }
33
- logger.debug { " Number of properties: ${countProperties(nodeData)} " }
34
- logger.debug { " Number of references: ${countReferences(nodeData)} " }
29
+ logger.debug { measureImportSize(nodeData).toString() }
35
30
}
36
31
37
- private fun countProperties (data : NodeData ): Int =
38
- data.properties.size + data.children.sumOf { countProperties(it) }
39
-
40
- private fun countReferences (data : NodeData ): Int =
41
- data.references.size + data.children.sumOf { countReferences(it) }
42
-
43
- private fun countConcepts (data : NodeData ): Int {
44
- val set = mutableSetOf<String >()
45
- countConceptsRec(data, set)
46
- return set.size
32
+ private data class ImportSizeMetrics (
33
+ var numModules : Int = 0 ,
34
+ var numModels : Int = 0 ,
35
+ val concepts : MutableSet <String > = mutableSetOf(),
36
+ var numProperties : Int = 0 ,
37
+ var numReferences : Int = 0 ,
38
+ ) {
39
+ override fun toString (): String {
40
+ return """
41
+ [Bulk Model Sync Import Size]
42
+ number of modules: $numModules
43
+ number of models: $numModels
44
+ number of concepts: ${concepts.size}
45
+ number of properties: $numProperties
46
+ number of references: $numReferences
47
+ """ .trimIndent()
48
+ }
47
49
}
48
50
49
- private fun countConceptsRec (data : NodeData , set : MutableSet <String >) {
50
- data.concept?.let { set.add(it) }
51
- data.children.forEach { countConceptsRec(it, set) }
52
- }
51
+ private fun measureImportSize (data : NodeData , metrics : ImportSizeMetrics = ImportSizeMetrics ()): ImportSizeMetrics {
52
+ data.concept?.let { metrics.concepts.add(it) }
53
53
54
- private fun countMpsModels (data : NodeData ) =
55
- countSpecificConcept(data, BuiltinLanguages .MPSRepositoryConcepts .Model )
54
+ when (data.concept) {
55
+ BuiltinLanguages .MPSRepositoryConcepts .Module .getUID() -> metrics.numModules++
56
+ BuiltinLanguages .MPSRepositoryConcepts .Model .getUID() -> metrics.numModels++
57
+ }
56
58
57
- private fun countMpsModules ( data : NodeData ) =
58
- countSpecificConcept(data, BuiltinLanguages . MPSRepositoryConcepts . Module )
59
+ metrics.numProperties + = data.properties.size
60
+ metrics.numReferences + = data.references.size
59
61
60
- private fun countSpecificConcept (data : NodeData , concept : SimpleConcept ): Int {
61
- var count = if (data.concept == concept.getUID()) 1 else 0
62
- count + = data.children.sumOf { countSpecificConcept(it, concept) }
63
- return count
62
+ data.children.forEach { measureImportSize(it, metrics) }
63
+ return metrics
64
64
}
0 commit comments