Skip to content

Commit 3723b9d

Browse files
committed
feat(mps-model-adapters): migrate MPSRepositoryAsNode
1 parent 008fe1e commit 3723b9d

File tree

1 file changed

+17
-70
lines changed

1 file changed

+17
-70
lines changed

mps-model-adapters/src/main/kotlin/org/modelix/model/mpsadapters/MPSRepositoryAsNode.kt

Lines changed: 17 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -13,109 +13,56 @@
1313
*/
1414
package org.modelix.model.mpsadapters
1515

16+
import jetbrains.mps.project.ProjectBase
17+
import jetbrains.mps.project.ProjectManager
18+
import jetbrains.mps.smodel.tempmodel.TempModule
19+
import jetbrains.mps.smodel.tempmodel.TempModule2
20+
import org.jetbrains.mps.openapi.module.SModule
1621
import org.jetbrains.mps.openapi.module.SRepository
1722
import org.modelix.model.api.BuiltinLanguages
1823
import org.modelix.model.api.IChildLink
1924
import org.modelix.model.api.IConcept
20-
import org.modelix.model.api.IConceptReference
21-
import org.modelix.model.api.IDeprecatedNodeDefaults
2225
import org.modelix.model.api.INode
2326
import org.modelix.model.api.INodeReference
24-
import org.modelix.model.api.IProperty
25-
import org.modelix.model.api.IReferenceLink
2627
import org.modelix.model.api.NodeReference
2728
import org.modelix.model.api.NullChildLink
2829
import org.modelix.model.area.IArea
2930

30-
data class MPSRepositoryAsNode(val repository: SRepository) : IDeprecatedNodeDefaults {
31+
data class MPSRepositoryAsNode(val repository: SRepository) : IDefaultNodeAdapter {
32+
3133
override fun getArea(): IArea {
3234
return MPSArea(repository)
3335
}
3436

35-
override val isValid: Boolean
36-
get() = TODO("Not yet implemented")
3737
override val reference: INodeReference
3838
get() = NodeReference("mps-repository")
3939
override val concept: IConcept
4040
get() = BuiltinLanguages.MPSRepositoryConcepts.Repository
4141
override val parent: INode?
4242
get() = null
4343

44-
override fun getConceptReference(): IConceptReference? {
45-
return concept.getReference()
46-
}
47-
4844
override val allChildren: Iterable<INode>
4945
get() = repository.modules.map { MPSModuleAsNode(it) }
5046

51-
override fun removeChild(child: INode) {
52-
TODO("Not yet implemented")
53-
}
54-
5547
override fun getContainmentLink(): IChildLink? {
5648
return null
5749
}
5850

5951
override fun getChildren(link: IChildLink): Iterable<INode> {
6052
return if (link is NullChildLink) {
6153
return emptyList()
62-
} else if (link.getUID().endsWith("0a7577d1-d4e5-431d-98b1-fae38f9aee80/474657388638618902/474657388638618903") ||
63-
link.getUID().contains("modules") ||
64-
link.getSimpleName() == "modules"
65-
) {
66-
repository.modules.map { MPSModuleAsNode(it) }
54+
} else if (link.conformsTo(BuiltinLanguages.MPSRepositoryConcepts.Repository.modules)) {
55+
repository.modules.filter { !it.isTempModule() }.map { MPSModuleAsNode(it) }
56+
} else if (link.conformsTo(BuiltinLanguages.MPSRepositoryConcepts.Repository.projects)) {
57+
ProjectManager.getInstance().openedProjects
58+
.filterIsInstance<ProjectBase>()
59+
.map { MPSProjectAsNode(it) }
60+
} else if (link.conformsTo(BuiltinLanguages.MPSRepositoryConcepts.Repository.tempModules)) {
61+
repository.modules.filter { it.isTempModule() }.map { MPSModuleAsNode(it) }
6762
} else {
6863
emptyList()
6964
}
7065
}
71-
72-
override fun moveChild(role: IChildLink, index: Int, child: INode) {
73-
TODO("Not yet implemented")
74-
}
75-
76-
override fun addNewChild(role: IChildLink, index: Int, concept: IConcept?): INode {
77-
TODO("Not yet implemented")
78-
}
79-
80-
override fun addNewChild(role: IChildLink, index: Int, concept: IConceptReference?): INode {
81-
TODO("Not yet implemented")
82-
}
83-
84-
override fun getReferenceTarget(link: IReferenceLink): INode? {
85-
return null
86-
}
87-
88-
override fun setReferenceTarget(link: IReferenceLink, target: INode?) {
89-
if (target != null) {
90-
throw IllegalArgumentException("$concept doesn't contain a reference link $link")
91-
}
92-
}
93-
94-
override fun setReferenceTarget(role: IReferenceLink, target: INodeReference?) {
95-
if (target != null) {
96-
throw IllegalArgumentException("$concept doesn't contain a reference link $role")
97-
}
98-
}
99-
100-
override fun getReferenceTargetRef(role: IReferenceLink): INodeReference? {
101-
return null
102-
}
103-
104-
override fun getPropertyValue(property: IProperty): String? {
105-
return null
106-
}
107-
108-
override fun setPropertyValue(property: IProperty, value: String?) {
109-
if (value != null) {
110-
throw IllegalArgumentException("$concept doesn't contain a property $property")
111-
}
112-
}
113-
114-
override fun getPropertyLinks(): List<IProperty> {
115-
return emptyList() // A repository has no properties
116-
}
117-
118-
override fun getReferenceLinks(): List<IReferenceLink> {
119-
return emptyList() // A repository has no references
120-
}
12166
}
67+
68+
private fun SModule.isTempModule(): Boolean = this is TempModule || this is TempModule2

0 commit comments

Comments
 (0)