From 02cb4f09d9c0d62a566cc2743e48b4c565927c94 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 25 Jul 2025 10:28:15 +0200 Subject: [PATCH 1/5] Enhancing Validation for sRated of `HpTypeInput` --- CHANGELOG.md | 1 + .../utils/validation/SystemParticipantValidationUtils.java | 6 +++++- .../validation/SystemParticipantValidationUtilsTest.groovy | 5 +++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68dc1959c..083c1bce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Enhanced check for invalid field names in sources [#1383](https://github.com/ie3-institute/PowerSystemDataModel/issues/1383) - Enhancing value retrieval in `TimeSeriesSource` [1280](https://github.com/ie3-institute/PowerSystemDataModel/issues/1280) +- Enhancing Validation for sRated of `HpTypeInput` [1394](https://github.com/ie3-institute/PowerSystemDataModel/issues/1394) ### Fixed diff --git a/src/main/java/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtils.java b/src/main/java/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtils.java index c68db81f1..083f5379f 100644 --- a/src/main/java/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtils.java +++ b/src/main/java/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtils.java @@ -337,6 +337,7 @@ private static List> checkHp(HpInput hpInput) * Validates a HpTypeInput if: * * * @@ -347,7 +348,10 @@ private static Try checkHpType(HpTypeInput hpTypeI return Try.ofVoid( () -> detectZeroOrNegativeQuantities( - new Quantity[] {hpTypeInput.getpThermal()}, hpTypeInput), + new Quantity[] { + hpTypeInput.getsRated(), hpTypeInput.getpThermal(), + }, + hpTypeInput), InvalidEntityException.class); } diff --git a/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy b/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy index a8c90b766..0d5851950 100644 --- a/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy @@ -294,8 +294,9 @@ class SystemParticipantValidationUtilsTest extends Specification { ex.message.contains(expectedException.message) where: - invalidHpType || expectedException - new HpTypeInput(uuid, id, capex, opex, sRated, cosPhiRated, Quantities.getQuantity(0, ACTIVE_POWER_IN)) || new InvalidEntityException("The following quantities have to be positive: 0 kW", invalidHpType) + invalidHpType || expectedException + new HpTypeInput(uuid, id, capex, opex, Quantities.getQuantity(0, ACTIVE_POWER_IN), cosPhiRated, pThermal) || new InvalidEntityException("The following quantities have to be positive: 0 kW", invalidHpType) + new HpTypeInput(uuid, id, capex, opex, sRated, cosPhiRated, Quantities.getQuantity(0, ACTIVE_POWER_IN)) || new InvalidEntityException("The following quantities have to be positive: 0 kW", invalidHpType) } // Load From 6e2bcb7bb76992d6e5540b18f4a6d2a298864d13 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 25 Jul 2025 10:44:02 +0200 Subject: [PATCH 2/5] fix test --- .../validation/SystemParticipantValidationUtilsTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy b/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy index 0d5851950..9086568f6 100644 --- a/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy @@ -295,7 +295,7 @@ class SystemParticipantValidationUtilsTest extends Specification { where: invalidHpType || expectedException - new HpTypeInput(uuid, id, capex, opex, Quantities.getQuantity(0, ACTIVE_POWER_IN), cosPhiRated, pThermal) || new InvalidEntityException("The following quantities have to be positive: 0 kW", invalidHpType) + new HpTypeInput(uuid, id, capex, opex, Quantities.getQuantity(0, S_RATED), cosPhiRated, pThermal) || new InvalidEntityException("The following quantities have to be positive: 0 kVA", invalidHpType) new HpTypeInput(uuid, id, capex, opex, sRated, cosPhiRated, Quantities.getQuantity(0, ACTIVE_POWER_IN)) || new InvalidEntityException("The following quantities have to be positive: 0 kW", invalidHpType) } From 2e68cd980147d388d365f42b258deb78f2544382 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 25 Jul 2025 10:55:16 +0200 Subject: [PATCH 3/5] typo --- .../java/edu/ie3/datamodel/models/result/system/HpResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java index 0c47b38c9..a5dae8d0f 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java @@ -20,7 +20,7 @@ public class HpResult extends SystemParticipantWithHeatResult { * @param inputModel uuid of the input model that produces the result * @param p active power output normally provided in MW * @param q reactive power output normally provided in MVAr - * @param qDot provided head energy + * @param qDot provided heat energy */ public HpResult( ZonedDateTime time, From f58ceb6a803225380ff9eddf4ddf0f35ff48a8ff Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 25 Jul 2025 10:57:35 +0200 Subject: [PATCH 4/5] add test for hp suffix testing in EntityPersistenceNamingStrategy --- .../io/naming/EntityPersistenceNamingStrategyTest.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/groovy/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategyTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategyTest.groovy index 06765fdc1..8688aced0 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategyTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategyTest.groovy @@ -243,6 +243,7 @@ class EntityPersistenceNamingStrategyTest extends Specification { BmResult || "prefix_bm_res_suffix" PvResult || "prefix_pv_res_suffix" ChpResult || "prefix_chp_res_suffix" + HpResult || "prefix_hp_res_suffix" WecResult || "prefix_wec_res_suffix" StorageResult || "prefix_storage_res_suffix" EvcsResult || "prefix_evcs_res_suffix" From 48d3e6c543b965894d1f1fd97ae46d121208af75 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 25 Jul 2025 11:09:23 +0200 Subject: [PATCH 5/5] HpResults for testing FilenameStrategy path --- .../ie3/datamodel/io/naming/FileNamingStrategyTest.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/groovy/edu/ie3/datamodel/io/naming/FileNamingStrategyTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/naming/FileNamingStrategyTest.groovy index 528529532..3b12faef4 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/naming/FileNamingStrategyTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/naming/FileNamingStrategyTest.groovy @@ -52,6 +52,7 @@ import edu.ie3.datamodel.models.result.system.EvResult import edu.ie3.datamodel.models.result.system.EvcsResult import edu.ie3.datamodel.models.result.system.FixedFeedInResult import edu.ie3.datamodel.models.result.system.FlexOptionsResult +import edu.ie3.datamodel.models.result.system.HpResult import edu.ie3.datamodel.models.result.system.LoadResult import edu.ie3.datamodel.models.result.system.PvResult import edu.ie3.datamodel.models.result.system.StorageResult @@ -105,6 +106,7 @@ class FileNamingStrategyTest extends Specification { FixedFeedInResult || Path.of("test_grid", "results", "participants") BmResult || Path.of("test_grid", "results", "participants") PvResult || Path.of("test_grid", "results", "participants") + HpResult || Path.of("test_grid", "results", "participants") ChpResult || Path.of("test_grid", "results", "participants") WecResult || Path.of("test_grid", "results", "participants") StorageResult || Path.of("test_grid", "results", "participants") @@ -247,6 +249,7 @@ class FileNamingStrategyTest extends Specification { BmResult || Path.of("test_grid", "results", "participants", "bm_res") PvResult || Path.of("test_grid", "results", "participants", "pv_res") ChpResult || Path.of("test_grid", "results", "participants", "chp_res") + HpResult || Path.of("test_grid", "results", "participants", "hp_res") WecResult || Path.of("test_grid", "results", "participants", "wec_res") StorageResult || Path.of("test_grid", "results", "participants", "storage_res") EvcsResult || Path.of("test_grid", "results", "participants", "evcs_res") @@ -469,6 +472,7 @@ class FileNamingStrategyTest extends Specification { BmResult || Optional.empty() PvResult || Optional.empty() ChpResult || Optional.empty() + HpResult || Optional.empty() WecResult || Optional.empty() StorageResult || Optional.empty() EvcsResult || Optional.empty() @@ -612,6 +616,7 @@ class FileNamingStrategyTest extends Specification { BmResult || Path.of("bm_res") PvResult || Path.of("pv_res") ChpResult || Path.of("chp_res") + HpResult || Path.of("hp_res") WecResult || Path.of("wec_res") StorageResult || Path.of("storage_res") EvcsResult || Path.of("evcs_res")