From 10bbbc19f8c52932ce89fc8d7793bfe8e94eb2a7 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:32:04 +0200 Subject: [PATCH 1/3] fix returning null in TimeBasedWeatherValueData.java --- .../ie3/datamodel/io/factory/FactoryData.java | 2 ++ .../CosmoTimeBasedWeatherValueFactory.java | 14 ++++++---- .../timeseries/TimeBasedWeatherValueData.java | 6 ++-- ...smoTimeBasedWeatherValueFactoryTest.groovy | 28 +++++++++++-------- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/io/factory/FactoryData.java b/src/main/java/edu/ie3/datamodel/io/factory/FactoryData.java index cc0cdd357..ce5756053 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/FactoryData.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/FactoryData.java @@ -73,7 +73,9 @@ public Optional getFieldOptional(String field) { * @param unit unit of Quantity * @param unit type parameter * @return Quantity of given field with given unit + * @deprecated Use {@link #getQuantityOptional(String, Unit)} instead. */ + @Deprecated public > ComparableQuantity getQuantity(String field, Unit unit) { return Quantities.getQuantity(getDouble(field), unit); } diff --git a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactory.java index 09048fb89..104314d23 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactory.java @@ -63,15 +63,18 @@ protected TimeBasedValue buildModel(TimeBasedWeatherValueData data Point coordinate = data.getCoordinate(); ZonedDateTime time = timeUtil.toZonedDateTime(data.getField(TIME)); ComparableQuantity directIrradiance = - data.getQuantity(DIRECT_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE); + data.getQuantityOptional(DIRECT_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE) + .orElse(null); ComparableQuantity diffuseIrradiance = - data.getQuantity(DIFFUSE_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE); + data.getQuantityOptional(DIFFUSE_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE) + .orElse(null); ComparableQuantity temperature = - data.getQuantity(TEMPERATURE, StandardUnits.TEMPERATURE); + data.getQuantityOptional(TEMPERATURE, StandardUnits.TEMPERATURE).orElse(null); ComparableQuantity windDirection = - data.getQuantity(WIND_DIRECTION, StandardUnits.WIND_DIRECTION); + data.getQuantityOptional(WIND_DIRECTION, StandardUnits.WIND_DIRECTION).orElse(null); ComparableQuantity windVelocity = - data.getQuantity(WIND_VELOCITY, StandardUnits.WIND_VELOCITY); + data.getQuantityOptional(WIND_VELOCITY, StandardUnits.WIND_VELOCITY).orElse(null); + WeatherValue weatherValue = new WeatherValue( coordinate, @@ -80,6 +83,7 @@ protected TimeBasedValue buildModel(TimeBasedWeatherValueData data temperature, windDirection, windVelocity); + return new TimeBasedValue<>(time, weatherValue); } } diff --git a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java index e9e12aafc..2c81cdc16 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java @@ -7,6 +7,7 @@ import edu.ie3.datamodel.models.value.WeatherValue; import java.util.Map; +import java.util.Optional; import javax.measure.Quantity; import javax.measure.Unit; import org.locationtech.jts.geom.Point; @@ -32,8 +33,9 @@ public Point getCoordinate() { } @Override - public > ComparableQuantity getQuantity(String field, Unit unit) { - return getField(field).isEmpty() ? null : super.getQuantity(field, unit); + public > Optional> getQuantityOptional( + String field, Unit unit) { + return super.getQuantityOptional(field, unit); } @Override diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactoryTest.groovy index e85aebf3b..a310760fc 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactoryTest.groovy @@ -34,12 +34,12 @@ class CosmoTimeBasedWeatherValueFactoryTest extends Specification { def data = new TimeBasedWeatherValueData(parameter, coordinate) def expectedResults = new TimeBasedValue( - time, new WeatherValue(coordinate, - Quantities.getQuantity(286.872985839844d, StandardUnits.SOLAR_IRRADIANCE), - Quantities.getQuantity(282.671997070312d, StandardUnits.SOLAR_IRRADIANCE), - null, - Quantities.getQuantity(0d, StandardUnits.WIND_DIRECTION), - Quantities.getQuantity(1.66103506088257d, StandardUnits.WIND_VELOCITY))) + time, new WeatherValue( coordinate, + data.getQuantityOptional("directIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null), + data.getQuantityOptional("diffuseIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null), + data.getQuantityOptional("temperature", StandardUnits.TEMPERATURE).orElse(null), + data.getQuantityOptional("windDirection", StandardUnits.WIND_DIRECTION).orElse(null), + data.getQuantityOptional("windVelocity", StandardUnits.WIND_VELOCITY).orElse(null))) when: def model = factory.buildModel(data) @@ -67,12 +67,16 @@ class CosmoTimeBasedWeatherValueFactoryTest extends Specification { def data = new TimeBasedWeatherValueData(parameter, coordinate) def expectedResults = new TimeBasedValue( - time, new WeatherValue(coordinate, - Quantities.getQuantity(286.872985839844d, StandardUnits.SOLAR_IRRADIANCE), - Quantities.getQuantity(282.671997070312d, StandardUnits.SOLAR_IRRADIANCE), - Quantities.getQuantity(278.019012451172d, StandardUnits.TEMPERATURE), - Quantities.getQuantity(0d, StandardUnits.WIND_DIRECTION), - Quantities.getQuantity(1.66103506088257d, StandardUnits.WIND_VELOCITY))) + time, new WeatherValue( + coordinate, + data.getQuantityOptional("directIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null), + data.getQuantityOptional("diffuseIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null), + data.getQuantityOptional("temperature", StandardUnits.TEMPERATURE).orElse(null), + data.getQuantityOptional("windDirection", StandardUnits.WIND_DIRECTION).orElse(null), + data.getQuantityOptional("windVelocity", StandardUnits.WIND_VELOCITY).orElse(null) + ) + ) + when: def model = factory.buildModel(data) From a66f2ada495e56e9f038a576bf569da0d96ac0c4 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:36:14 +0200 Subject: [PATCH 2/3] CHANGELOG.md --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c714ba6ae..c0fa956c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed SonarQube junit path issue in GitHub Actions [#1284](https://github.com/ie3-institute/PowerSystemDataModel/issues/1284) -### Changed +- Fix returning null in TimeBasedWeatherValueData [#356](https://github.com/ie3-institute/PowerSystemDataModel/issues/356) + +- ### Changed - Replaced `return this` with `return thisInstance` in CopyBuilders [#1250](https://github.com/ie3-institute/PowerSystemDataModel/issues/1250) ## [6.0.0] - 2025-02-27 From 89aa46b98d670915a8e403a74b709e61f4e6665e Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:48:52 +0200 Subject: [PATCH 3/3] Sonarqube --- .../factory/timeseries/TimeBasedWeatherValueData.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java index 2c81cdc16..9c7f099f5 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java @@ -7,11 +7,7 @@ import edu.ie3.datamodel.models.value.WeatherValue; import java.util.Map; -import java.util.Optional; -import javax.measure.Quantity; -import javax.measure.Unit; import org.locationtech.jts.geom.Point; -import tech.units.indriya.ComparableQuantity; public class TimeBasedWeatherValueData extends TimeBasedValueData { @@ -32,12 +28,6 @@ public Point getCoordinate() { return coordinate; } - @Override - public > Optional> getQuantityOptional( - String field, Unit unit) { - return super.getQuantityOptional(field, unit); - } - @Override public boolean equals(Object o) { if (this == o) return true;