SeriesController aggregation clean up

This commit is contained in:
Patrick Haßel 2025-02-26 11:08:22 +01:00
parent 27d827b9d6
commit 0e9b99e7e4
4 changed files with 27 additions and 17 deletions

View File

@ -2,20 +2,18 @@ package de.ph87.data.series;
import lombok.*; import lombok.*;
import java.time.*;
import java.util.*; import java.util.*;
@Data @Data
public class AggregationWrapperDto { public class AggregationWrapperDto {
public final Alignment alignment; @NonNull
public final Aligned date;
public final ZonedDateTime date;
@NonNull
public final List<IAggregationDto> aggregations; public final List<IAggregationDto> aggregations;
public AggregationWrapperDto(final Alignment alignment, final ZonedDateTime date, final List<IAggregationDto> aggregations) { public AggregationWrapperDto(@NonNull final Aligned date, @NonNull final List<IAggregationDto> aggregations) {
this.alignment = alignment;
this.date = date; this.date = date;
this.aggregations = aggregations; this.aggregations = aggregations;
} }

View File

@ -3,6 +3,7 @@ package de.ph87.data.series;
import de.ph87.data.series.meter.*; import de.ph87.data.series.meter.*;
import de.ph87.data.series.varying.*; import de.ph87.data.series.varying.*;
import lombok.*; import lombok.*;
import org.springframework.format.annotation.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.*; import java.time.*;
@ -18,14 +19,27 @@ public class SeriesController {
private final VaryingService varyingService; private final VaryingService varyingService;
@NonNull @NonNull
@GetMapping("agg/all/{alignmentName}/{offsetAmount}") @GetMapping("agg/all/{alignmentName}/offset/{offsetAmount}")
public AggregationWrapperDto agg(@PathVariable final String alignmentName, @PathVariable final long offsetAmount) { public AggregationWrapperDto agg(@PathVariable final String alignmentName, @PathVariable final long offsetAmount) {
final Alignment alignment = Alignment.valueOf(alignmentName); 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<IAggregationDto> aggregations = new ArrayList<>(); final List<IAggregationDto> aggregations = new ArrayList<>();
aggregations.addAll(meterService.findAllAggregations(alignment, date)); aggregations.addAll(meterService.findAllAggregations(date));
aggregations.addAll(varyingService.findAllAggregations(alignment, date)); aggregations.addAll(varyingService.findAllAggregations(date));
return new AggregationWrapperDto(alignment, date, aggregations); return new AggregationWrapperDto(date, aggregations);
} }
} }

View File

@ -14,7 +14,6 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.*; import org.springframework.stereotype.*;
import org.springframework.transaction.annotation.*; import org.springframework.transaction.annotation.*;
import java.time.*;
import java.util.*; import java.util.*;
import java.util.stream.*; import java.util.stream.*;
@ -89,8 +88,8 @@ public class MeterService {
} }
@NonNull @NonNull
public List<MeterAggregationDto> findAllAggregations(@NonNull final Alignment alignment, @NonNull final ZonedDateTime date) { public List<MeterAggregationDto> findAllAggregations(@NonNull final Aligned date) {
return findRepository(alignment).findAllDeltaSum(date).stream().map(this::toDto).toList(); return findRepository(date.alignment).findAllDeltaSum(date.date).stream().map(this::toDto).toList();
} }
@NonNull @NonNull

View File

@ -14,7 +14,6 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.*; import org.springframework.stereotype.*;
import org.springframework.transaction.annotation.*; import org.springframework.transaction.annotation.*;
import java.time.*;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
@ -70,8 +69,8 @@ public class VaryingService {
} }
@NonNull @NonNull
public List<VaryingAggregationDto> findAllAggregations(@NonNull final Alignment alignment, @NonNull final ZonedDateTime date) { public List<VaryingAggregationDto> findAllAggregations(@NonNull final Aligned date) {
return findRepository(alignment).findAllDeltaSum(date).stream().map(this::toDto).toList(); return findRepository(date.alignment).findAllDeltaSum(date.date).stream().map(this::toDto).toList();
} }
@NonNull @NonNull