From 097bfb026654e9c8daf4c2d29d6752e8b6ffeb79 Mon Sep 17 00:00:00 2001 From: IrynaMatveieva Date: Tue, 18 Nov 2025 08:20:52 +0200 Subject: [PATCH] refactoring --- .../aggregation/single/interval/BaseAggInterval.java | 7 ++++++- .../aggregation/single/interval/CustomInterval.java | 6 ++---- .../aggregation/single/interval/DayInterval.java | 5 ++--- .../aggregation/single/interval/HourInterval.java | 5 ++--- .../aggregation/single/interval/MonthInterval.java | 5 ++--- .../aggregation/single/interval/QuarterInterval.java | 5 ++--- .../aggregation/single/interval/WeekInterval.java | 6 ++---- .../aggregation/single/interval/WeekSunSatInterval.java | 6 ++---- .../aggregation/single/interval/YearInterval.java | 5 ++--- 9 files changed, 22 insertions(+), 28 deletions(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java index e6400230b3..0c0801dea9 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java @@ -81,7 +81,12 @@ public abstract class BaseAggInterval implements AggInterval { return actualEnd.toInstant().toEpochMilli(); } - protected abstract ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next); + protected abstract ZonedDateTime alignToIntervalStart(ZonedDateTime reference); + + protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { + ZonedDateTime base = alignToIntervalStart(reference); + return next ? getNextIntervalStart(base) : base; + } @Override public void validate() { diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java index a88769f223..24bfa26d8d 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java @@ -22,7 +22,6 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.time.Duration; -import java.time.Instant; import java.time.ZonedDateTime; @EqualsAndHashCode(callSuper = true) @@ -54,12 +53,11 @@ public class CustomInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { ZonedDateTime localMidnight = reference.toLocalDate().atStartOfDay(reference.getZone()); long secondsFromMidnight = Duration.between(localMidnight, reference).getSeconds(); long alignedSecondsFromMidnight = (secondsFromMidnight / durationSec) * durationSec; - ZonedDateTime aligned = localMidnight.plusSeconds(alignedSecondsFromMidnight); - return next ? aligned.plusSeconds(durationSec) : aligned; + return localMidnight.plusSeconds(alignedSecondsFromMidnight); } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/DayInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/DayInterval.java index 37e75c9ee6..2ad0ce24d3 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/DayInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/DayInterval.java @@ -35,9 +35,8 @@ public class DayInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - ZonedDateTime base = reference.truncatedTo(ChronoUnit.DAYS); - return next ? base.plusDays(1) : base; + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { + return reference.truncatedTo(ChronoUnit.DAYS); } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/HourInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/HourInterval.java index 1cac0017e7..3ce366bc75 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/HourInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/HourInterval.java @@ -37,9 +37,8 @@ public class HourInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - ZonedDateTime base = reference.truncatedTo(ChronoUnit.HOURS); - return next ? base.plusHours(1) : base; + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { + return reference.truncatedTo(ChronoUnit.HOURS); } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/MonthInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/MonthInterval.java index 0a540e49cd..3ce121459b 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/MonthInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/MonthInterval.java @@ -35,9 +35,8 @@ public class MonthInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - ZonedDateTime base = reference.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS); - return next ? base.plusMonths(1) : base; + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { + return reference.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS); } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/QuarterInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/QuarterInterval.java index bd27c681f8..96fcfc0dc8 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/QuarterInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/QuarterInterval.java @@ -36,14 +36,13 @@ public class QuarterInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { int month = reference.getMonthValue(); int quarterStartMonth = ((month - 1) / 3) * 3 + 1; // 1, 4, 7, 10 - ZonedDateTime base = ZonedDateTime.of( + return ZonedDateTime.of( LocalDate.of(reference.getYear(), quarterStartMonth, 1), LocalTime.MIDNIGHT, reference.getZone()); - return next ? base.plusMonths(3) : base; } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekInterval.java index 381fb3bb66..0f70adc5ad 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekInterval.java @@ -37,10 +37,8 @@ public class WeekInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - ZonedDateTime startOfWeekDate = reference.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)) - .truncatedTo(ChronoUnit.DAYS); - return next ? startOfWeekDate.plusWeeks(1) : startOfWeekDate; + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { + return reference.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).truncatedTo(ChronoUnit.DAYS); } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekSunSatInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekSunSatInterval.java index 242f3b7914..2c4482f0b4 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekSunSatInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/WeekSunSatInterval.java @@ -37,10 +37,8 @@ public class WeekSunSatInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - ZonedDateTime startOfWeekDate = reference.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY)) - .truncatedTo(ChronoUnit.DAYS); - return next ? startOfWeekDate.plusWeeks(1) : startOfWeekDate; + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { + return reference.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY)).truncatedTo(ChronoUnit.DAYS); } @Override diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/YearInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/YearInterval.java index 83c8f58301..441f3913a9 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/YearInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/YearInterval.java @@ -36,12 +36,11 @@ public class YearInterval extends BaseAggInterval { } @Override - protected ZonedDateTime getAlignedBoundary(ZonedDateTime reference, boolean next) { - ZonedDateTime base = ZonedDateTime.of( + protected ZonedDateTime alignToIntervalStart(ZonedDateTime reference) { + return ZonedDateTime.of( LocalDate.of(reference.getYear(), 1, 1), LocalTime.MIDNIGHT, reference.getZone()); - return next ? base.plusYears(1) : base; } @Override