diff --git a/numass-data-proto/src/main/kotlin/ru/inr/mass/data/proto/NumassProtoPlugin.kt b/numass-data-proto/src/main/kotlin/ru/inr/mass/data/proto/NumassProtoPlugin.kt index 4276ac1..512c548 100644 --- a/numass-data-proto/src/main/kotlin/ru/inr/mass/data/proto/NumassProtoPlugin.kt +++ b/numass-data-proto/src/main/kotlin/ru/inr/mass/data/proto/NumassProtoPlugin.kt @@ -1,6 +1,5 @@ package ru.inr.mass.data.proto -import kotlinx.coroutines.launch import ru.inr.mass.data.api.NumassPoint import space.kscience.dataforge.context.AbstractPlugin import space.kscience.dataforge.context.Context @@ -64,15 +63,14 @@ public suspend fun NumassProtoPlugin.readRepository(path: Path): DataTree = readRepository(Path.of(path)) +public suspend fun NumassProtoPlugin.readRepository(path: String): DataTree = + readRepository(Path.of(path)) public fun NumassProtoPlugin.readPoint(path: String): NumassPoint = readNumassPointFile(path) ?: error("Can't read numass point at $path") diff --git a/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/NumassCommonPlugin.kt b/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/NumassCommonPlugin.kt index 0147c17..6813a39 100644 --- a/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/NumassCommonPlugin.kt +++ b/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/NumassCommonPlugin.kt @@ -27,6 +27,7 @@ public class NumassCommonPlugin(meta: Meta = Meta.EMPTY) : VisionPlugin(meta) { subclass(VisionOfNumassHv.serializer()) subclass(VisionOfNumassPoint.serializer()) subclass(VisionOfNumassSet.serializer()) + subclass(VisionOfNumassSetRef.serializer()) subclass(VisionOfNumassRepository.serializer()) } } diff --git a/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassRepository.kt b/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassRepository.kt index 286e06f..b7f6f37 100644 --- a/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassRepository.kt +++ b/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassRepository.kt @@ -4,10 +4,11 @@ import kotlinx.serialization.Serializable import ru.inr.mass.data.api.NumassSet import space.kscience.dataforge.data.DataTree import space.kscience.dataforge.data.DataTreeItem -import space.kscience.dataforge.data.await +import space.kscience.dataforge.misc.Named import space.kscience.dataforge.names.Name import space.kscience.dataforge.names.NameToken import space.kscience.dataforge.names.plus +import space.kscience.visionforge.AbstractVision import space.kscience.visionforge.AbstractVisionGroup @Serializable @@ -15,13 +16,18 @@ public class VisionOfNumassRepository : AbstractVisionGroup() { override fun createGroup(): VisionOfNumassRepository = VisionOfNumassRepository() } +@Serializable +public class VisionOfNumassSetRef( + override val name: Name, +) : Named, AbstractVision() + public suspend fun VisionOfNumassRepository( repoName: Name, tree: DataTree, ): VisionOfNumassRepository = VisionOfNumassRepository().apply { tree.items.forEach { (key: NameToken, value) -> children[key] = when (value) { - is DataTreeItem.Leaf -> VisionOfNumassSet(repoName + key, value.data.await()) + is DataTreeItem.Leaf -> VisionOfNumassSetRef(repoName + key) is DataTreeItem.Node -> VisionOfNumassRepository(repoName + key, value.tree) } } diff --git a/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassSet.kt b/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassSet.kt index 3b9a3a2..3096eb4 100644 --- a/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassSet.kt +++ b/numass-data-server/src/commonMain/kotlin/ru/inr/mass/data/server/VisionOfNumassSet.kt @@ -19,11 +19,13 @@ public data class PointRef( @Serializable public class VisionOfNumassSet( + public val meta: Meta, public val points: List, public val hvData: HVData? = null, ) : AbstractVision() public fun VisionOfNumassSet(setName: Name, set: NumassSet): VisionOfNumassSet = VisionOfNumassSet( + set.meta, set.points.map { point -> PointRef( setName + point.index.toString(),