Skip to content

Commit 10bbbc1

Browse files
fix returning null in TimeBasedWeatherValueData.java
1 parent 332097e commit 10bbbc1

File tree

4 files changed

+31
-19
lines changed

4 files changed

+31
-19
lines changed

src/main/java/edu/ie3/datamodel/io/factory/FactoryData.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ public Optional<String> getFieldOptional(String field) {
7373
* @param unit unit of Quantity
7474
* @param <Q> unit type parameter
7575
* @return Quantity of given field with given unit
76+
* @deprecated Use {@link #getQuantityOptional(String, Unit)} instead.
7677
*/
78+
@Deprecated
7779
public <Q extends Quantity<Q>> ComparableQuantity<Q> getQuantity(String field, Unit<Q> unit) {
7880
return Quantities.getQuantity(getDouble(field), unit);
7981
}

src/main/java/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactory.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,18 @@ protected TimeBasedValue<WeatherValue> buildModel(TimeBasedWeatherValueData data
6363
Point coordinate = data.getCoordinate();
6464
ZonedDateTime time = timeUtil.toZonedDateTime(data.getField(TIME));
6565
ComparableQuantity<Irradiance> directIrradiance =
66-
data.getQuantity(DIRECT_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE);
66+
data.getQuantityOptional(DIRECT_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE)
67+
.orElse(null);
6768
ComparableQuantity<Irradiance> diffuseIrradiance =
68-
data.getQuantity(DIFFUSE_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE);
69+
data.getQuantityOptional(DIFFUSE_IRRADIANCE, PowerSystemUnits.WATT_PER_SQUAREMETRE)
70+
.orElse(null);
6971
ComparableQuantity<Temperature> temperature =
70-
data.getQuantity(TEMPERATURE, StandardUnits.TEMPERATURE);
72+
data.getQuantityOptional(TEMPERATURE, StandardUnits.TEMPERATURE).orElse(null);
7173
ComparableQuantity<Angle> windDirection =
72-
data.getQuantity(WIND_DIRECTION, StandardUnits.WIND_DIRECTION);
74+
data.getQuantityOptional(WIND_DIRECTION, StandardUnits.WIND_DIRECTION).orElse(null);
7375
ComparableQuantity<Speed> windVelocity =
74-
data.getQuantity(WIND_VELOCITY, StandardUnits.WIND_VELOCITY);
76+
data.getQuantityOptional(WIND_VELOCITY, StandardUnits.WIND_VELOCITY).orElse(null);
77+
7578
WeatherValue weatherValue =
7679
new WeatherValue(
7780
coordinate,
@@ -80,6 +83,7 @@ protected TimeBasedValue<WeatherValue> buildModel(TimeBasedWeatherValueData data
8083
temperature,
8184
windDirection,
8285
windVelocity);
86+
8387
return new TimeBasedValue<>(time, weatherValue);
8488
}
8589
}

src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedWeatherValueData.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import edu.ie3.datamodel.models.value.WeatherValue;
99
import java.util.Map;
10+
import java.util.Optional;
1011
import javax.measure.Quantity;
1112
import javax.measure.Unit;
1213
import org.locationtech.jts.geom.Point;
@@ -32,8 +33,9 @@ public Point getCoordinate() {
3233
}
3334

3435
@Override
35-
public <Q extends Quantity<Q>> ComparableQuantity<Q> getQuantity(String field, Unit<Q> unit) {
36-
return getField(field).isEmpty() ? null : super.getQuantity(field, unit);
36+
public <Q extends Quantity<Q>> Optional<ComparableQuantity<Q>> getQuantityOptional(
37+
String field, Unit<Q> unit) {
38+
return super.getQuantityOptional(field, unit);
3739
}
3840

3941
@Override

src/test/groovy/edu/ie3/datamodel/io/factory/timeseries/CosmoTimeBasedWeatherValueFactoryTest.groovy

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ class CosmoTimeBasedWeatherValueFactoryTest extends Specification {
3434
def data = new TimeBasedWeatherValueData(parameter, coordinate)
3535

3636
def expectedResults = new TimeBasedValue(
37-
time, new WeatherValue(coordinate,
38-
Quantities.getQuantity(286.872985839844d, StandardUnits.SOLAR_IRRADIANCE),
39-
Quantities.getQuantity(282.671997070312d, StandardUnits.SOLAR_IRRADIANCE),
40-
null,
41-
Quantities.getQuantity(0d, StandardUnits.WIND_DIRECTION),
42-
Quantities.getQuantity(1.66103506088257d, StandardUnits.WIND_VELOCITY)))
37+
time, new WeatherValue( coordinate,
38+
data.getQuantityOptional("directIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null),
39+
data.getQuantityOptional("diffuseIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null),
40+
data.getQuantityOptional("temperature", StandardUnits.TEMPERATURE).orElse(null),
41+
data.getQuantityOptional("windDirection", StandardUnits.WIND_DIRECTION).orElse(null),
42+
data.getQuantityOptional("windVelocity", StandardUnits.WIND_VELOCITY).orElse(null)))
4343

4444
when:
4545
def model = factory.buildModel(data)
@@ -67,12 +67,16 @@ class CosmoTimeBasedWeatherValueFactoryTest extends Specification {
6767
def data = new TimeBasedWeatherValueData(parameter, coordinate)
6868

6969
def expectedResults = new TimeBasedValue(
70-
time, new WeatherValue(coordinate,
71-
Quantities.getQuantity(286.872985839844d, StandardUnits.SOLAR_IRRADIANCE),
72-
Quantities.getQuantity(282.671997070312d, StandardUnits.SOLAR_IRRADIANCE),
73-
Quantities.getQuantity(278.019012451172d, StandardUnits.TEMPERATURE),
74-
Quantities.getQuantity(0d, StandardUnits.WIND_DIRECTION),
75-
Quantities.getQuantity(1.66103506088257d, StandardUnits.WIND_VELOCITY)))
70+
time, new WeatherValue(
71+
coordinate,
72+
data.getQuantityOptional("directIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null),
73+
data.getQuantityOptional("diffuseIrradiance", StandardUnits.SOLAR_IRRADIANCE).orElse(null),
74+
data.getQuantityOptional("temperature", StandardUnits.TEMPERATURE).orElse(null),
75+
data.getQuantityOptional("windDirection", StandardUnits.WIND_DIRECTION).orElse(null),
76+
data.getQuantityOptional("windVelocity", StandardUnits.WIND_VELOCITY).orElse(null)
77+
)
78+
)
79+
7680

7781
when:
7882
def model = factory.buildModel(data)

0 commit comments

Comments
 (0)