From 0e9b99e7e44a4864a5662cfb831a3c3fb52c1089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Wed, 26 Feb 2025 11:08:22 +0100 Subject: [PATCH] SeriesController aggregation clean up --- .../data/series/AggregationWrapperDto.java | 10 ++++---- .../de/ph87/data/series/SeriesController.java | 24 +++++++++++++++---- .../ph87/data/series/meter/MeterService.java | 5 ++-- .../data/series/varying/VaryingService.java | 5 ++-- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/ph87/data/series/AggregationWrapperDto.java b/src/main/java/de/ph87/data/series/AggregationWrapperDto.java index 004f5bf..953154f 100644 --- a/src/main/java/de/ph87/data/series/AggregationWrapperDto.java +++ b/src/main/java/de/ph87/data/series/AggregationWrapperDto.java @@ -2,20 +2,18 @@ package de.ph87.data.series; import lombok.*; -import java.time.*; import java.util.*; @Data public class AggregationWrapperDto { - public final Alignment alignment; - - public final ZonedDateTime date; + @NonNull + public final Aligned date; + @NonNull public final List aggregations; - public AggregationWrapperDto(final Alignment alignment, final ZonedDateTime date, final List aggregations) { - this.alignment = alignment; + public AggregationWrapperDto(@NonNull final Aligned date, @NonNull final List aggregations) { this.date = date; this.aggregations = aggregations; } diff --git a/src/main/java/de/ph87/data/series/SeriesController.java b/src/main/java/de/ph87/data/series/SeriesController.java index 1f82319..b15364a 100644 --- a/src/main/java/de/ph87/data/series/SeriesController.java +++ b/src/main/java/de/ph87/data/series/SeriesController.java @@ -3,6 +3,7 @@ package de.ph87.data.series; import de.ph87.data.series.meter.*; import de.ph87.data.series.varying.*; import lombok.*; +import org.springframework.format.annotation.*; import org.springframework.web.bind.annotation.*; import java.time.*; @@ -18,14 +19,27 @@ public class SeriesController { private final VaryingService varyingService; @NonNull - @GetMapping("agg/all/{alignmentName}/{offsetAmount}") + @GetMapping("agg/all/{alignmentName}/offset/{offsetAmount}") public AggregationWrapperDto agg(@PathVariable final String alignmentName, @PathVariable final long offsetAmount) { final Alignment alignment = Alignment.valueOf(alignmentName); - final ZonedDateTime date = alignment.align(ZonedDateTime.now()).minus(offsetAmount).date; + final Aligned date = alignment.align(ZonedDateTime.now()).minus(offsetAmount); + return getAggregationWrapperDto(date); + } + + @NonNull + @GetMapping("agg/all/{alignmentName}/zoned/{zonedDateTime}") + public AggregationWrapperDto agg(@PathVariable final String alignmentName, @PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) final ZonedDateTime zonedDateTime) { + final Alignment alignment = Alignment.valueOf(alignmentName); + final Aligned date = alignment.align(zonedDateTime); + return getAggregationWrapperDto(date); + } + + @NonNull + private AggregationWrapperDto getAggregationWrapperDto(@NonNull final Aligned date) { final List aggregations = new ArrayList<>(); - aggregations.addAll(meterService.findAllAggregations(alignment, date)); - aggregations.addAll(varyingService.findAllAggregations(alignment, date)); - return new AggregationWrapperDto(alignment, date, aggregations); + aggregations.addAll(meterService.findAllAggregations(date)); + aggregations.addAll(varyingService.findAllAggregations(date)); + return new AggregationWrapperDto(date, aggregations); } } diff --git a/src/main/java/de/ph87/data/series/meter/MeterService.java b/src/main/java/de/ph87/data/series/meter/MeterService.java index 23a8bb1..235bb78 100644 --- a/src/main/java/de/ph87/data/series/meter/MeterService.java +++ b/src/main/java/de/ph87/data/series/meter/MeterService.java @@ -14,7 +14,6 @@ import org.springframework.context.event.EventListener; import org.springframework.stereotype.*; import org.springframework.transaction.annotation.*; -import java.time.*; import java.util.*; import java.util.stream.*; @@ -89,8 +88,8 @@ public class MeterService { } @NonNull - public List findAllAggregations(@NonNull final Alignment alignment, @NonNull final ZonedDateTime date) { - return findRepository(alignment).findAllDeltaSum(date).stream().map(this::toDto).toList(); + public List findAllAggregations(@NonNull final Aligned date) { + return findRepository(date.alignment).findAllDeltaSum(date.date).stream().map(this::toDto).toList(); } @NonNull diff --git a/src/main/java/de/ph87/data/series/varying/VaryingService.java b/src/main/java/de/ph87/data/series/varying/VaryingService.java index 6c12010..2751691 100644 --- a/src/main/java/de/ph87/data/series/varying/VaryingService.java +++ b/src/main/java/de/ph87/data/series/varying/VaryingService.java @@ -14,7 +14,6 @@ import org.springframework.context.event.EventListener; import org.springframework.stereotype.*; import org.springframework.transaction.annotation.*; -import java.time.*; import java.util.*; @Slf4j @@ -70,8 +69,8 @@ public class VaryingService { } @NonNull - public List findAllAggregations(@NonNull final Alignment alignment, @NonNull final ZonedDateTime date) { - return findRepository(alignment).findAllDeltaSum(date).stream().map(this::toDto).toList(); + public List findAllAggregations(@NonNull final Aligned date) { + return findRepository(date.alignment).findAllDeltaSum(date.date).stream().map(this::toDto).toList(); } @NonNull