Add rest of aggregation parameters

This commit is contained in:
Guntis Smaukstelis
2023-04-26 22:23:47 +03:00
parent 81d07eb096
commit 36f97a7448
2 changed files with 132 additions and 21 deletions
+100 -21
View File
@@ -13,20 +13,36 @@ object AggregateValue {
val dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmm") val dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmm")
case class tempMax(value: Double) extends AggregateValue case class tempMax(value: Double) extends AggregateValue
case class tempMaxList(value: Map[LocalDateTime, Double]) extends AggregateValue case class tempMaxList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class tempMin(value: Double) extends AggregateValue case class tempMin(value: Double) extends AggregateValue
case class tempMinList(value: Map[LocalDateTime, Double]) extends AggregateValue case class tempMinList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class tempAvg(value: Double) extends AggregateValue case class tempAvg(value: Double) extends AggregateValue
case class tempAvgList(value: Map[LocalDateTime, Double]) extends AggregateValue case class tempAvgList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class precipitationSum(value: Double) extends AggregateValue case class precipitationSum(value: Double) extends AggregateValue
case class precipitationList(value: Map[LocalDateTime, Double]) extends AggregateValue case class precipitationList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class windAvg(value: Double) extends AggregateValue
case class windAvgList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class windMax(value: Double) extends AggregateValue
case class windMaxList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class visibilityMin(value: Double) extends AggregateValue
case class visibilityMinList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class visibilityAvg(value: Double) extends AggregateValue
case class visibilityAvgList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class snowAvgList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class snowAvg(value: Double) extends AggregateValue
case class snowMax(value: Double) extends AggregateValue
case class atmPressureList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class atmPressureMin(value: Double) extends AggregateValue
case class atmPressureMax(value: Double) extends AggregateValue
case class atmPressureAvg(value: Double) extends AggregateValue
case class dewList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class dewMin(value: Double) extends AggregateValue
case class dewMax(value: Double) extends AggregateValue
case class dewAvg(value: Double) extends AggregateValue
case class humidityAvg(value: Double) extends AggregateValue
case class humidityAvgList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class sunDurationList(value: Map[LocalDateTime, Double]) extends AggregateValue
case class sunDurationSum(value: Double) extends AggregateValue
private def encodeDateTimeMap(map: Map[LocalDateTime, Double]): Json = { private def encodeDateTimeMap(map: Map[LocalDateTime, Double]): Json = {
map.map { case (dateTime, value) => map.map { case (dateTime, value) =>
@@ -43,6 +59,29 @@ object AggregateValue {
case key: tempAvgList => encodeDateTimeMap(key.value) case key: tempAvgList => encodeDateTimeMap(key.value)
case key: precipitationSum => Json.fromDoubleOrNull(key.value) case key: precipitationSum => Json.fromDoubleOrNull(key.value)
case key: precipitationList => encodeDateTimeMap(key.value) case key: precipitationList => encodeDateTimeMap(key.value)
case key: windAvg => Json.fromDoubleOrNull(key.value)
case key: windAvgList => encodeDateTimeMap(key.value)
case key: windMax => Json.fromDoubleOrNull(key.value)
case key: windMaxList => encodeDateTimeMap(key.value)
case key: visibilityMin => Json.fromDoubleOrNull(key.value)
case key: visibilityMinList => encodeDateTimeMap(key.value)
case key: visibilityAvg => Json.fromDoubleOrNull(key.value)
case key: visibilityAvgList => encodeDateTimeMap(key.value)
case key: snowAvgList => encodeDateTimeMap(key.value)
case key: snowAvg => Json.fromDoubleOrNull(key.value)
case key: snowMax => Json.fromDoubleOrNull(key.value)
case key: atmPressureList => encodeDateTimeMap(key.value)
case key: atmPressureMin => Json.fromDoubleOrNull(key.value)
case key: atmPressureMax => Json.fromDoubleOrNull(key.value)
case key: atmPressureAvg => Json.fromDoubleOrNull(key.value)
case key: dewList => encodeDateTimeMap(key.value)
case key: dewMin => Json.fromDoubleOrNull(key.value)
case key: dewMax => Json.fromDoubleOrNull(key.value)
case key: dewAvg => Json.fromDoubleOrNull(key.value)
case key: humidityAvg => Json.fromDoubleOrNull(key.value)
case key: humidityAvgList => encodeDateTimeMap(key.value)
case key: sunDurationList => encodeDateTimeMap(key.value)
case key: sunDurationSum => Json.fromDoubleOrNull(key.value)
} }
def getKeys: List[String] = { def getKeys: List[String] = {
@@ -68,11 +107,29 @@ object AggregateKey {
case "tempAvgList" => Some(AggregateKey.tempAvgList) case "tempAvgList" => Some(AggregateKey.tempAvgList)
case "precipitationSum" => Some(AggregateKey.precipitationSum) case "precipitationSum" => Some(AggregateKey.precipitationSum)
case "precipitationList" => Some(AggregateKey.precipitationList) case "precipitationList" => Some(AggregateKey.precipitationList)
// case "windSpeedAvg" => Some(AggregateKey.windSpeedAvg) case "windAvg" => Some(AggregateKey.windAvg)
// case "windGustMax" => Some(AggregateKey.windGustMax) case "windAvgList" => Some(AggregateKey.windAvgList)
// case "snowThicknessAvg" => Some(AggregateKey.snowThicknessAvg) case "windMax" => Some(AggregateKey.windMax)
// case "dewPointAvg" => Some(AggregateKey.dewPointAvg) case "windMaxList" => Some(AggregateKey.windMaxList)
// case "airHumidityAvg" => Some(AggregateKey.airHumidityAvg) case "visibilityMin" => Some(AggregateKey.visibilityMin)
case "visibilityMinList" => Some(AggregateKey.visibilityMinList)
case "visibilityAvg" => Some(AggregateKey.visibilityAvg)
case "visibilityAvgList" => Some(AggregateKey.visibilityAvgList)
case "snowAvgList" => Some(AggregateKey.snowAvgList)
case "snowAvg" => Some(AggregateKey.snowAvg)
case "snowMax" => Some(AggregateKey.snowMax)
case "atmPressureList" => Some(AggregateKey.atmPressureList)
case "atmPressureMin" => Some(AggregateKey.atmPressureMin)
case "atmPressureMax" => Some(AggregateKey.atmPressureMax)
case "atmPressureAvg" => Some(AggregateKey.atmPressureAvg)
case "dewList" => Some(AggregateKey.dewList)
case "dewMin" => Some(AggregateKey.dewMin)
case "dewMax" => Some(AggregateKey.dewMax)
case "dewAvg" => Some(AggregateKey.dewAvg)
case "humidityAvg" => Some(AggregateKey.humidityAvg)
case "humidityAvgList" => Some(AggregateKey.humidityAvgList)
case "sunDurationList" => Some(AggregateKey.sunDurationList)
case "sunDurationSum" => Some(AggregateKey.sunDurationSum)
case _ => None case _ => None
} }
@@ -98,13 +155,35 @@ object AggregateKey {
case object precipitationSum extends AggregateKey case object precipitationSum extends AggregateKey
case object precipitationList extends AggregateKey case object precipitationList extends AggregateKey
// case object windSpeedAvg extends AggregateKey case object windAvg extends AggregateKey
// case object windAvgList extends AggregateKey
// case object windGustMax extends AggregateKey
// case object windMax extends AggregateKey
// case object snowThicknessAvg extends AggregateKey case object windMaxList extends AggregateKey
//
// case object dewPointAvg extends AggregateKey case object visibilityMin extends AggregateKey
// case object visibilityMinList extends AggregateKey
// case object airHumidityAvg extends AggregateKey
case object visibilityAvg extends AggregateKey
case object visibilityAvgList extends AggregateKey
case object snowAvg extends AggregateKey
case object snowAvgList extends AggregateKey
case object snowMax extends AggregateKey
case object atmPressureList extends AggregateKey
case object atmPressureMin extends AggregateKey
case object atmPressureMax extends AggregateKey
case object atmPressureAvg extends AggregateKey
case object dewList extends AggregateKey
case object dewMin extends AggregateKey
case object dewMax extends AggregateKey
case object dewAvg extends AggregateKey
case object humidityAvg extends AggregateKey
case object humidityAvgList extends AggregateKey
case object sunDurationList extends AggregateKey
case object sunDurationSum extends AggregateKey
} }
+32
View File
@@ -79,6 +79,38 @@ object Parser {
case AggKey.precipitationSum => aggregateValue(_.precipitation, _.sum, AggVal.precipitationSum) case AggKey.precipitationSum => aggregateValue(_.precipitation, _.sum, AggVal.precipitationSum)
case AggKey.precipitationList => aggregateList(wd => wd.meteo.precipitation.map(wd.timestamp -> _), AggVal.precipitationList) case AggKey.precipitationList => aggregateList(wd => wd.meteo.precipitation.map(wd.timestamp -> _), AggVal.precipitationList)
case AggKey.windAvg => aggregateValue(_.windSpeedAvg, values => values.sum / values.length, AggVal.windAvg)
case AggKey.windAvgList => aggregateList(wd => wd.meteo.windSpeedAvg.map(wd.timestamp -> _), AggVal.windAvgList)
case AggKey.windMax => aggregateValue(_.windGustMax, _.max, AggVal.windMax)
case AggKey.windMaxList => aggregateList(wd => wd.meteo.windGustMax.map(wd.timestamp -> _), AggVal.windMaxList)
case AggKey.visibilityMin => aggregateValue(_.visibilityMin, _.min, AggVal.visibilityMin)
case AggKey.visibilityMinList => aggregateList(wd => wd.meteo.visibilityMin.map(wd.timestamp -> _), AggVal.visibilityMinList)
case AggKey.visibilityAvg => aggregateValue(_.visibilityAvg, values => values.sum / values.length, AggVal.visibilityAvg)
case AggKey.visibilityAvgList => aggregateList(wd => wd.meteo.visibilityAvg.map(wd.timestamp -> _), AggVal.visibilityAvgList)
case AggKey.snowAvgList => aggregateList(wd => wd.meteo.snowThicknessAvg.map(wd.timestamp -> _), AggVal.snowAvgList)
case AggKey.snowAvg => aggregateValue(_.snowThicknessAvg, values => values.sum / values.length, AggVal.snowAvg)
case AggKey.snowMax => aggregateValue(_.snowThicknessAvg, _.max, AggVal.snowMax)
case AggKey.atmPressureList => aggregateList(wd => wd.meteo.atmPressure.map(wd.timestamp -> _), AggVal.atmPressureList)
case AggKey.atmPressureMin => aggregateValue(_.atmPressure, _.min, AggVal.atmPressureMin)
case AggKey.atmPressureMax => aggregateValue(_.atmPressure, _.max, AggVal.atmPressureMax)
case AggKey.atmPressureAvg => aggregateValue(_.atmPressure, values => values.sum / values.length, AggVal.atmPressureAvg)
case AggKey.dewList => aggregateList(wd => wd.meteo.dewPoint.map(wd.timestamp -> _), AggVal.dewList)
case AggKey.dewMin => aggregateValue(_.dewPoint, _.min, AggVal.dewMin)
case AggKey.dewMax => aggregateValue(_.dewPoint, _.max, AggVal.dewMax)
case AggKey.dewAvg => aggregateValue(_.dewPoint, values => values.sum / values.length, AggVal.dewAvg)
case AggKey.humidityAvg => aggregateValue(_.airHumidity, values => values.sum / values.length, AggVal.humidityAvg)
case AggKey.humidityAvgList => aggregateList(wd => wd.meteo.airHumidity.map(wd.timestamp -> _), AggVal.humidityAvgList)
case AggKey.sunDurationList => aggregateList(wd => wd.meteo.sunshineDuration.map(wd.timestamp -> _), AggVal.sunDurationList)
case AggKey.sunDurationSum => aggregateValue(_.sunshineDuration, _.sum, AggVal.sunDurationSum)
} }
} }
} }