diff --git a/src/main/java/de/ph87/data/common/DateTimeHelpers.java b/src/main/java/de/ph87/data/common/DateTimeHelpers.java new file mode 100644 index 0000000..639b42c --- /dev/null +++ b/src/main/java/de/ph87/data/common/DateTimeHelpers.java @@ -0,0 +1,16 @@ +package de.ph87.data.common; + +import lombok.NonNull; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public class DateTimeHelpers { + + @NonNull + public static ZonedDateTime ZDT(final long epochSeconds) { + return ZonedDateTime.ofInstant(Instant.ofEpochSecond(epochSeconds), ZoneId.systemDefault()); + } + +} diff --git a/src/main/java/de/ph87/data/demo/DemoService.java b/src/main/java/de/ph87/data/demo/DemoService.java index 13be757..288ae69 100644 --- a/src/main/java/de/ph87/data/demo/DemoService.java +++ b/src/main/java/de/ph87/data/demo/DemoService.java @@ -11,9 +11,9 @@ import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static de.ph87.data.grid.GridReceiver.GRID_DELIVERY_SERIES_NAME; -import static de.ph87.data.grid.GridReceiver.GRID_PURCHASE_SERIES_NAME; -import static de.ph87.data.photovoltaic.PhotovoltaicMqttReceiver.PHOTOVOLTAIC_ENERGY_SERIES_NAME; +import static de.ph87.data.electricity.grid.GridReceiver.GRID_DELIVERY_SERIES_NAME; +import static de.ph87.data.electricity.grid.GridReceiver.GRID_PURCHASE_SERIES_NAME; +import static de.ph87.data.electricity.photovoltaic.PhotovoltaicReceiver.PHOTOVOLTAIC_ENERGY_SERIES_NAME; @Slf4j @Service diff --git a/src/main/java/de/ph87/data/electricity/ElectricityHelpers.java b/src/main/java/de/ph87/data/electricity/ElectricityHelpers.java new file mode 100644 index 0000000..2b5d6c2 --- /dev/null +++ b/src/main/java/de/ph87/data/electricity/ElectricityHelpers.java @@ -0,0 +1,28 @@ +package de.ph87.data.electricity; + +public class ElectricityHelpers { + + public static double energyToKWh(final double energy, final String energyUnit) { + return switch (energyUnit) { + case "mWh" -> energy / 1000000; + case "Wh" -> energy / 1000; + case "kWh" -> energy; + case "MWh" -> energy * 1000; + case "GWh" -> energy * 1000000; + default -> throw new RuntimeException(); + }; + } + + @SuppressWarnings("unused") + public static double powerToW(final double power, final String powerUnit) { + return switch (powerUnit) { + case "mW" -> power / 1000; + case "W" -> power; + case "kW" -> power * 1000; + case "MW" -> power * 1000000; + case "GW" -> power * 1000000000; + default -> throw new RuntimeException(); + }; + } + +} diff --git a/src/main/java/de/ph87/data/grid/GridInbound.java b/src/main/java/de/ph87/data/electricity/grid/GridInbound.java similarity index 84% rename from src/main/java/de/ph87/data/grid/GridInbound.java rename to src/main/java/de/ph87/data/electricity/grid/GridInbound.java index 4d23366..d25e88e 100644 --- a/src/main/java/de/ph87/data/grid/GridInbound.java +++ b/src/main/java/de/ph87/data/electricity/grid/GridInbound.java @@ -1,11 +1,11 @@ -package de.ph87.data.grid; +package de.ph87.data.electricity.grid; import lombok.Getter; import lombok.ToString; import java.time.ZonedDateTime; -import static de.ph87.data.series.period.consumption.ConsumptionController.ZDT; +import static de.ph87.data.common.DateTimeHelpers.ZDT; @Getter @ToString diff --git a/src/main/java/de/ph87/data/grid/GridReceiver.java b/src/main/java/de/ph87/data/electricity/grid/GridReceiver.java similarity index 56% rename from src/main/java/de/ph87/data/grid/GridReceiver.java rename to src/main/java/de/ph87/data/electricity/grid/GridReceiver.java index 26f2d04..02a697a 100644 --- a/src/main/java/de/ph87/data/grid/GridReceiver.java +++ b/src/main/java/de/ph87/data/electricity/grid/GridReceiver.java @@ -1,9 +1,9 @@ -package de.ph87.data.grid; +package de.ph87.data.electricity.grid; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import de.ph87.data.mqtt.MqttEvent; -import de.ph87.data.series.measure.MeasureEvent; +import de.ph87.data.series.consumption.ConsumptionEvent; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -11,6 +11,8 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; +import static de.ph87.data.electricity.ElectricityHelpers.energyToKWh; + @Slf4j @Service @RequiredArgsConstructor @@ -39,33 +41,10 @@ public class GridReceiver { } final double purchaseKWh = energyToKWh(inbound.purchaseWh, "Wh"); - applicationEventPublisher.publishEvent(new MeasureEvent(GRID_PURCHASE_SERIES_NAME, inbound.meter, inbound.date, purchaseKWh)); + applicationEventPublisher.publishEvent(new ConsumptionEvent(GRID_PURCHASE_SERIES_NAME, inbound.meter, inbound.date, purchaseKWh)); final double deliveryKWh = energyToKWh(inbound.deliveryWh, "Wh"); - applicationEventPublisher.publishEvent(new MeasureEvent(GRID_DELIVERY_SERIES_NAME, inbound.meter, inbound.date, deliveryKWh)); - } - - public static double energyToKWh(final double energy, final String energyUnit) { - return switch (energyUnit) { - case "mWh" -> energy / 1000000; - case "Wh" -> energy / 1000; - case "kWh" -> energy; - case "MWh" -> energy * 1000; - case "GWh" -> energy * 1000000; - default -> throw new RuntimeException(); - }; - } - - @SuppressWarnings("unused") - public static double powerToW(final double power, final String powerUnit) { - return switch (powerUnit) { - case "mW" -> power / 1000; - case "W" -> power; - case "kW" -> power * 1000; - case "MW" -> power * 1000000; - case "GW" -> power * 1000000000; - default -> throw new RuntimeException(); - }; + applicationEventPublisher.publishEvent(new ConsumptionEvent(GRID_DELIVERY_SERIES_NAME, inbound.meter, inbound.date, deliveryKWh)); } } diff --git a/src/main/java/de/ph87/data/photovoltaic/PhotovoltaicMqttReceiver.java b/src/main/java/de/ph87/data/electricity/photovoltaic/PhotovoltaicReceiver.java similarity index 58% rename from src/main/java/de/ph87/data/photovoltaic/PhotovoltaicMqttReceiver.java rename to src/main/java/de/ph87/data/electricity/photovoltaic/PhotovoltaicReceiver.java index 6eabf35..6e25f09 100644 --- a/src/main/java/de/ph87/data/photovoltaic/PhotovoltaicMqttReceiver.java +++ b/src/main/java/de/ph87/data/electricity/photovoltaic/PhotovoltaicReceiver.java @@ -1,7 +1,7 @@ -package de.ph87.data.photovoltaic; +package de.ph87.data.electricity.photovoltaic; import de.ph87.data.mqtt.MqttEvent; -import de.ph87.data.series.measure.MeasureEvent; +import de.ph87.data.series.consumption.ConsumptionEvent; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,12 +13,13 @@ import java.time.ZonedDateTime; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static de.ph87.data.series.period.consumption.ConsumptionController.ZDT; +import static de.ph87.data.common.DateTimeHelpers.ZDT; +import static de.ph87.data.electricity.ElectricityHelpers.energyToKWh; @Slf4j @Service @RequiredArgsConstructor -public class PhotovoltaicMqttReceiver { +public class PhotovoltaicReceiver { public static final String PHOTOVOLTAIC_ENERGY_SERIES_NAME = "photovoltaic.energyKWh"; @@ -42,30 +43,7 @@ public class PhotovoltaicMqttReceiver { final double energy = Double.parseDouble(matcher.group("energy")); final String energyUnit = matcher.group("energyUnit"); final double energyKWh = energyToKWh(energy, energyUnit); - applicationEventPublisher.publishEvent(new MeasureEvent(PHOTOVOLTAIC_ENERGY_SERIES_NAME, serial, date, energyKWh)); - } - - public static double energyToKWh(final double energy, final String energyUnit) { - return switch (energyUnit) { - case "mWh" -> energy / 1000000; - case "Wh" -> energy / 1000; - case "kWh" -> energy; - case "MWh" -> energy * 1000; - case "GWh" -> energy * 1000000; - default -> throw new RuntimeException(); - }; - } - - @SuppressWarnings("unused") - public static double powerToW(final double power, final String powerUnit) { - return switch (powerUnit) { - case "mW" -> power / 1000; - case "W" -> power; - case "kW" -> power * 1000; - case "MW" -> power * 1000000; - case "GW" -> power * 1000000000; - default -> throw new RuntimeException(); - }; + applicationEventPublisher.publishEvent(new ConsumptionEvent(PHOTOVOLTAIC_ENERGY_SERIES_NAME, serial, date, energyKWh)); } } diff --git a/src/main/java/de/ph87/data/series/Series.java b/src/main/java/de/ph87/data/series/Series.java index 6fe1695..6b7e4de 100644 --- a/src/main/java/de/ph87/data/series/Series.java +++ b/src/main/java/de/ph87/data/series/Series.java @@ -1,6 +1,6 @@ package de.ph87.data.series; -import de.ph87.data.series.period.Period; +import de.ph87.data.series.consumption.period.Period; import jakarta.annotation.Nullable; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/de/ph87/data/series/SeriesService.java b/src/main/java/de/ph87/data/series/SeriesService.java index 56ecaf1..1b73dca 100644 --- a/src/main/java/de/ph87/data/series/SeriesService.java +++ b/src/main/java/de/ph87/data/series/SeriesService.java @@ -1,8 +1,8 @@ package de.ph87.data.series; -import de.ph87.data.series.measure.MeasureEvent; -import de.ph87.data.series.measure.MeasureEventTooOld; -import de.ph87.data.series.period.PeriodService; +import de.ph87.data.series.consumption.ConsumptionEvent; +import de.ph87.data.series.consumption.ConsumptionEventTooOld; +import de.ph87.data.series.consumption.period.PeriodService; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -22,9 +22,9 @@ public class SeriesService { private final PeriodService periodService; - @EventListener(MeasureEvent.class) - public void onMeasureEvent(@NonNull final MeasureEvent event) { - log.debug("Handling MeasureEvent: {}", event); + @EventListener(ConsumptionEvent.class) + public void onConsumptionEvent(@NonNull final ConsumptionEvent event) { + log.debug("Handling ConsumptionEvent: {}", event); final Optional seriesOptional = seriesRepository.findByNameOrAliasesContains(event.getName(), event.getName()); if (seriesOptional.isEmpty()) { log.warn("No series found with name or alias: \"{}\"", event.getName()); @@ -34,8 +34,8 @@ public class SeriesService { final Series series = seriesOptional.get(); log.debug("Series found: {}", series); try { - periodService.onMeasureEvent(series, event); - } catch (MeasureEventTooOld e) { + periodService.onConsumptionEvent(series, event); + } catch (ConsumptionEventTooOld e) { log.warn(e.toString()); } } diff --git a/src/main/java/de/ph87/data/series/period/consumption/Consumption.java b/src/main/java/de/ph87/data/series/consumption/Consumption.java similarity index 88% rename from src/main/java/de/ph87/data/series/period/consumption/Consumption.java rename to src/main/java/de/ph87/data/series/consumption/Consumption.java index 4142a1f..5e29507 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/Consumption.java +++ b/src/main/java/de/ph87/data/series/consumption/Consumption.java @@ -1,14 +1,14 @@ -package de.ph87.data.series.period.consumption; +package de.ph87.data.series.consumption; -import de.ph87.data.series.period.Period; -import de.ph87.data.series.period.consumption.unit.Unit; +import de.ph87.data.series.consumption.period.Period; +import de.ph87.data.series.consumption.unit.Unit; import jakarta.persistence.*; import lombok.*; import java.io.Serializable; import java.time.ZonedDateTime; -import static de.ph87.data.series.period.consumption.slice.SliceService.DL; +import static de.ph87.data.series.consumption.slice.SliceService.DL; @Entity @Getter diff --git a/src/main/java/de/ph87/data/series/period/consumption/ConsumptionController.java b/src/main/java/de/ph87/data/series/consumption/ConsumptionController.java similarity index 83% rename from src/main/java/de/ph87/data/series/period/consumption/ConsumptionController.java rename to src/main/java/de/ph87/data/series/consumption/ConsumptionController.java index 9f5ddd9..a95e497 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/ConsumptionController.java +++ b/src/main/java/de/ph87/data/series/consumption/ConsumptionController.java @@ -1,8 +1,9 @@ -package de.ph87.data.series.period.consumption; +package de.ph87.data.series.consumption; -import de.ph87.data.series.period.consumption.slice.Slice; -import de.ph87.data.series.period.consumption.slice.SliceService; -import de.ph87.data.series.period.consumption.unit.Unit; +import de.ph87.data.common.DateTimeHelpers; +import de.ph87.data.series.consumption.slice.Slice; +import de.ph87.data.series.consumption.slice.SliceService; +import de.ph87.data.series.consumption.unit.Unit; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -10,8 +11,6 @@ import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import org.springframework.web.server.ResponseStatusException; -import java.time.Instant; -import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ public class ConsumptionController { @NonNull @GetMapping("{seriesId}/{unitName}/between/{beginEpochSeconds}/{endEpochSeconds}") public List> between(@PathVariable final long seriesId, @PathVariable final String unitName, @PathVariable final long beginEpochSeconds, @PathVariable final long endEpochSeconds) { - return between(seriesId, Unit.valueOf(unitName), ZDT(beginEpochSeconds), ZDT(endEpochSeconds)); + return between(seriesId, Unit.valueOf(unitName), DateTimeHelpers.ZDT(beginEpochSeconds), DateTimeHelpers.ZDT(endEpochSeconds)); } @NonNull @@ -78,9 +77,4 @@ public class ConsumptionController { return numbers; } - @NonNull - public static ZonedDateTime ZDT(final long epochSeconds) { - return ZonedDateTime.ofInstant(Instant.ofEpochSecond(epochSeconds), ZoneId.systemDefault()); - } - } diff --git a/src/main/java/de/ph87/data/series/consumption/ConsumptionEvent.java b/src/main/java/de/ph87/data/series/consumption/ConsumptionEvent.java new file mode 100644 index 0000000..7932654 --- /dev/null +++ b/src/main/java/de/ph87/data/series/consumption/ConsumptionEvent.java @@ -0,0 +1,26 @@ +package de.ph87.data.series.consumption; + +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import lombok.ToString; + +import java.time.ZonedDateTime; + +@Getter +@ToString +@RequiredArgsConstructor +public class ConsumptionEvent { + + @NonNull + private final String name; + + @NonNull + private final String periodName; + + @NonNull + private final ZonedDateTime date; + + private final double value; + +} diff --git a/src/main/java/de/ph87/data/series/consumption/ConsumptionEventTooOld.java b/src/main/java/de/ph87/data/series/consumption/ConsumptionEventTooOld.java new file mode 100644 index 0000000..d6364e3 --- /dev/null +++ b/src/main/java/de/ph87/data/series/consumption/ConsumptionEventTooOld.java @@ -0,0 +1,12 @@ +package de.ph87.data.series.consumption; + +import de.ph87.data.series.consumption.period.Period; +import lombok.NonNull; + +public class ConsumptionEventTooOld extends Exception { + + public ConsumptionEventTooOld(@NonNull final Period period, @NonNull final ConsumptionEvent event) { + super("Date of received Event older than last stored one: event=%s, period=%s".formatted(event, period)); + } + +} diff --git a/src/main/java/de/ph87/data/series/period/consumption/ConsumptionRepository.java b/src/main/java/de/ph87/data/series/consumption/ConsumptionRepository.java similarity index 80% rename from src/main/java/de/ph87/data/series/period/consumption/ConsumptionRepository.java rename to src/main/java/de/ph87/data/series/consumption/ConsumptionRepository.java index 02168d9..4b031de 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/ConsumptionRepository.java +++ b/src/main/java/de/ph87/data/series/consumption/ConsumptionRepository.java @@ -1,8 +1,7 @@ -package de.ph87.data.series.period.consumption; +package de.ph87.data.series.consumption; -import de.ph87.data.series.Series; -import de.ph87.data.series.period.Period; -import de.ph87.data.series.period.consumption.unit.Unit; +import de.ph87.data.series.consumption.period.Period; +import de.ph87.data.series.consumption.unit.Unit; import lombok.NonNull; import org.springframework.data.repository.CrudRepository; @@ -20,6 +19,4 @@ public interface ConsumptionRepository extends CrudRepository findAllByIdPeriodAndIdUnitAndIdAlignedGreaterThanEqualAndIdAlignedLessThanEqualOrderByIdAlignedAsc(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime begin, @NonNull ZonedDateTime end); - void deleteAllByIdPeriodSeries(Series oil); - } diff --git a/src/main/java/de/ph87/data/series/period/consumption/ConsumptionService.java b/src/main/java/de/ph87/data/series/consumption/ConsumptionService.java similarity index 80% rename from src/main/java/de/ph87/data/series/period/consumption/ConsumptionService.java rename to src/main/java/de/ph87/data/series/consumption/ConsumptionService.java index b65da1c..21511b6 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/ConsumptionService.java +++ b/src/main/java/de/ph87/data/series/consumption/ConsumptionService.java @@ -1,8 +1,7 @@ -package de.ph87.data.series.period.consumption; +package de.ph87.data.series.consumption; -import de.ph87.data.series.measure.MeasureEvent; -import de.ph87.data.series.period.Period; -import de.ph87.data.series.period.consumption.unit.Unit; +import de.ph87.data.series.consumption.period.Period; +import de.ph87.data.series.consumption.unit.Unit; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -20,7 +19,7 @@ public class ConsumptionService { private final ConsumptionRepository consumptionRepository; - public void onMeasureEvent(@NonNull final Period period, @NonNull final MeasureEvent event) { + public void onConsumptionEvent(@NonNull final Period period, @NonNull final ConsumptionEvent event) { for (final Unit unit : Unit.values()) { final ZonedDateTime aligned = unit.align(event.getDate()); final Optional existingOptional = consumptionRepository.findByIdPeriodAndIdUnitAndIdAligned(period, unit, aligned); diff --git a/src/main/java/de/ph87/data/series/period/Period.java b/src/main/java/de/ph87/data/series/consumption/period/Period.java similarity index 83% rename from src/main/java/de/ph87/data/series/period/Period.java rename to src/main/java/de/ph87/data/series/consumption/period/Period.java index 34fa386..5211e39 100644 --- a/src/main/java/de/ph87/data/series/period/Period.java +++ b/src/main/java/de/ph87/data/series/consumption/period/Period.java @@ -1,7 +1,7 @@ -package de.ph87.data.series.period; +package de.ph87.data.series.consumption.period; import de.ph87.data.series.Series; -import de.ph87.data.series.measure.MeasureEvent; +import de.ph87.data.series.consumption.ConsumptionEvent; import jakarta.persistence.*; import lombok.*; @@ -47,7 +47,7 @@ public class Period { @Column(nullable = false) private double lastValue; - public Period(@NonNull final Series series, @NonNull final MeasureEvent event) { + public Period(@NonNull final Series series, @NonNull final ConsumptionEvent event) { this.series = series; this.name = event.getPeriodName(); this.firstDate = event.getDate(); diff --git a/src/main/java/de/ph87/data/series/period/PeriodRepository.java b/src/main/java/de/ph87/data/series/consumption/period/PeriodRepository.java similarity index 77% rename from src/main/java/de/ph87/data/series/period/PeriodRepository.java rename to src/main/java/de/ph87/data/series/consumption/period/PeriodRepository.java index ccb8d20..4563ef4 100644 --- a/src/main/java/de/ph87/data/series/period/PeriodRepository.java +++ b/src/main/java/de/ph87/data/series/consumption/period/PeriodRepository.java @@ -1,6 +1,5 @@ -package de.ph87.data.series.period; +package de.ph87.data.series.consumption.period; -import de.ph87.data.series.Series; import lombok.NonNull; import org.springframework.data.repository.CrudRepository; @@ -11,6 +10,4 @@ public interface PeriodRepository extends CrudRepository { List findAllBySeriesIdAndLastDateGreaterThanAndFirstDateLessThan(long seriesId, @NonNull ZonedDateTime wantedEnd, @NonNull ZonedDateTime wantedBegin); - void deleteAllBySeries(Series oil); - } diff --git a/src/main/java/de/ph87/data/series/period/PeriodService.java b/src/main/java/de/ph87/data/series/consumption/period/PeriodService.java similarity index 80% rename from src/main/java/de/ph87/data/series/period/PeriodService.java rename to src/main/java/de/ph87/data/series/consumption/period/PeriodService.java index 4d0c8c1..1afeacb 100644 --- a/src/main/java/de/ph87/data/series/period/PeriodService.java +++ b/src/main/java/de/ph87/data/series/consumption/period/PeriodService.java @@ -1,10 +1,10 @@ -package de.ph87.data.series.period; +package de.ph87.data.series.consumption.period; import de.ph87.data.series.Series; import de.ph87.data.series.SeriesMode; -import de.ph87.data.series.measure.MeasureEvent; -import de.ph87.data.series.measure.MeasureEventTooOld; -import de.ph87.data.series.period.consumption.ConsumptionService; +import de.ph87.data.series.consumption.ConsumptionEvent; +import de.ph87.data.series.consumption.ConsumptionEventTooOld; +import de.ph87.data.series.consumption.ConsumptionService; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -21,19 +21,19 @@ public class PeriodService { private final ConsumptionService consumptionService; - public void onMeasureEvent(@NonNull final Series series, @NonNull final MeasureEvent event) throws MeasureEventTooOld { + public void onConsumptionEvent(@NonNull final Series series, @NonNull final ConsumptionEvent event) throws ConsumptionEventTooOld { final Period period = getOrCreatePeriod(series, event); period.setLastDate(event.getDate()); period.setLastValue(event.getValue()); - consumptionService.onMeasureEvent(period, event); + consumptionService.onConsumptionEvent(period, event); } @NonNull - private Period getOrCreatePeriod(@NonNull final Series series, @NonNull final MeasureEvent event) throws MeasureEventTooOld { + private Period getOrCreatePeriod(@NonNull final Series series, @NonNull final ConsumptionEvent event) throws ConsumptionEventTooOld { if (series.getPeriod() != null) { log.debug("Last Period exists: {}", series.getPeriod()); if (isEventTooOld(series.getPeriod(), event)) { - throw new MeasureEventTooOld(series.getPeriod(), event); + throw new ConsumptionEventTooOld(series.getPeriod(), event); } if (isPeriodValid(series.getPeriod(), event)) { log.debug("Last Period still VALID."); @@ -49,11 +49,11 @@ public class PeriodService { return newPeriod; } - private static boolean isEventTooOld(@NonNull final Period period, @NonNull final MeasureEvent event) { + private static boolean isEventTooOld(@NonNull final Period period, @NonNull final ConsumptionEvent event) { return !period.getLastDate().isBefore(event.getDate()); } - private boolean isPeriodValid(@NonNull final Period period, @NonNull final MeasureEvent event) { + private boolean isPeriodValid(@NonNull final Period period, @NonNull final ConsumptionEvent event) { if (!period.getName().equals(event.getPeriodName())) { log.debug("Period name changed: old={}, new={}", period.getName(), event.getPeriodName()); return false; diff --git a/src/main/java/de/ph87/data/series/period/consumption/slice/Slice.java b/src/main/java/de/ph87/data/series/consumption/slice/Slice.java similarity index 91% rename from src/main/java/de/ph87/data/series/period/consumption/slice/Slice.java rename to src/main/java/de/ph87/data/series/consumption/slice/Slice.java index b97edbb..7785a3f 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/slice/Slice.java +++ b/src/main/java/de/ph87/data/series/consumption/slice/Slice.java @@ -1,7 +1,7 @@ -package de.ph87.data.series.period.consumption.slice; +package de.ph87.data.series.consumption.slice; -import de.ph87.data.series.period.consumption.Consumption; -import de.ph87.data.series.period.consumption.unit.Unit; +import de.ph87.data.series.consumption.Consumption; +import de.ph87.data.series.consumption.unit.Unit; import lombok.Getter; import lombok.NonNull; import lombok.Setter; diff --git a/src/main/java/de/ph87/data/series/period/consumption/slice/SliceService.java b/src/main/java/de/ph87/data/series/consumption/slice/SliceService.java similarity index 95% rename from src/main/java/de/ph87/data/series/period/consumption/slice/SliceService.java rename to src/main/java/de/ph87/data/series/consumption/slice/SliceService.java index b99c516..3b2e953 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/slice/SliceService.java +++ b/src/main/java/de/ph87/data/series/consumption/slice/SliceService.java @@ -1,10 +1,10 @@ -package de.ph87.data.series.period.consumption.slice; +package de.ph87.data.series.consumption.slice; -import de.ph87.data.series.period.Period; -import de.ph87.data.series.period.PeriodRepository; -import de.ph87.data.series.period.consumption.Consumption; -import de.ph87.data.series.period.consumption.ConsumptionRepository; -import de.ph87.data.series.period.consumption.unit.Unit; +import de.ph87.data.series.consumption.Consumption; +import de.ph87.data.series.consumption.ConsumptionRepository; +import de.ph87.data.series.consumption.period.Period; +import de.ph87.data.series.consumption.period.PeriodRepository; +import de.ph87.data.series.consumption.unit.Unit; import jakarta.annotation.Nullable; import lombok.NonNull; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/de/ph87/data/series/period/consumption/unit/Unit.java b/src/main/java/de/ph87/data/series/consumption/unit/Unit.java similarity index 97% rename from src/main/java/de/ph87/data/series/period/consumption/unit/Unit.java rename to src/main/java/de/ph87/data/series/consumption/unit/Unit.java index b0340b0..6c29898 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/unit/Unit.java +++ b/src/main/java/de/ph87/data/series/consumption/unit/Unit.java @@ -1,4 +1,4 @@ -package de.ph87.data.series.period.consumption.unit; +package de.ph87.data.series.consumption.unit; import lombok.NonNull; diff --git a/src/main/java/de/ph87/data/series/period/consumption/unit/UnitJpaConverter.java b/src/main/java/de/ph87/data/series/consumption/unit/UnitJpaConverter.java similarity index 91% rename from src/main/java/de/ph87/data/series/period/consumption/unit/UnitJpaConverter.java rename to src/main/java/de/ph87/data/series/consumption/unit/UnitJpaConverter.java index 78dbfc0..48a9d20 100644 --- a/src/main/java/de/ph87/data/series/period/consumption/unit/UnitJpaConverter.java +++ b/src/main/java/de/ph87/data/series/consumption/unit/UnitJpaConverter.java @@ -1,4 +1,4 @@ -package de.ph87.data.series.period.consumption.unit; +package de.ph87.data.series.consumption.unit; import jakarta.persistence.AttributeConverter; import jakarta.persistence.Converter; diff --git a/src/main/java/de/ph87/data/series/measure/MeasureEvent.java b/src/main/java/de/ph87/data/series/measure/MeasureEvent.java index a4aa0e4..3d1edad 100644 --- a/src/main/java/de/ph87/data/series/measure/MeasureEvent.java +++ b/src/main/java/de/ph87/data/series/measure/MeasureEvent.java @@ -15,9 +15,6 @@ public class MeasureEvent { @NonNull private final String name; - @NonNull - private final String periodName; - @NonNull private final ZonedDateTime date;