From 46c19fb2923034a4c0659e0f2aa1bd4d648dc65a Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Fri, 15 Dec 2023 22:32:01 +0100 Subject: [PATCH] Compiles --- .../input/participant/BmInputFactory.java | 3 +- .../input/participant/ChpInputEntityData.java | 7 +- .../input/participant/ChpInputFactory.java | 3 +- .../input/participant/EvInputFactory.java | 4 +- .../input/participant/EvcsInputFactory.java | 3 +- .../participant/FixedFeedInInputFactory.java | 8 +- .../input/participant/HpInputEntityData.java | 7 +- .../input/participant/HpInputFactory.java | 4 +- .../input/participant/LoadInputFactory.java | 3 +- .../input/participant/PvInputFactory.java | 3 +- .../participant/StorageInputFactory.java | 3 +- .../SystemParticipantEntityData.java | 39 -- .../ie3/datamodel/io/source/EntitySource.java | 126 +++--- .../datamodel/io/source/RawGridSource.java | 2 +- .../io/source/ResultEntitySource.java | 83 ++-- .../io/source/SystemParticipantSource.java | 397 +++++++++--------- .../ie3/datamodel/io/source/TypeSource.java | 94 +++-- .../csv/CsvJointGridContainerSource.java | 7 +- .../models/input/container/GridContainer.java | 30 +- .../input/container/JointGridContainer.java | 9 +- .../input/container/SubGridContainer.java | 10 +- .../models/input/system/BmInput.java | 4 +- .../models/input/system/ChpInput.java | 4 +- .../models/input/system/EvInput.java | 4 +- .../models/input/system/EvcsInput.java | 8 +- .../models/input/system/FixedFeedInInput.java | 4 +- .../models/input/system/HpInput.java | 4 +- .../models/input/system/LoadInput.java | 8 +- .../models/input/system/PvInput.java | 4 +- .../models/input/system/StorageInput.java | 4 +- .../input/system/SystemParticipantInput.java | 26 +- .../utils/ContainerNodeUpdateUtil.java | 2 - .../ie3/datamodel/utils/ContainerUtils.java | 23 +- .../io/source/EntitySourceTest.groovy | 2 +- .../csv/CsvSystemParticipantSourceTest.groovy | 2 +- 35 files changed, 438 insertions(+), 506 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/BmInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/BmInputFactory.java index 427a2d821..3824982f0 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/BmInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/BmInputFactory.java @@ -10,6 +10,7 @@ import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.datamodel.models.input.system.BmInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import edu.ie3.datamodel.models.input.system.type.BmTypeInput; import edu.ie3.util.quantities.interfaces.EnergyPrice; @@ -39,9 +40,9 @@ protected BmInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); final BmTypeInput typeInput = data.getTypeInput(); final boolean marketReaction = data.getBoolean(MARKET_REACTION); final boolean costControlled = data.getBoolean(COST_CONTROLLED); diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputEntityData.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputEntityData.java index 800102fb9..12067138f 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputEntityData.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputEntityData.java @@ -8,6 +8,7 @@ import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.datamodel.models.input.system.ChpInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.type.ChpTypeInput; import edu.ie3.datamodel.models.input.thermal.ThermalBusInput; import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput; @@ -21,10 +22,11 @@ public class ChpInputEntityData extends SystemParticipantTypedEntityData fieldsToAttributes, NodeInput node, + EmInput em, ChpTypeInput typeInput, ThermalBusInput thermalBusInput, ThermalStorageInput thermalStorageInput) { - super(fieldsToAttributes, ChpInput.class, node, typeInput); + super(fieldsToAttributes, ChpInput.class, node, em, typeInput); this.thermalBusInput = thermalBusInput; this.thermalStorageInput = thermalStorageInput; } @@ -33,10 +35,11 @@ public ChpInputEntityData( Map fieldsToAttributes, OperatorInput operator, NodeInput node, + EmInput em, ChpTypeInput typeInput, ThermalBusInput thermalBusInput, ThermalStorageInput thermalStorageInput) { - super(fieldsToAttributes, ChpInput.class, operator, node, typeInput); + super(fieldsToAttributes, ChpInput.class, operator, node, em, typeInput); this.thermalBusInput = thermalBusInput; this.thermalStorageInput = thermalStorageInput; } diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputFactory.java index 73b9674f2..ebe33ccf1 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/ChpInputFactory.java @@ -9,6 +9,7 @@ import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.datamodel.models.input.system.ChpInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import java.util.UUID; @@ -32,9 +33,9 @@ protected ChpInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); final boolean marketReaction = data.getBoolean(MARKET_REACTION); return new ChpInput( diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvInputFactory.java index 7cea1d006..8d4779e0c 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvInputFactory.java @@ -8,6 +8,7 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.EvInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import edu.ie3.datamodel.models.input.system.type.EvTypeInput; @@ -33,9 +34,10 @@ protected EvInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); + return new EvInput( uuid, id, operator, operationTime, node, qCharacteristics, em, data.getTypeInput()); } diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java index 83a24bbb1..aae2f8b6a 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java @@ -11,6 +11,7 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.EvcsInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import edu.ie3.datamodel.models.input.system.type.chargingpoint.ChargingPointType; @@ -53,7 +54,7 @@ protected EvcsInput buildModel( ReactivePowerCharacteristic qCharacteristics, OperatorInput operator, OperationTime operationTime) { - + final EmInput em = data.getEm().orElse(null); final ChargingPointType type; try { type = ChargingPointTypeUtils.parse(data.getField(TYPE)); diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/FixedFeedInInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/FixedFeedInInputFactory.java index 773a7d0e6..9e379d4b0 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/FixedFeedInInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/FixedFeedInInputFactory.java @@ -5,11 +5,11 @@ */ package edu.ie3.datamodel.io.factory.input.participant; -import edu.ie3.datamodel.io.factory.input.NodeAssetInputEntityData; import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.StandardUnits; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.FixedFeedInInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import java.util.UUID; @@ -17,7 +17,7 @@ import tech.units.indriya.ComparableQuantity; public class FixedFeedInInputFactory - extends SystemParticipantInputEntityFactory { + extends SystemParticipantInputEntityFactory { private static final String S_RATED = "srated"; private static final String COSPHI_RATED = "cosphirated"; @@ -33,14 +33,14 @@ protected String[] getAdditionalFields() { @Override protected FixedFeedInInput buildModel( - NodeAssetInputEntityData data, + SystemParticipantEntityData data, UUID uuid, String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); final ComparableQuantity sRated = data.getQuantity(S_RATED, StandardUnits.S_RATED); final double cosPhiRated = data.getDouble(COSPHI_RATED); diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java index 38eacea63..e782b40d5 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java @@ -7,6 +7,7 @@ import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.HpInput; import edu.ie3.datamodel.models.input.system.type.HpTypeInput; import edu.ie3.datamodel.models.input.thermal.ThermalBusInput; @@ -19,9 +20,10 @@ public class HpInputEntityData extends SystemParticipantTypedEntityData fieldsToAttributes, NodeInput node, + EmInput em, HpTypeInput typeInput, ThermalBusInput thermalBusInput) { - super(fieldsToAttributes, HpInput.class, node, typeInput); + super(fieldsToAttributes, HpInput.class, node, em, typeInput); this.thermalBusInput = thermalBusInput; } @@ -29,9 +31,10 @@ public HpInputEntityData( Map fieldsToAttributes, OperatorInput operator, NodeInput node, + EmInput em, HpTypeInput typeInput, ThermalBusInput thermalBusInput) { - super(fieldsToAttributes, HpInput.class, operator, node, typeInput); + super(fieldsToAttributes, HpInput.class, operator, node, em, typeInput); this.thermalBusInput = thermalBusInput; } diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputFactory.java index 616effa98..774a09ec8 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputFactory.java @@ -8,6 +8,7 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.HpInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import java.util.UUID; @@ -31,9 +32,10 @@ protected HpInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); + return new HpInput( uuid, id, diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/LoadInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/LoadInputFactory.java index 12b763abe..b77853495 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/LoadInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/LoadInputFactory.java @@ -10,6 +10,7 @@ import edu.ie3.datamodel.models.StandardUnits; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.LoadInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import edu.ie3.datamodel.models.profile.LoadProfile; @@ -46,7 +47,6 @@ protected LoadInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { LoadProfile loadProfile; @@ -59,6 +59,7 @@ protected LoadInput buildModel( id); loadProfile = LoadProfile.DefaultLoadProfiles.NO_LOAD_PROFILE; } + final EmInput em = data.getEm().orElse(null); final boolean dsm = data.getBoolean(DSM); final ComparableQuantity eConsAnnual = data.getQuantity(E_CONS_ANNUAL, StandardUnits.ENERGY_IN); diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/PvInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/PvInputFactory.java index 41997f445..29a3389fb 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/PvInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/PvInputFactory.java @@ -9,6 +9,7 @@ import edu.ie3.datamodel.models.StandardUnits; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.PvInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import java.util.UUID; @@ -47,9 +48,9 @@ protected PvInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); final double albedo = data.getDouble(ALBEDO); final ComparableQuantity azimuth = data.getQuantity(AZIMUTH, StandardUnits.AZIMUTH); final ComparableQuantity etaConv = diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/StorageInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/StorageInputFactory.java index 24adbec5a..d9790117d 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/StorageInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/StorageInputFactory.java @@ -8,6 +8,7 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; +import edu.ie3.datamodel.models.input.system.EmInput; import edu.ie3.datamodel.models.input.system.StorageInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import edu.ie3.datamodel.models.input.system.type.StorageTypeInput; @@ -33,9 +34,9 @@ protected StorageInput buildModel( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, OperatorInput operator, OperationTime operationTime) { + final EmInput em = data.getEm().orElse(null); final StorageTypeInput typeInput = data.getTypeInput(); return new StorageInput( uuid, id, operator, operationTime, node, qCharacteristics, em, typeInput); diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantEntityData.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantEntityData.java index f65fea7b7..204b72b3c 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantEntityData.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantEntityData.java @@ -5,18 +5,14 @@ */ package edu.ie3.datamodel.io.factory.input.participant; -import edu.ie3.datamodel.exceptions.SourceException; import edu.ie3.datamodel.io.factory.input.NodeAssetInputEntityData; import edu.ie3.datamodel.models.UniqueEntity; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.datamodel.models.input.system.EmInput; -import edu.ie3.datamodel.utils.Try; - import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.UUID; /** * Data used for those classes of {@link @@ -114,39 +110,4 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(super.hashCode(), getEm()); } - - public static Try build( - NodeAssetInputEntityData nodeAssetInputEntityData, Map ems) { - - Map fieldsToAttributes = nodeAssetInputEntityData.getFieldsToValues(); - - Try, SourceException> tryEm = - Optional.ofNullable( - nodeAssetInputEntityData.getUUID(SystemParticipantInputEntityFactory.EM)) - .map( - // System participant has been given a proper UUID. This means we either... - emUuid -> - Optional.ofNullable(ems.get(emUuid)) - // ... find a matching EmInput for given UUID, thus return a success with - // the EM - .map( - emInput -> - (Try, SourceException>) - new Try.Success, SourceException>( - Optional.of(emInput))) - // ... or find no matching EmInput, returning a failure. - .orElse(new Try.Failure<>(new SourceException("")))) - // If, on the other hand, no UUID was given (column does not exist, or field is empty), - // this is totally fine - we return an "empty success" - .orElse(new Try.Success<>(Optional.empty())); - - return tryEm.map( - // if the operation was successful, transform and return to the data - optionalEm -> { - // remove fields that are passed as objects to constructor - fieldsToAttributes.keySet().remove(SystemParticipantInputEntityFactory.EM); - - return new SystemParticipantEntityData(nodeAssetInputEntityData, optionalEm.orElse(null)); - }); - } } diff --git a/src/main/java/edu/ie3/datamodel/io/source/EntitySource.java b/src/main/java/edu/ie3/datamodel/io/source/EntitySource.java index f505ed4b5..b3e9aaf96 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/EntitySource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/EntitySource.java @@ -15,7 +15,6 @@ import edu.ie3.datamodel.io.factory.input.TypedConnectorInputEntityData; import edu.ie3.datamodel.models.UniqueEntity; import edu.ie3.datamodel.models.input.*; -import edu.ie3.datamodel.models.result.ResultEntity; import edu.ie3.datamodel.utils.Try; import edu.ie3.datamodel.utils.Try.*; import java.util.*; @@ -43,7 +42,7 @@ protected EntitySource(DataSource dataSource) { // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - protected String buildSkippingMessage( + protected static String buildSkippingMessage( String entityDesc, String entityUuid, String entityId, String missingElementsString) { return "Skipping " + entityDesc @@ -66,7 +65,7 @@ protected String buildSkippingMessage( * @param mapName name of the map used for the error message * @return either the value or an error message */ - protected String safeMapGet(Map map, String key, String mapName) { + protected static String safeMapGet(Map map, String key, String mapName) { return Optional.ofNullable(map.get(key)) .orElse( "Key '" @@ -85,7 +84,7 @@ protected String safeMapGet(Map map, String key, String mapName) * @return either an optional containing the first entity that has the provided uuid or an empty * optional if no matching entity with the provided uuid can be found */ - protected Optional findFirstEntityByUuid( + protected static Optional findFirstEntityByUuid( UUID entityUuid, Collection entities) { return entities.stream() .parallel() @@ -106,7 +105,7 @@ protected Optional findFirstEntityByUuid( * @param the type of the resulting type instance * @return a {@link Success} containing the type or a {@link Failure} if the type cannot be found */ - protected Try getAssetType( + protected static Try getAssetType( Collection types, Map fieldsToAttributes, String skippedClassString) { Optional assetType = @@ -246,6 +245,53 @@ protected Stream> nodeAssetInputE }); } + // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + /** + * Returns a stream of {@link Try} entities that can be build by using {@link + * NodeAssetInputEntityData} and their corresponding factory. + * + * @param entityClass the entity class that should be build + * @param factory the factory that should be used for the building process + * @param nodes a collection of {@link NodeInput} entities that should be used to build the + * entities + * @param operators a collection of {@link OperatorInput} entities should be used to build the + * entities + * @param Type of the {@link AssetInput} to expect + * @return stream of tries of the entities that has been built by the factory + */ + public Set> buildNodeAssetEntities( + Class entityClass, + EntityFactory factory, + Collection operators, + Collection nodes) { + return nodeAssetEntityStream(entityClass, factory, operators, nodes) + .collect(Collectors.toSet()); + } + + protected Stream> nodeAssetEntityStream( + Class entityClass, + EntityFactory factory, + Collection operators, + Collection nodes) { + return nodeAssetInputEntityDataStream(assetInputEntityDataStream(entityClass, operators), nodes) + .map(factory::get); + } + + public Set> buildAssetInputEntities( + Class entityClass, + EntityFactory factory, + Collection operators) { + return assetInputEntityStream(entityClass, factory, operators).collect(Collectors.toSet()); + } + + protected Stream> assetInputEntityStream( + Class entityClass, + EntityFactory factory, + Collection operators) { + return assetInputEntityDataStream(entityClass, operators).map(factory::get); + } + /** * Returns a stream of optional {@link AssetInputEntityData} that can be used to build instances * of several subtypes of {@link UniqueEntity} by a corresponding {@link EntityFactory} that @@ -263,10 +309,10 @@ protected Stream assetInputEntityDa .getSourceData(entityClass) .map( fieldsToAttributes -> - assetInputEntityDataStream(entityClass, fieldsToAttributes, operators)); + createAssetInputEntityData(entityClass, fieldsToAttributes, operators)); } - protected AssetInputEntityData assetInputEntityDataStream( + protected AssetInputEntityData createAssetInputEntityData( Class entityClass, Map fieldsToAttributes, Collection operators) { @@ -294,73 +340,21 @@ protected AssetInputEntityData assetInputEntityDataStream * fields-to-attributes map. * * @param entityClass the entity class that should be build - * @param Type of the {@link ResultEntity} to expect + * @param Type of the {@link UniqueEntity} to expect * @return stream of {@link SimpleEntityData} */ - protected Stream simpleEntityDataStream( + protected Stream simpleEntityDataStream( Class entityClass) { return dataSource .getSourceData(entityClass) .map(fieldsToAttributes -> new SimpleEntityData(fieldsToAttributes, entityClass)); } - protected Stream> assetInputEntityStream( - Class entityClass, - EntityFactory factory, - Collection operators) { - return assetInputEntityDataStream(entityClass, operators).map(factory::get); - } - - protected Stream> nodeAssetEntityStream( - Class entityClass, - EntityFactory factory, - Collection nodes, - Collection operators) { - return nodeAssetInputEntityDataStream(assetInputEntityDataStream(entityClass, operators), nodes) - .map(factory::get); - } - - // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - - /** - * Returns a stream of {@link Try} entities that can be build by using {@link - * NodeAssetInputEntityData} and their corresponding factory. - * - * @param entityClass the entity class that should be build - * @param factory the factory that should be used for the building process - * @param nodes a collection of {@link NodeInput} entities that should be used to build the - * entities - * @param operators a collection of {@link OperatorInput} entities should be used to build the - * entities - * @param Type of the {@link AssetInput} to expect - * @return stream of tries of the entities that has been built by the factory - */ - public Set> buildNodeAssetEntities( - Class entityClass, - EntityFactory factory, - Collection nodes, - Collection operators) { - return nodeAssetEntityStream(entityClass, factory, nodes, operators) - .collect(Collectors.toSet()); - } - - public Set> buildAssetInputEntities( - Class entityClass, - EntityFactory factory, - Collection operators) { - return assetInputEntityStream(entityClass, factory, operators).collect(Collectors.toSet()); - } - - @SuppressWarnings("unchecked") - public Set> buildEntities( - Class entityClass, EntityFactory factory) { - return dataSource - .getSourceData(entityClass) - .map( - fieldsToAttributes -> { - SimpleEntityData data = new SimpleEntityData(fieldsToAttributes, entityClass); - return (Try) factory.get(data); - }) + protected static Set unpack( + Stream> inputStream, Class entityClass) throws SourceException { + return Try.scanStream(inputStream, entityClass.getSimpleName()) + .transformF(SourceException::new) + .getOrThrow() .collect(Collectors.toSet()); } } diff --git a/src/main/java/edu/ie3/datamodel/io/source/RawGridSource.java b/src/main/java/edu/ie3/datamodel/io/source/RawGridSource.java index ba90ea3ff..283a635f5 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/RawGridSource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/RawGridSource.java @@ -403,7 +403,7 @@ public Set getMeasurementUnits( Set nodes, Set operators) throws SourceException { return Try.scanCollection( buildNodeAssetEntities( - MeasurementUnitInput.class, measurementUnitInputFactory, nodes, operators), + MeasurementUnitInput.class, measurementUnitInputFactory, operators, nodes), MeasurementUnitInput.class) .transformF(SourceException::new) .getOrThrow(); diff --git a/src/main/java/edu/ie3/datamodel/io/source/ResultEntitySource.java b/src/main/java/edu/ie3/datamodel/io/source/ResultEntitySource.java index 87d9fcc21..3f8029158 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/ResultEntitySource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/ResultEntitySource.java @@ -5,6 +5,7 @@ */ package edu.ie3.datamodel.io.source; +import edu.ie3.datamodel.exceptions.SourceException; import edu.ie3.datamodel.io.factory.SimpleEntityFactory; import edu.ie3.datamodel.io.factory.result.*; import edu.ie3.datamodel.models.result.NodeResult; @@ -16,9 +17,7 @@ import edu.ie3.datamodel.models.result.system.*; import edu.ie3.datamodel.models.result.thermal.CylindricalStorageResult; import edu.ie3.datamodel.models.result.thermal.ThermalHouseResult; -import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; /** * Interface that provides the capability to build entities of type {@link ResultEntity} container @@ -37,7 +36,7 @@ public class ResultEntitySource extends EntitySource { private final FlexOptionsResultFactory flexOptionsResultFactory; public ResultEntitySource(DataSource dataSource) { - this.dataSource = dataSource; + super(dataSource); // init factories this.systemParticipantResultFactory = new SystemParticipantResultFactory(); @@ -49,7 +48,7 @@ public ResultEntitySource(DataSource dataSource) { } public ResultEntitySource(DataSource dataSource, String dtfPattern) { - this.dataSource = dataSource; + super(dataSource); // init factories this.systemParticipantResultFactory = new SystemParticipantResultFactory(dtfPattern); @@ -69,7 +68,7 @@ public ResultEntitySource(DataSource dataSource, String dtfPattern) { * * @return a set of object and uuid unique {@link NodeResult} entities */ - public Set getNodeResults() { + public Set getNodeResults() throws SourceException { return getResultEntities(NodeResult.class, nodeResultFactory); } @@ -83,7 +82,7 @@ public Set getNodeResults() { * * @return a set of object and uuid unique {@link SwitchResult} entities */ - public Set getSwitchResults() { + public Set getSwitchResults() throws SourceException { return getResultEntities(SwitchResult.class, switchResultFactory); } @@ -96,7 +95,7 @@ public Set getSwitchResults() { * * @return a set of object and uuid unique {@link LineResult} entities */ - public Set getLineResults() { + public Set getLineResults() throws SourceException { return getResultEntities(LineResult.class, connectorResultFactory); } @@ -110,7 +109,7 @@ public Set getLineResults() { * * @return a set of object and uuid unique {@link Transformer2WResult} entities */ - public Set getTransformer2WResultResults() { + public Set getTransformer2WResultResults() throws SourceException { return getResultEntities(Transformer2WResult.class, connectorResultFactory); } @@ -124,7 +123,7 @@ public Set getTransformer2WResultResults() { * * @return a set of object and uuid unique {@link Transformer3WResult} entities */ - public Set getTransformer3WResultResults() { + public Set getTransformer3WResultResults() throws SourceException { return getResultEntities(Transformer3WResult.class, connectorResultFactory); } @@ -138,7 +137,7 @@ public Set getTransformer3WResultResults() { * * @return a set of object and uuid unique {@link FlexOptionsResult} entities */ - public Set getFlexOptionsResults() { + public Set getFlexOptionsResults() throws SourceException { return getResultEntities(FlexOptionsResult.class, flexOptionsResultFactory); } @@ -151,7 +150,7 @@ public Set getFlexOptionsResults() { * * @return a set of object and uuid unique {@link LoadResult} entities */ - public Set getLoadResults() { + public Set getLoadResults() throws SourceException { return getResultEntities(LoadResult.class, systemParticipantResultFactory); } @@ -164,7 +163,7 @@ public Set getLoadResults() { * * @return a set of object and uuid unique {@link PvResult} entities */ - public Set getPvResults() { + public Set getPvResults() throws SourceException { return getResultEntities(PvResult.class, systemParticipantResultFactory); } @@ -178,7 +177,7 @@ public Set getPvResults() { * * @return a set of object and uuid unique {@link FixedFeedInResult} entities */ - public Set getFixedFeedInResults() { + public Set getFixedFeedInResults() throws SourceException { return getResultEntities(FixedFeedInResult.class, systemParticipantResultFactory); } @@ -191,7 +190,7 @@ public Set getFixedFeedInResults() { * * @return a set of object and uuid unique {@link BmResult} entities */ - public Set getBmResults() { + public Set getBmResults() throws SourceException { return getResultEntities(BmResult.class, systemParticipantResultFactory); } @@ -204,7 +203,7 @@ public Set getBmResults() { * * @return a set of object and uuid unique {@link ChpResult} entities */ - public Set getChpResults() { + public Set getChpResults() throws SourceException { return getResultEntities(ChpResult.class, systemParticipantResultFactory); } @@ -217,7 +216,7 @@ public Set getChpResults() { * * @return a set of object and uuid unique {@link WecResult} entities */ - public Set getWecResults() { + public Set getWecResults() throws SourceException { return getResultEntities(WecResult.class, systemParticipantResultFactory); } @@ -231,7 +230,7 @@ public Set getWecResults() { * * @return a set of object and uuid unique {@link StorageResult} entities */ - public Set getStorageResults() { + public Set getStorageResults() throws SourceException { return getResultEntities(StorageResult.class, systemParticipantResultFactory); } @@ -244,7 +243,7 @@ public Set getStorageResults() { * * @return a set of object and uuid unique {@link EvcsResult} entities */ - public Set getEvcsResults() { + public Set getEvcsResults() throws SourceException { return getResultEntities(EvcsResult.class, systemParticipantResultFactory); } @@ -257,7 +256,7 @@ public Set getEvcsResults() { * * @return a set of object and uuid unique {@link EvResult} entities */ - public Set getEvResults() { + public Set getEvResults() throws SourceException { return getResultEntities(EvResult.class, systemParticipantResultFactory); } @@ -270,7 +269,7 @@ public Set getEvResults() { * * @return a set of object and uuid unique {@link HpResult} entities */ - public Set getHpResults() { + public Set getHpResults() throws SourceException { return getResultEntities(HpResult.class, systemParticipantResultFactory); } @@ -284,7 +283,7 @@ public Set getHpResults() { * * @return a set of object and uuid unique {@link CylindricalStorageResult} entities */ - public Set getCylindricalStorageResult() { + public Set getCylindricalStorageResult() throws SourceException { return getResultEntities(CylindricalStorageResult.class, thermalResultFactory); } @@ -298,7 +297,7 @@ public Set getCylindricalStorageResult() { * * @return a set of object and uuid unique {@link ThermalHouseResult} entities */ - public Set getThermalHouseResults() { + public Set getThermalHouseResults() throws SourceException { return getResultEntities(ThermalHouseResult.class, thermalResultFactory); } @@ -311,32 +310,28 @@ public Set getThermalHouseResults() { * * @return a set of object and uuid unique {@link EmResult} entities */ - public Set getEmResults() { + public Set getEmResults() throws SourceException { return getResultEntities(EmResult.class, systemParticipantResultFactory); } // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - private Set getResultEntities( - Class entityClass, SimpleEntityFactory factory) { - return simpleEntityDataStream(entityClass) - .map( - entityData -> - factory - .get(entityData) - .getData() - .flatMap(loadResult -> cast(entityClass, loadResult))) - .flatMap(Optional::stream) - .collect(Collectors.toSet()); - } - private Optional cast( - Class entityClass, ResultEntity resultEntity) { - if (resultEntity.getClass().equals(entityClass)) { - // safe here as a) type is checked and b) csv data stream already filters non-fitting input - // data - return Optional.of(entityClass.cast(resultEntity)); - } else { - return Optional.empty(); - } + /** + * Build and cast entities to the correct type, since result factories outputs result entities of + * some general type. + * + * @param entityClass + * @param factory + * @return + * @param + */ + @SuppressWarnings("unchecked") + private Set getResultEntities( + Class entityClass, SimpleEntityFactory factory) + throws SourceException { + return unpack( + simpleEntityDataStream(entityClass) + .map(entityData -> factory.get(entityData).map(data -> (T) data)), + entityClass); } } diff --git a/src/main/java/edu/ie3/datamodel/io/source/SystemParticipantSource.java b/src/main/java/edu/ie3/datamodel/io/source/SystemParticipantSource.java index 76e1713a8..c6d7acb86 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/SystemParticipantSource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/SystemParticipantSource.java @@ -5,10 +5,8 @@ */ package edu.ie3.datamodel.io.source; -import edu.ie3.datamodel.exceptions.FactoryException; import edu.ie3.datamodel.exceptions.SourceException; import edu.ie3.datamodel.exceptions.SystemParticipantsException; -import edu.ie3.datamodel.io.factory.EntityFactory; import edu.ie3.datamodel.io.factory.input.NodeAssetInputEntityData; import edu.ie3.datamodel.io.factory.input.participant.*; import edu.ie3.datamodel.models.input.NodeInput; @@ -19,10 +17,9 @@ import edu.ie3.datamodel.models.input.thermal.ThermalBusInput; import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput; import edu.ie3.datamodel.utils.Try; -import edu.ie3.datamodel.utils.Try.*; +import edu.ie3.datamodel.utils.Try.Failure; +import edu.ie3.datamodel.utils.Try.Success; import java.util.*; -import java.util.Set; -import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -117,27 +114,29 @@ public SystemParticipants getSystemParticipants() throws SourceException { /// go on with the nodes Set nodes = rawGridSource.getNodes(operators); Try, SourceException> fixedFeedInInputs = - Try.of(() -> getFixedFeedIns(nodes, operators), SourceException.class); + Try.of(() -> getFixedFeedIns(operators, nodes, emUnits), SourceException.class); Try, SourceException> pvInputs = - Try.of(() -> getPvPlants(nodes, operators), SourceException.class); + Try.of(() -> getPvPlants(operators, nodes, emUnits), SourceException.class); Try, SourceException> loads = - Try.of(() -> getLoads(nodes, operators), SourceException.class); + Try.of(() -> getLoads(operators, nodes, emUnits), SourceException.class); Try, SourceException> bmInputs = - Try.of(() -> getBmPlants(nodes, operators, bmTypes), SourceException.class); + Try.of(() -> getBmPlants(operators, nodes, emUnits, bmTypes), SourceException.class); Try, SourceException> storages = - Try.of(() -> getStorages(nodes, operators, storageTypes), SourceException.class); + Try.of(() -> getStorages(operators, nodes, emUnits, storageTypes), SourceException.class); Try, SourceException> wecInputs = - Try.of(() -> getWecPlants(nodes, operators, wecTypes), SourceException.class); + Try.of(() -> getWecPlants(operators, nodes, emUnits, wecTypes), SourceException.class); Try, SourceException> evs = - Try.of(() -> getEvs(nodes, operators, evTypes), SourceException.class); + Try.of(() -> getEvs(operators, nodes, emUnits, evTypes), SourceException.class); Try, SourceException> evcs = - Try.of(() -> getEvcs(nodes, operators), SourceException.class); + Try.of(() -> getEvcs(operators, nodes, emUnits), SourceException.class); Try, SourceException> chpInputs = Try.of( - () -> getChpPlants(nodes, operators, chpTypes, thermalBuses, thermalStorages), + () -> getChpPlants(operators, nodes, emUnits, chpTypes, thermalBuses, thermalStorages), SourceException.class); Try, SourceException> hpInputs = - Try.of(() -> getHeatPumps(nodes, operators, hpTypes, thermalBuses), SourceException.class); + Try.of( + () -> getHeatPumps(operators, nodes, emUnits, hpTypes, thermalBuses), + SourceException.class); List exceptions = Try.getExceptions( @@ -187,7 +186,8 @@ public SystemParticipants getSystemParticipants() throws SourceException { */ public Set getFixedFeedIns() throws SourceException { Set operators = typeSource.getOperators(); - return getFixedFeedIns(rawGridSource.getNodes(operators), operators); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getFixedFeedIns(operators, rawGridSource.getNodes(operators), emUnits); } /** @@ -209,14 +209,13 @@ public Set getFixedFeedIns() throws SourceException { * @param nodes a set of object and uuid unique {@link NodeInput} entities * @return a set of object and uuid unique {@link FixedFeedInInput} entities */ - public Set getFixedFeedIns(Set nodes, Set operators) + public Set getFixedFeedIns( + Set operators, Set nodes, Map emUnits) throws SourceException { - return Try.scanCollection( - buildNodeAssetEntities( - FixedFeedInInput.class, fixedFeedInInputFactory, nodes, operators), - FixedFeedInInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildSystemParticipantEntityData(FixedFeedInInput.class, operators, nodes, emUnits) + .map(fixedFeedInInputFactory::get), + FixedFeedInInput.class); } /** @@ -230,7 +229,8 @@ public Set getFixedFeedIns(Set nodes, Set getPvPlants() throws SourceException { Set operators = typeSource.getOperators(); - return getPvPlants(rawGridSource.getNodes(operators), operators); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getPvPlants(operators, rawGridSource.getNodes(operators), emUnits); } /** @@ -252,12 +252,13 @@ public Set getPvPlants() throws SourceException { * @param nodes a set of object and uuid unique {@link NodeInput} entities * @return a set of object and uuid unique {@link PvInput} entities */ - public Set getPvPlants(Set nodes, Set operators) + public Set getPvPlants( + Set operators, Set nodes, Map emUnits) throws SourceException { - return Try.scanCollection( - buildNodeAssetEntities(PvInput.class, pvInputFactory, nodes, operators), PvInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildSystemParticipantEntityData(PvInput.class, operators, nodes, emUnits) + .map(pvInputFactory::get), + PvInput.class); } /** @@ -271,7 +272,8 @@ public Set getPvPlants(Set nodes, Set operato */ public Set getLoads() throws SourceException { Set operators = typeSource.getOperators(); - return getLoads(rawGridSource.getNodes(operators), operators); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getLoads(operators, rawGridSource.getNodes(operators), emUnits); } /** @@ -293,13 +295,13 @@ public Set getLoads() throws SourceException { * @param nodes a set of object and uuid unique {@link NodeInput} entities * @return a set of object and uuid unique {@link LoadInput} entities */ - public Set getLoads(Set nodes, Set operators) + public Set getLoads( + Set operators, Set nodes, Map emUnits) throws SourceException { - return Try.scanCollection( - buildNodeAssetEntities(LoadInput.class, loadInputFactory, nodes, operators), - LoadInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildSystemParticipantEntityData(LoadInput.class, operators, nodes, emUnits) + .map(loadInputFactory::get), + LoadInput.class); } /** @@ -313,7 +315,8 @@ public Set getLoads(Set nodes, Set operator */ public Set getEvcs() throws SourceException { Set operators = typeSource.getOperators(); - return getEvcs(rawGridSource.getNodes(operators), operators); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getEvcs(operators, rawGridSource.getNodes(operators), emUnits); } /** @@ -335,13 +338,13 @@ public Set getEvcs() throws SourceException { * @param nodes a set of object and uuid unique {@link NodeInput} entities * @return a set of object and uuid unique {@link EvcsInput} entities */ - public Set getEvcs(Set nodes, Set operators) + public Set getEvcs( + Set operators, Set nodes, Map emUnits) throws SourceException { - return Try.scanCollection( - buildNodeAssetEntities(EvcsInput.class, evcsInputFactory, nodes, operators), - EvcsInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildSystemParticipantEntityData(EvcsInput.class, operators, nodes, emUnits) + .map(evcsInputFactory::get), + EvcsInput.class); } /** @@ -355,7 +358,9 @@ public Set getEvcs(Set nodes, Set operators */ public Set getBmPlants() throws SourceException { Set operators = typeSource.getOperators(); - return getBmPlants(rawGridSource.getNodes(operators), operators, typeSource.getBmTypes()); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getBmPlants( + operators, rawGridSource.getNodes(operators), emUnits, typeSource.getBmTypes()); } /** @@ -379,14 +384,15 @@ public Set getBmPlants() throws SourceException { * @return a set of object and uuid unique {@link BmInput} entities */ public Set getBmPlants( - Set nodes, Set operators, Set types) + Set operators, + Set nodes, + Map emUnits, + Set types) throws SourceException { - return Try.scanCollection( - buildTypedSystemParticipantEntities( - BmInput.class, bmInputFactory, nodes, operators, types), - BmInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildTypedSystemParticipantEntityData(BmInput.class, operators, nodes, emUnits, types) + .map(bmInputFactory::get), + BmInput.class); } /** @@ -401,7 +407,9 @@ public Set getBmPlants( */ public Set getStorages() throws SourceException { Set operators = typeSource.getOperators(); - return getStorages(rawGridSource.getNodes(operators), operators, typeSource.getStorageTypes()); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getStorages( + operators, rawGridSource.getNodes(operators), emUnits, typeSource.getStorageTypes()); } /** @@ -425,14 +433,15 @@ public Set getStorages() throws SourceException { * @return a set of object and uuid unique {@link StorageInput} entities */ public Set getStorages( - Set nodes, Set operators, Set types) + Set operators, + Set nodes, + Map emUnits, + Set types) throws SourceException { - return Try.scanCollection( - buildTypedSystemParticipantEntities( - StorageInput.class, storageInputFactory, nodes, operators, types), - StorageInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildTypedSystemParticipantEntityData(StorageInput.class, operators, nodes, emUnits, types) + .map(storageInputFactory::get), + StorageInput.class); } /** @@ -446,7 +455,9 @@ public Set getStorages( */ public Set getWecPlants() throws SourceException { Set operators = typeSource.getOperators(); - return getWecPlants(rawGridSource.getNodes(operators), operators, typeSource.getWecTypes()); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getWecPlants( + operators, rawGridSource.getNodes(operators), emUnits, typeSource.getWecTypes()); } /** @@ -470,14 +481,15 @@ public Set getWecPlants() throws SourceException { * @return a set of object and uuid unique {@link WecInput} entities */ public Set getWecPlants( - Set nodes, Set operators, Set types) + Set operators, + Set nodes, + Map emUnits, + Set types) throws SourceException { - return Try.scanCollection( - buildTypedSystemParticipantEntities( - WecInput.class, wecInputFactory, nodes, operators, types), - WecInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildTypedSystemParticipantEntityData(WecInput.class, operators, nodes, emUnits, types) + .map(wecInputFactory::get), + WecInput.class); } /** @@ -491,7 +503,8 @@ public Set getWecPlants( */ public Set getEvs() throws SourceException { Set operators = typeSource.getOperators(); - return getEvs(rawGridSource.getNodes(operators), operators, typeSource.getEvTypes()); + Map emUnits = energyManagementSource.getEmUnits(operators); + return getEvs(operators, rawGridSource.getNodes(operators), emUnits, typeSource.getEvTypes()); } /** @@ -515,22 +528,25 @@ public Set getEvs() throws SourceException { * @return a set of object and uuid unique {@link EvInput} entities */ public Set getEvs( - Set nodes, Set operators, Set types) + Set operators, + Set nodes, + Map emUnits, + Set types) throws SourceException { - return Try.scanCollection( - buildTypedSystemParticipantEntities( - EvInput.class, evInputFactory, nodes, operators, types), - EvInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildTypedSystemParticipantEntityData(EvInput.class, operators, nodes, emUnits, types) + .map(evInputFactory::get), + EvInput.class); } public Set getChpPlants() throws SourceException { Set operators = typeSource.getOperators(); + Map emUnits = energyManagementSource.getEmUnits(operators); Set thermalBuses = thermalSource.getThermalBuses(operators); return getChpPlants( - rawGridSource.getNodes(operators), operators, + rawGridSource.getNodes(operators), + emUnits, typeSource.getChpTypes(), thermalBuses, thermalSource.getThermalStorages(operators, thermalBuses)); @@ -547,25 +563,30 @@ public Set getChpPlants() throws SourceException { * to {@link OperatorInput#NO_OPERATOR_ASSIGNED} */ public Set getChpPlants( - Set nodes, Set operators, + Set nodes, + Map emUnits, Set types, Set thermalBuses, Set thermalStorages) throws SourceException { - return Try.scanCollection( - chpInputStream(chpInputFactory, nodes, operators, types, thermalBuses, thermalStorages) - .collect(Collectors.toSet()), - ChpInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildChpEntityData( + buildTypedSystemParticipantEntityData( + ChpInput.class, operators, nodes, emUnits, types), + thermalStorages, + thermalBuses) + .map(chpInputFactory::get), + ChpInput.class); } public Set getHeatPumps() throws SourceException { Set operators = typeSource.getOperators(); + Map emUnits = energyManagementSource.getEmUnits(operators); return getHeatPumps( - rawGridSource.getNodes(operators), operators, + rawGridSource.getNodes(operators), + emUnits, typeSource.getHpTypes(), thermalSource.getThermalBuses()); } @@ -581,69 +602,24 @@ public Set getHeatPumps() throws SourceException { * to {@link OperatorInput#NO_OPERATOR_ASSIGNED} */ public Set getHeatPumps( - Set nodes, Set operators, + Set nodes, + Map emUnits, Set types, Set thermalBuses) throws SourceException { - return Try.scanCollection( - hpInputStream(hpInputFactory, nodes, operators, types, thermalBuses) - .collect(Collectors.toSet()), - HpInput.class) - .transformF(SourceException::new) - .getOrThrow(); - } - - // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - - /** - * Constructs a stream of {@link SystemParticipantInput} entities wrapped in {@link Try}'s. - * - * @param entityClass the class of the entities that should be built - * @param factory the corresponding factory that is capable of building this entities - * @param nodes the nodes that should be considered for these entities - * @param operators the operators that should be considered for these entities - * @param types the types that should be considered for these entities - * @param the type of the resulting entity - * @param the type of the type model of the resulting entity - * @return a stream of tries being either empty or holding an instance of a {@link - * SystemParticipantInput} of the requested entity class - */ - private - Set> buildTypedSystemParticipantEntities( - Class entityClass, - EntityFactory> factory, - Collection nodes, - Collection operators, - Collection types) { - return buildTypedSystemParticipantEntityData( - nodeAssetInputEntityDataStream( - assetInputEntityDataStream(entityClass, operators), nodes), - types) - .map(factory::get) - .collect(Collectors.toSet()); + return unpack( + buildHpEntityData( + buildTypedSystemParticipantEntityData( + HpInput.class, operators, nodes, emUnits, types), + thermalBuses) + .map(hpInputFactory::get), + HpInput.class); } // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - private Stream> chpInputStream( - ChpInputFactory factory, - Collection nodes, - Collection operators, - Collection types, - Collection thermalBuses, - Collection thermalStorages) { - return buildChpEntityData( - buildTypedSystemParticipantEntityData( - nodeAssetInputEntityDataStream( - assetInputEntityDataStream(ChpInput.class, operators), nodes), - types), - thermalStorages, - thermalBuses) - .map(factory::get); - } - - private Stream> buildChpEntityData( + private static Stream> buildChpEntityData( Stream, SourceException>> typedEntityDataStream, Collection thermalStorages, @@ -655,10 +631,10 @@ private Stream> buildChpEntityData( typedEntityDataOpt -> typedEntityDataOpt.flatMap( typedEntityData -> - buildChpEntityData(typedEntityData, thermalStorages, thermalBuses))); + createChpEntityData(typedEntityData, thermalStorages, thermalBuses))); } - private Try buildChpEntityData( + private static Try createChpEntityData( SystemParticipantTypedEntityData typedEntityData, Collection thermalStorages, Collection thermalBuses) { @@ -712,28 +688,12 @@ private Try buildChpEntityData( fieldsToAttributes, typedEntityData.getOperatorInput(), typedEntityData.getNode(), + typedEntityData.getEm().orElse(null), typedEntityData.getTypeInput(), thermalBus.get(), thermalStorage.get())); } - private Stream> hpInputStream( - HpInputFactory factory, - Collection nodes, - Collection operators, - Collection types, - Collection thermalBuses) { - return buildHpEntityData( - buildTypedSystemParticipantEntityData( - buildSystemParticipantEntityData( - nodeAssetInputEntityDataStream( - assetInputEntityDataStream(HpInput.class, operators), nodes), - ems), - types), - thermalBuses) - .map(factory::get); - } - /** * Enriches a given stream of {@link SystemParticipantTypedEntityData} tries with a type of {@link * ThermalBusInput} based on the provided collection of buses and the fields to values mapping @@ -744,7 +704,7 @@ private Stream> hpInputStream( * HpInputEntityData} * @return stream of tries of {@link HpInputEntityData} instances */ - private Stream> buildHpEntityData( + private static Stream> buildHpEntityData( Stream, SourceException>> typedEntityDataStream, Collection thermalBuses) { @@ -754,16 +714,16 @@ private Stream> buildHpEntityData( .map( typedEntityDataOpt -> typedEntityDataOpt.flatMap( - typedEntityData -> buildHpEntityData(typedEntityData, thermalBuses))); + typedEntityData -> createHpEntityData(typedEntityData, thermalBuses))); } - protected Try buildHpEntityData( + private static Try createHpEntityData( SystemParticipantTypedEntityData typedEntityData, Collection thermalBuses) { // get the raw data Map fieldsToAttributes = typedEntityData.getFieldsToValues(); - // get the thermal bus input for this chp unit and try to built the entity data + // get the thermal bus input for this chp unit and try to build the entity data Optional hpInputEntityDataOpt = Optional.ofNullable(fieldsToAttributes.get(THERMAL_BUS)) .flatMap( @@ -783,6 +743,7 @@ protected Try buildHpEntityData( fieldsToAttributes, typedEntityData.getOperatorInput(), typedEntityData.getNode(), + typedEntityData.getEm().orElse(null), typedEntityData.getTypeInput(), thermalBus); })); @@ -802,6 +763,28 @@ protected Try buildHpEntityData( return new Success<>(hpInputEntityDataOpt.get()); } + /** + * Constructs a stream of {@link SystemParticipantTypedEntityData} wrapped in {@link Try}'s. + * + * @param entityClass the class of the entities that should be built + * @param nodes the nodes that should be considered for these entities + * @param operators the operators that should be considered for these entities + * @param types the types that should be considered for these entities + * @param the type of the type model of the resulting entity + * @return a stream of tries holding an instance of a {@link SystemParticipantTypedEntityData} + */ + private + Stream, SourceException>> + buildTypedSystemParticipantEntityData( + Class entityClass, + Collection operators, + Collection nodes, + Map emUnits, + Collection types) { + return buildTypedSystemParticipantEntityData( + buildSystemParticipantEntityData(entityClass, operators, nodes, emUnits), types); + } + /** * Enriches a given stream of {@link SystemParticipantEntityData} {@link Try} objects with a type * of {@link SystemParticipantTypeInput} based on the provided collection of types and the fields @@ -816,7 +799,7 @@ protected Try buildHpEntityData( * {@link SystemParticipantTypedEntityData} * @return a stream of tries of {@link SystemParticipantTypedEntityData} instances */ - private + private static Stream, SourceException>> buildTypedSystemParticipantEntityData( Stream> @@ -828,59 +811,99 @@ protected Try buildHpEntityData( participantEntityDataTry -> participantEntityDataTry.flatMap( participantEntityData -> - buildTypedSystemParticipantEntityData(participantEntityData, types))); + createTypedSystemParticipantEntityData(participantEntityData, types))); } - private + private static Try, SourceException> - buildTypedSystemParticipantEntityData( - SystemParticipantEntityData systemParticipantEntityDataStream, Collection types) { + createTypedSystemParticipantEntityData( + SystemParticipantEntityData systemParticipantEntityData, Collection types) { return getAssetType( types, - systemParticipantEntityDataStream.getFieldsToValues(), - systemParticipantEntityDataStream.getClass().getSimpleName()) + systemParticipantEntityData.getFieldsToValues(), + systemParticipantEntityData.getClass().getSimpleName()) .map( // if the operation was successful, transform and return to the data assetType -> { Map fieldsToAttributes = - systemParticipantEntityDataStream.getFieldsToValues(); + systemParticipantEntityData.getFieldsToValues(); // remove fields that are passed as objects to constructor fieldsToAttributes.keySet().remove(TYPE); - return new SystemParticipantTypedEntityData<>( - fieldsToAttributes, - systemParticipantEntityDataStream.getTargetClass(), - systemParticipantEntityDataStream.getOperatorInput(), - systemParticipantEntityDataStream.getNode(), - systemParticipantEntityDataStream.getEm().orElse(null), - assetType); + return new SystemParticipantTypedEntityData<>(systemParticipantEntityData, assetType); }); } + private + Stream> buildSystemParticipantEntityData( + Class entityClass, + Collection operators, + Collection nodes, + Map emUnits) { + return buildSystemParticipantEntityData( + nodeAssetInputEntityDataStream(assetInputEntityDataStream(entityClass, operators), nodes), + emUnits); + } + /** * Enriches a given stream of {@link NodeAssetInputEntityData} {@link Try} objects with a type of - * {@link EmInput} based on the provided collection of EMs and the fields to - * values mapping that inside the already provided {@link NodeAssetInputEntityData} instance. + * {@link EmInput} based on the provided collection of EMs and the fields to values mapping that + * inside the already provided {@link NodeAssetInputEntityData} instance. * * @param nodeAssetEntityDataStream the data stream of {@link NodeAssetInputEntityData} {@link * Try} objects - * @param ems the energy management units that should be used for enrichment and to build {@link - * SystemParticipantEntityData} from + * @param emUnits the energy management units that should be used for enrichment and to build + * {@link SystemParticipantEntityData} from * @return a stream of tries of {@link SystemParticipantEntityData} instances */ - private - Stream> - buildSystemParticipantEntityData( - Stream> nodeAssetEntityDataStream, - Map ems) { + private static Stream> + buildSystemParticipantEntityData( + Stream> nodeAssetEntityDataStream, + Map emUnits) { return nodeAssetEntityDataStream .parallel() .map( nodeAssetInputEntityDataOpt -> nodeAssetInputEntityDataOpt.flatMap( nodeAssetInputEntityData -> - SystemParticipantEntityData.build(nodeAssetInputEntityData, ems))); + createSystemParticipantEntityData(nodeAssetInputEntityData, emUnits))); + } + + private static Try + createSystemParticipantEntityData( + NodeAssetInputEntityData nodeAssetInputEntityData, Map emUnits) { + + Map fieldsToAttributes = nodeAssetInputEntityData.getFieldsToValues(); + + Try, SourceException> tryEm = + Optional.ofNullable( + nodeAssetInputEntityData.getUUID(SystemParticipantInputEntityFactory.EM)) + .map( + // System participant has given a proper UUID for EM. In case of success, we wrap in + // Optional + emUuid -> getEntity(emUuid, emUnits).map(Optional::of)) + // No UUID was given (column does not exist, or field is empty), + // this is totally fine - we return an "empty success" + .orElse(new Try.Success<>(Optional.empty())); + + return tryEm.map( + // if the operation was successful, transform and return to the data + optionalEm -> { + // remove fields that are passed as objects to constructor + fieldsToAttributes.keySet().remove(SystemParticipantInputEntityFactory.EM); + + return new SystemParticipantEntityData(nodeAssetInputEntityData, optionalEm.orElse(null)); + }); } + private static Try getEntity(UUID uuid, Map entityMap) { + return Optional.ofNullable(entityMap.get(uuid)) + // We either find a matching entity for given UUID, thus return a success + .map(entity -> (Try) new Try.Success(entity)) + // ... or find no matching entity, returning a failure. + .orElse( + new Try.Failure<>( + new SourceException("Entity with uuid " + uuid + " was not provided."))); + } } diff --git a/src/main/java/edu/ie3/datamodel/io/source/TypeSource.java b/src/main/java/edu/ie3/datamodel/io/source/TypeSource.java index 501dfac15..9db4d0f22 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/TypeSource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/TypeSource.java @@ -5,12 +5,17 @@ */ package edu.ie3.datamodel.io.source; +import edu.ie3.datamodel.exceptions.FactoryException; import edu.ie3.datamodel.exceptions.SourceException; +import edu.ie3.datamodel.io.factory.EntityFactory; +import edu.ie3.datamodel.io.factory.SimpleEntityData; import edu.ie3.datamodel.io.factory.input.OperatorInputFactory; import edu.ie3.datamodel.io.factory.typeinput.LineTypeInputFactory; import edu.ie3.datamodel.io.factory.typeinput.SystemParticipantTypeInputFactory; import edu.ie3.datamodel.io.factory.typeinput.Transformer2WTypeInputFactory; import edu.ie3.datamodel.io.factory.typeinput.Transformer3WTypeInputFactory; +import edu.ie3.datamodel.models.input.AssetTypeInput; +import edu.ie3.datamodel.models.input.InputEntity; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.datamodel.models.input.connector.type.LineTypeInput; import edu.ie3.datamodel.models.input.connector.type.Transformer2WTypeInput; @@ -18,6 +23,7 @@ import edu.ie3.datamodel.models.input.system.type.*; import edu.ie3.datamodel.utils.Try; import java.util.Set; +import java.util.stream.Stream; /** * Interface that provides the capability to build entities of type {@link @@ -55,11 +61,10 @@ public TypeSource(DataSource dataSource) { * @return a set of object and uuid unique {@link Transformer2WTypeInput} entities */ public Set getTransformer2WTypes() throws SourceException { - return Try.scanCollection( - buildEntities(Transformer2WTypeInput.class, transformer2WTypeInputFactory), - Transformer2WTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + simpleEntityDataStream(Transformer2WTypeInput.class) + .map(transformer2WTypeInputFactory::get), + Transformer2WTypeInput.class); } /** @@ -71,10 +76,9 @@ public Set getTransformer2WTypes() throws SourceExceptio * @return a set of object and uuid unique {@link OperatorInput} entities */ public Set getOperators() throws SourceException { - return Try.scanCollection( - buildEntities(OperatorInput.class, operatorInputFactory), OperatorInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + simpleEntityDataStream(OperatorInput.class).map(operatorInputFactory::get), + OperatorInput.class); } /** @@ -86,10 +90,9 @@ public Set getOperators() throws SourceException { * @return a set of object and uuid unique {@link LineTypeInput} entities */ public Set getLineTypes() throws SourceException { - return Try.scanCollection( - buildEntities(LineTypeInput.class, lineTypeInputFactory), LineTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + simpleEntityDataStream(LineTypeInput.class).map(lineTypeInputFactory::get), + LineTypeInput.class); } /** @@ -102,11 +105,10 @@ public Set getLineTypes() throws SourceException { * @return a set of object and uuid unique {@link Transformer3WTypeInput} entities */ public Set getTransformer3WTypes() throws SourceException { - return Try.scanCollection( - buildEntities(Transformer3WTypeInput.class, transformer3WTypeInputFactory), - Transformer3WTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + simpleEntityDataStream(Transformer3WTypeInput.class) + .map(transformer3WTypeInputFactory::get), + Transformer3WTypeInput.class); } /** @@ -118,10 +120,8 @@ public Set getTransformer3WTypes() throws SourceExceptio * @return a set of object and uuid unique {@link BmTypeInput} entities */ public Set getBmTypes() throws SourceException { - return Try.scanCollection( - buildEntities(BmTypeInput.class, systemParticipantTypeInputFactory), BmTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildEntities(BmTypeInput.class, systemParticipantTypeInputFactory), BmTypeInput.class); } /** @@ -133,11 +133,8 @@ public Set getBmTypes() throws SourceException { * @return a set of object and uuid unique {@link ChpTypeInput} entities */ public Set getChpTypes() throws SourceException { - return Try.scanCollection( - buildEntities(ChpTypeInput.class, systemParticipantTypeInputFactory), - ChpTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildEntities(ChpTypeInput.class, systemParticipantTypeInputFactory), ChpTypeInput.class); } /** @@ -149,10 +146,8 @@ public Set getChpTypes() throws SourceException { * @return a set of object and uuid unique {@link HpTypeInput} entities */ public Set getHpTypes() throws SourceException { - return Try.scanCollection( - buildEntities(HpTypeInput.class, systemParticipantTypeInputFactory), HpTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildEntities(HpTypeInput.class, systemParticipantTypeInputFactory), HpTypeInput.class); } /** @@ -164,11 +159,9 @@ public Set getHpTypes() throws SourceException { * @return a set of object and uuid unique {@link StorageTypeInput} entities */ public Set getStorageTypes() throws SourceException { - return Try.scanCollection( - buildEntities(StorageTypeInput.class, systemParticipantTypeInputFactory), - StorageTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildEntities(StorageTypeInput.class, systemParticipantTypeInputFactory), + StorageTypeInput.class); } /** @@ -180,11 +173,8 @@ public Set getStorageTypes() throws SourceException { * @return a set of object and uuid unique {@link WecTypeInput} entities */ public Set getWecTypes() throws SourceException { - return Try.scanCollection( - buildEntities(WecTypeInput.class, systemParticipantTypeInputFactory), - WecTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildEntities(WecTypeInput.class, systemParticipantTypeInputFactory), WecTypeInput.class); } /** @@ -196,9 +186,23 @@ public Set getWecTypes() throws SourceException { * @return a set of object and uuid unique {@link EvTypeInput} entities */ public Set getEvTypes() throws SourceException { - return Try.scanCollection( - buildEntities(EvTypeInput.class, systemParticipantTypeInputFactory), EvTypeInput.class) - .transformF(SourceException::new) - .getOrThrow(); + return unpack( + buildEntities(EvTypeInput.class, systemParticipantTypeInputFactory), EvTypeInput.class); + } + + /** + * Build and cast entities to the correct type, since {@link SystemParticipantTypeInputFactory} + * outputs {@link SystemParticipantTypeInput} of general type. + * + * @param entityClass + * @param factory + * @return + * @param + */ + @SuppressWarnings("unchecked") + private Stream> buildEntities( + Class entityClass, EntityFactory factory) { + return simpleEntityDataStream(entityClass) + .map(data -> (Try) factory.get(data)); } } diff --git a/src/main/java/edu/ie3/datamodel/io/source/csv/CsvJointGridContainerSource.java b/src/main/java/edu/ie3/datamodel/io/source/csv/CsvJointGridContainerSource.java index 708d546e6..f2e113816 100644 --- a/src/main/java/edu/ie3/datamodel/io/source/csv/CsvJointGridContainerSource.java +++ b/src/main/java/edu/ie3/datamodel/io/source/csv/CsvJointGridContainerSource.java @@ -45,9 +45,9 @@ public static JointGridContainer read( TypeSource typeSource = new TypeSource(dataSource); RawGridSource rawGridSource = new RawGridSource(typeSource, dataSource); ThermalSource thermalSource = new ThermalSource(typeSource, dataSource); - SystemParticipantSource systemParticipantSource = - new SystemParticipantSource(typeSource, thermalSource, rawGridSource, dataSource); EnergyManagementSource emSource = new EnergyManagementSource(typeSource, dataSource); + SystemParticipantSource systemParticipantSource = + new SystemParticipantSource(typeSource, thermalSource, rawGridSource, emSource, dataSource); GraphicSource graphicSource = new GraphicSource(typeSource, rawGridSource, dataSource); /* Loading models */ @@ -55,8 +55,6 @@ public static JointGridContainer read( Try.of(rawGridSource::getGridData, SourceException.class); Try systemParticipants = Try.of(systemParticipantSource::getSystemParticipants, SourceException.class); - Try emUnits = - Try.of(emSource::getEmUnits, SourceException.class); Try graphicElements = Try.of(graphicSource::getGraphicElements, SourceException.class); @@ -73,7 +71,6 @@ public static JointGridContainer read( gridName, rawGridElements.getOrThrow(), systemParticipants.getOrThrow(), - emUnits.getOrThrow(), graphicElements.getOrThrow()); } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/container/GridContainer.java b/src/main/java/edu/ie3/datamodel/models/input/container/GridContainer.java index 12f5b7c9d..3c076cfff 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/container/GridContainer.java +++ b/src/main/java/edu/ie3/datamodel/models/input/container/GridContainer.java @@ -15,8 +15,6 @@ public abstract class GridContainer implements InputContainer { protected final RawGridElements rawGrid; /** Accumulated system participant elements */ protected final SystemParticipants systemParticipants; - /** Accumulated energy management units */ - protected final EnergyManagementUnits emUnits; /** Accumulated graphic data entities (node graphics, line graphics) */ protected final GraphicElements graphics; @@ -24,13 +22,11 @@ protected GridContainer( String gridName, RawGridElements rawGrid, SystemParticipants systemParticipants, - EnergyManagementUnits emUnits, GraphicElements graphics) { this.gridName = gridName; this.rawGrid = rawGrid; this.systemParticipants = systemParticipants; - this.emUnits = emUnits; this.graphics = graphics; } @@ -39,7 +35,6 @@ public List allEntitiesAsList() { List allEntities = new LinkedList<>(); allEntities.addAll(rawGrid.allEntitiesAsList()); allEntities.addAll(systemParticipants.allEntitiesAsList()); - allEntities.addAll(emUnits.allEntitiesAsList()); allEntities.addAll(graphics.allEntitiesAsList()); return Collections.unmodifiableList(allEntities); } @@ -60,10 +55,6 @@ public SystemParticipants getSystemParticipants() { return systemParticipants; } - public EnergyManagementUnits getEmUnits() { - return emUnits; - } - public GraphicElements getGraphics() { return graphics; } @@ -75,13 +66,12 @@ public boolean equals(Object o) { return gridName.equals(that.gridName) && rawGrid.equals(that.rawGrid) && systemParticipants.equals(that.systemParticipants) - && emUnits.equals(that.emUnits) && graphics.equals(that.graphics); } @Override public int hashCode() { - return Objects.hash(gridName, rawGrid, systemParticipants, emUnits, graphics); + return Objects.hash(gridName, rawGrid, systemParticipants, graphics); } @Override @@ -101,7 +91,6 @@ protected abstract static class GridContainerCopyBuilder sRated, double cosPhiRated) { super(uuid, id, operator, operationTime, node, qCharacteristics, em); @@ -66,7 +66,7 @@ public FixedFeedInInput( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, ComparableQuantity sRated, double cosPhiRated) { super(uuid, id, node, qCharacteristics, em); diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java index 6ef942406..1c0dd2370 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java @@ -44,7 +44,7 @@ public HpInput( NodeInput node, ThermalBusInput thermalBus, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, HpTypeInput type) { super(uuid, id, operator, operationTime, node, qCharacteristics, em); this.thermalBus = thermalBus; @@ -68,7 +68,7 @@ public HpInput( NodeInput node, ThermalBusInput thermalBus, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, HpTypeInput type) { super(uuid, id, node, qCharacteristics, em); this.thermalBus = thermalBus; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java index 31e43ef76..1889e2937 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java @@ -61,7 +61,7 @@ public LoadInput( OperationTime operationTime, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, LoadProfile loadProfile, boolean dsm, ComparableQuantity eConsAnnual, @@ -100,7 +100,7 @@ public LoadInput( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, String loadProfileKey, boolean dsm, ComparableQuantity eConsAnnual, @@ -142,7 +142,7 @@ public LoadInput( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, LoadProfile loadProfile, boolean dsm, ComparableQuantity eConsAnnual, @@ -177,7 +177,7 @@ public LoadInput( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, String loadProfileKey, boolean dsm, ComparableQuantity eConsAnnual, diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java index 4df99309a..abe86cd09 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java @@ -66,7 +66,7 @@ public PvInput( OperationTime operationTime, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, double albedo, ComparableQuantity azimuth, ComparableQuantity etaConv, @@ -111,7 +111,7 @@ public PvInput( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, double albedo, ComparableQuantity azimuth, ComparableQuantity etaConv, diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java index c66b5dd13..ff56bf7ad 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java @@ -38,7 +38,7 @@ public StorageInput( OperationTime operationTime, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, StorageTypeInput type) { super(uuid, id, operator, operationTime, node, qCharacteristics, em); this.type = type; @@ -59,7 +59,7 @@ public StorageInput( String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, - UUID em, + EmInput em, StorageTypeInput type) { super(uuid, id, node, qCharacteristics, em); this.type = type; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java index a9d4196ee..0a0c6a42c 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java @@ -5,18 +5,12 @@ */ package edu.ie3.datamodel.models.input.system; -import edu.ie3.datamodel.exceptions.SourceException; import edu.ie3.datamodel.io.extractor.HasNodes; -import edu.ie3.datamodel.io.factory.input.NodeAssetInputEntityData; -import edu.ie3.datamodel.io.factory.input.participant.SystemParticipantEntityData; -import edu.ie3.datamodel.io.factory.input.participant.SystemParticipantInputEntityFactory; import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.input.AssetInput; import edu.ie3.datamodel.models.input.NodeInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; -import edu.ie3.datamodel.utils.Try; - import java.util.*; /** Describes a system asset that is connected to a node */ @@ -29,10 +23,10 @@ public abstract class SystemParticipantInput extends AssetInput implements HasNo private final ReactivePowerCharacteristic qCharacteristics; /** - * Optional UUID of the {@link EmInput} that is controlling this system participant. If null, this - * system participant is not em-controlled. + * Optional {@link EmInput} that is controlling this system participant. If null, this system + * participant is not em-controlled. */ - private final UUID em; + private final EmInput em; /** * Constructor for an operated system participant @@ -69,7 +63,11 @@ protected SystemParticipantInput( * @param em The {@link EmInput} controlling this system participant. Null, if not applicable. */ protected SystemParticipantInput( - UUID uuid, String id, NodeInput node, ReactivePowerCharacteristic qCharacteristics, UUID em) { + UUID uuid, + String id, + NodeInput node, + ReactivePowerCharacteristic qCharacteristics, + EmInput em) { super(uuid, id); this.node = node; this.qCharacteristics = qCharacteristics; @@ -84,7 +82,7 @@ public ReactivePowerCharacteristic getqCharacteristics() { return qCharacteristics; } - public Optional getEm() { + public Optional getEm() { return Optional.ofNullable(em); } @@ -143,7 +141,7 @@ public abstract static class SystemParticipantInputCopyBuilder< private NodeInput node; private ReactivePowerCharacteristic qCharacteristics; - private UUID em; + private EmInput em; protected SystemParticipantInputCopyBuilder(SystemParticipantInput entity) { super(entity); @@ -161,7 +159,7 @@ public B qCharacteristics(ReactivePowerCharacteristic qCharacteristics) { return thisInstance(); } - public B em(UUID em) { + public B em(EmInput em) { this.em = em; return thisInstance(); } @@ -175,7 +173,7 @@ protected ReactivePowerCharacteristic getqCharacteristics() { } /** @return The {@link EmInput} controlling this system participant. CAN BE NULL. */ - public UUID getEm() { + public EmInput getEm() { return em; } diff --git a/src/main/java/edu/ie3/datamodel/utils/ContainerNodeUpdateUtil.java b/src/main/java/edu/ie3/datamodel/utils/ContainerNodeUpdateUtil.java index a482ce658..4778fabea 100644 --- a/src/main/java/edu/ie3/datamodel/utils/ContainerNodeUpdateUtil.java +++ b/src/main/java/edu/ie3/datamodel/utils/ContainerNodeUpdateUtil.java @@ -77,7 +77,6 @@ public static JointGridContainer updateGridWithNodes( grid.getGridName(), updatedEntities.rawGridElements(), updatedEntities.systemParticipants(), - grid.getEmUnits(), updatedEntities.graphicElements()); } @@ -113,7 +112,6 @@ public static SubGridContainer updateGridWithNodes( grid.getSubnet(), updatedEntities.rawGridElements(), updatedEntities.systemParticipants(), - grid.getEmUnits(), updatedEntities.graphicElements()); } diff --git a/src/main/java/edu/ie3/datamodel/utils/ContainerUtils.java b/src/main/java/edu/ie3/datamodel/utils/ContainerUtils.java index d0484a499..5033221a2 100644 --- a/src/main/java/edu/ie3/datamodel/utils/ContainerUtils.java +++ b/src/main/java/edu/ie3/datamodel/utils/ContainerUtils.java @@ -501,7 +501,6 @@ public static SubGridTopologyGraph buildSubGridTopologyGraph( String gridName, RawGridElements rawGrid, SystemParticipants systemParticipants, - EnergyManagementUnits energyManagementUnits, GraphicElements graphics) throws InvalidGridException { /* Collect the different sub nets. Through the validation of lines, it is ensured, that no galvanically connected @@ -510,8 +509,7 @@ public static SubGridTopologyGraph buildSubGridTopologyGraph( /* Build the single sub grid models */ HashMap subgrids = - buildSubGridContainers( - gridName, subnetNumbers, rawGrid, systemParticipants, energyManagementUnits, graphics); + buildSubGridContainers(gridName, subnetNumbers, rawGrid, systemParticipants, graphics); /* Build the graph structure denoting the topology of the grid */ return buildSubGridTopologyGraph(subgrids, rawGrid); @@ -542,7 +540,6 @@ private static HashMap buildSubGridContainers( SortedSet subnetNumbers, RawGridElements rawGrid, SystemParticipants systemParticipants, - EnergyManagementUnits energyManagementUnits, GraphicElements graphics) throws InvalidGridException { HashMap subGrids = new HashMap<>(subnetNumbers.size()); @@ -555,12 +552,7 @@ private static HashMap buildSubGridContainers( subGrids.put( subnetNumber, new SubGridContainer( - gridName, - subnetNumber, - rawGridElements, - systemParticipantElements, - energyManagementUnits, // TODO filtering (part of #957) - graphicElements)); + gridName, subnetNumber, rawGridElements, systemParticipantElements, graphicElements)); } return subGrids; } @@ -812,9 +804,6 @@ public static JointGridContainer combineToJointGrid( GraphicElements graphicElements = new GraphicElements( subGridContainers.stream().map(GridContainer::getGraphics).collect(Collectors.toSet())); - EnergyManagementUnits energyManagementUnits = - new EnergyManagementUnits( - subGridContainers.stream().map(GridContainer::getEmUnits).collect(Collectors.toSet())); Map subGridMapping = subGridContainers.stream() @@ -823,12 +812,7 @@ public static JointGridContainer combineToJointGrid( SubGridTopologyGraph subGridTopologyGraph = buildSubGridTopologyGraph(subGridMapping, rawGrid); return new JointGridContainer( - gridName, - rawGrid, - systemParticipants, - energyManagementUnits, - graphicElements, - subGridTopologyGraph); + gridName, rawGrid, systemParticipants, graphicElements, subGridTopologyGraph); } /** @@ -1001,7 +985,6 @@ public static SubGridContainer withTrafoNodeAsSlack(final SubGridContainer subGr subGridContainer.getRawGrid().getSwitches(), subGridContainer.getRawGrid().getMeasurementUnits()), subGridContainer.getSystemParticipants(), - subGridContainer.getEmUnits(), new GraphicElements(newNodeGraphics, subGridContainer.getGraphics().getLineGraphics())); } } diff --git a/src/test/groovy/edu/ie3/datamodel/io/source/EntitySourceTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/source/EntitySourceTest.groovy index 5bb63b42b..0bde14b7b 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/source/EntitySourceTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/source/EntitySourceTest.groovy @@ -95,7 +95,7 @@ class EntitySourceTest extends Specification { ] when: - def thermalBusInputEntity = new ThermalBusInputFactory().get(dummyEntitySource.assetInputEntityDataStream(ThermalBusInput, thermalBusInputFieldsToAttributesMap, Collections.emptyList())) + def thermalBusInputEntity = new ThermalBusInputFactory().get(dummyEntitySource.createAssetInputEntityData(ThermalBusInput, thermalBusInputFieldsToAttributesMap, Collections.emptyList())) then: noExceptionThrown() // no NPE should be thrown diff --git a/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvSystemParticipantSourceTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvSystemParticipantSourceTest.groovy index 85bf98585..2c6cb53c2 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvSystemParticipantSourceTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvSystemParticipantSourceTest.groovy @@ -136,7 +136,7 @@ class CsvSystemParticipantSourceTest extends Specification implements CsvTestDat def sysPartTypedEntityData = new SystemParticipantTypedEntityData<>(fieldsToAttributes, HpInput, sptd.hpInput.operator, sptd.hpInput.node, sptd.hpTypeInput) when: - def hpInputEntityDataOpt = csvSystemParticipantSource.buildHpEntityData(sysPartTypedEntityData, thermalBuses) + def hpInputEntityDataOpt = csvSystemParticipantSource.createHpEntityData(sysPartTypedEntityData, thermalBuses) then: hpInputEntityDataOpt.success == resultIsPresent