Skip to content

Commit f00da57

Browse files
chore: take start room environmental data in deserialization from time series room data
1 parent 0d5006e commit f00da57

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

src/main/kotlin/application/presenter/database/serialization/DBSerialization.kt

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,28 @@ import java.time.Instant
2424
/**
2525
* Extension method that allows to convert a map of [TimeSeriesDataType] -> [TimeSeriesRoomEnvironmentalData]
2626
* to domain [RoomEnvironmentalData].
27+
* It is possible to provide some [startData] to initialize missed values.
2728
* @return the resulting [RoomEnvironmentalData].
2829
*/
29-
fun Map<TimeSeriesDataType, TimeSeriesRoomEnvironmentalData?>.toRoomEnvironmentalData() =
30-
RoomEnvironmentalData(
31-
temperature = this[TimeSeriesDataType.TEMPERATURE]?.let {
32-
Temperature(
33-
it.value,
34-
it.metadata.unit?.let { unit -> TemperatureUnit.valueOf(unit) } ?: TemperatureUnit.CELSIUS
35-
)
36-
},
37-
humidity = this[TimeSeriesDataType.HUMIDITY]?.let { Humidity(it.value) },
38-
luminosity = this[TimeSeriesDataType.LUMINOSITY]?.let {
39-
Luminosity(
40-
it.value,
41-
it.metadata.unit?.let { unit -> LightUnit.valueOf(unit) } ?: LightUnit.LUX
42-
)
43-
},
44-
presence = this[TimeSeriesDataType.PRESENCE]?.let { Presence(it.value > 0) }
45-
)
30+
fun Map<TimeSeriesDataType, TimeSeriesRoomEnvironmentalData?>.toRoomEnvironmentalData(
31+
startData: RoomEnvironmentalData? = null
32+
) = RoomEnvironmentalData(
33+
temperature = this[TimeSeriesDataType.TEMPERATURE]?.let {
34+
Temperature(
35+
it.value,
36+
it.metadata.unit?.let { unit -> TemperatureUnit.valueOf(unit) } ?: TemperatureUnit.CELSIUS
37+
)
38+
} ?: startData?.temperature,
39+
humidity = this[TimeSeriesDataType.HUMIDITY]?.let { Humidity(it.value) } ?: startData?.humidity,
40+
luminosity = this[TimeSeriesDataType.LUMINOSITY]?.let {
41+
Luminosity(
42+
it.value,
43+
it.metadata.unit?.let { unit -> LightUnit.valueOf(unit) } ?: LightUnit.LUX
44+
)
45+
} ?: startData?.luminosity,
46+
presence = this[TimeSeriesDataType.PRESENCE]?.let { Presence(it.value > 0) }
47+
?: startData?.presence
48+
)
4649

4750
/**
4851
* Extension method that allows to convert [RoomEnvironmentalData] in a map of [TimeSeriesRoomEnvironmentalData].

0 commit comments

Comments
 (0)