diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d7d986..c751014 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Issues related to em data [#2366](https://github.com/ie3-institute/simonaAPI/issues/366) +- `Fixed bugs in `ExtEntityMapping` [#373](https://github.com/ie3-institute/simonaAPI/issues/373) ## [0.11.0] - 2025-10-23 diff --git a/src/main/java/edu/ie3/simona/api/mapping/ExtEntityMapping.java b/src/main/java/edu/ie3/simona/api/mapping/ExtEntityMapping.java index 113308a..54bfacf 100644 --- a/src/main/java/edu/ie3/simona/api/mapping/ExtEntityMapping.java +++ b/src/main/java/edu/ie3/simona/api/mapping/ExtEntityMapping.java @@ -171,10 +171,7 @@ public ExtEntityMapping include( List includedUuids = included.stream().map(this::get).filter(Optional::isPresent).map(Optional::get).toList(); - schemeOption.ifPresent( - scheme -> includedUuids.forEach(uuid -> primaryMapping.put(uuid, scheme.getValueClass()))); - addExtEntities(dataType, includedUuids); - + copy.includeIds(dataType, includedUuids, schemeOption); return copy; } diff --git a/src/test/groovy/edu/ie3/simona/api/mapping/ExtEntityMappingTest.groovy b/src/test/groovy/edu/ie3/simona/api/mapping/ExtEntityMappingTest.groovy index fa1b572..6c66c88 100644 --- a/src/test/groovy/edu/ie3/simona/api/mapping/ExtEntityMappingTest.groovy +++ b/src/test/groovy/edu/ie3/simona/api/mapping/ExtEntityMappingTest.groovy @@ -5,15 +5,12 @@ import edu.ie3.datamodel.models.input.AssetInput import edu.ie3.datamodel.models.input.EmInput import edu.ie3.datamodel.models.input.NodeInput import edu.ie3.datamodel.models.input.container.GraphicElements -import edu.ie3.datamodel.models.input.container.JointGridContainer import edu.ie3.datamodel.models.input.container.RawGridElements import edu.ie3.datamodel.models.input.container.SubGridContainer import edu.ie3.datamodel.models.input.container.SystemParticipants import edu.ie3.datamodel.models.input.system.FixedFeedInInput -import edu.ie3.datamodel.models.input.system.LoadInput import edu.ie3.datamodel.models.input.system.SystemParticipantInput import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils -import edu.ie3.datamodel.models.voltagelevels.VoltageLevel import edu.ie3.util.quantities.PowerSystemUnits import spock.lang.Shared import spock.lang.Specification @@ -102,6 +99,34 @@ class ExtEntityMappingTest extends Specification { mapping.ems == [em.uuid] as Set } + def "ExtEntityMapping can include specific external ids correctly"() { + given: + def node = new NodeInput(UUID.randomUUID(), "node", Quantities.getQuantity(1d, PowerSystemUnits.PU), false, NodeInput.DEFAULT_GEO_POSITION, GermanVoltageLevelUtils.LV, 1) + def em = new EmInput(UUID.randomUUID(), "em", "", null) + def participant = new FixedFeedInInput(UUID.randomUUID(), "ffi", node, null, em, Quantities.getQuantity(10, PowerSystemUnits.KILOVOLTAMPERE), 0.9) + + List gridAssets = [node] + List participantInputs = [participant] + + def grid = new SubGridContainer( + "test grid", + 1, + new RawGridElements(gridAssets), + new SystemParticipants(participantInputs), + new GraphicElements([]) + ) + def mapping = new ExtEntityMapping(grid) + + when: + def updated = mapping.include(DataType.RESULT, ["ffi"], Optional.empty()) + + then: + // only the included ids will be returned, other grid ids will be ignored + mapping.getAssets(DataType.RESULT) == [node.uuid, participant.uuid, em.uuid] + updated.getAssets(DataType.RESULT) == [participant.uuid] + } + + def "ExtEntityMapping should return the data types correctly"() { when: def extEntryMapping = new ExtEntityMapping(assets)