From e7487451e5abac4be0c97aa4a8dafcb8ac6a0bb9 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Wed, 15 May 2024 21:40:54 +0200 Subject: [PATCH] Fixing bug that prevents `MappingEntries` from getting processed. --- CHANGELOG.md | 1 + .../io/source/TimeSeriesMappingSource.java | 12 ++++++++++++ .../input/InputEntityProcessorTest.groovy | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec5cb4033..10822aede 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Enhancing `VoltageLevel` with `equals` method [#1063](https://github.com/ie3-institute/PowerSystemDataModel/issues/1063) ### Fixed +- Fixed `MappingEntryies` not getting processed by adding `Getter` methods for record fields [#1084](https://github.com/ie3-institute/PowerSystemDataModel/issues/1084) ### Changed - Improvements to the search for corner points in `IdCoordinateSource` [#1016](https://github.com/ie3-institute/PowerSystemDataModel/issues/1016) diff --git a/src/main/java/edu/ie3/datamodel/io/source/TimeSeriesMappingSource.java b/src/main/java/edu/ie3/datamodel/io/source/TimeSeriesMappingSource.java index aad5b2174..f65e7eb58 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/TimeSeriesMappingSource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/TimeSeriesMappingSource.java @@ -10,6 +10,8 @@ import edu.ie3.datamodel.io.factory.EntityData; import edu.ie3.datamodel.io.factory.timeseries.TimeSeriesMappingFactory; import edu.ie3.datamodel.models.input.InputEntity; +import edu.ie3.datamodel.models.input.system.SystemParticipantInput; +import edu.ie3.datamodel.models.timeseries.TimeSeries; import edu.ie3.datamodel.utils.Try; import edu.ie3.datamodel.utils.Try.*; import java.util.*; @@ -75,6 +77,16 @@ private Try createMappingEntry( /** Class to represent one entry within the participant to time series mapping */ public record MappingEntry(UUID participant, UUID timeSeries) implements InputEntity { + /** Returns the {@link UUID} of the {@link SystemParticipantInput}. */ + public UUID getParticipant() { + return participant; + } + + /** Returns the {@link UUID} of the {@link TimeSeries}. */ + public UUID getTimeSeries() { + return timeSeries; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy index 42e7819de..f770b68b9 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy @@ -7,6 +7,7 @@ package edu.ie3.datamodel.io.processor.input import static edu.ie3.util.quantities.PowerSystemUnits.PU +import edu.ie3.datamodel.io.source.TimeSeriesMappingSource import edu.ie3.datamodel.models.OperationTime import edu.ie3.datamodel.models.StandardUnits import edu.ie3.datamodel.models.UniqueEntity @@ -626,6 +627,23 @@ class InputEntityProcessorTest extends Specification { actual == expected } + def "The InputEntityProcessor should serialize a provided MappingEntry correctly"() { + given: + def processor = new InputEntityProcessor(TimeSeriesMappingSource.MappingEntry) + def validResult = new TimeSeriesMappingSource.MappingEntry(UUID.fromString("7eb7b296-f4c4-4020-acf3-e865453b5dbd"), UUID.fromString("bc581c6c-3044-48a1-aea1-5b2cb1370356")) + + Map expectedResults = [ + "participant": "7eb7b296-f4c4-4020-acf3-e865453b5dbd", + "timeSeries": "bc581c6c-3044-48a1-aea1-5b2cb1370356" + ] + + when: "the entity is passed to the processor" + def processingResult = processor.handleEntity(validResult) + + then: "make sure that the result is as expected " + processingResult == expectedResults + } + def "The InputEntityProcessor should serialize an entity but ignore the operator field when OperatorInput is equal to NO_OPERATOR_ASSIGNED"() { given: InputEntityProcessor processor = new InputEntityProcessor(NodeInput)