From fdf64ebd175e43a06dda26fdfbe67a7417f22a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Thu, 21 Nov 2024 15:31:34 +0100 Subject: [PATCH] Device publish on create --- .../java/de/ph87/home/common/crud/CrudAction.java | 5 +++++ .../java/de/ph87/home/device/DeviceFilter.java | 4 ++-- .../java/de/ph87/home/device/DeviceService.java | 15 +++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 src/main/java/de/ph87/home/common/crud/CrudAction.java diff --git a/src/main/java/de/ph87/home/common/crud/CrudAction.java b/src/main/java/de/ph87/home/common/crud/CrudAction.java new file mode 100644 index 0000000..1e8cd47 --- /dev/null +++ b/src/main/java/de/ph87/home/common/crud/CrudAction.java @@ -0,0 +1,5 @@ +package de.ph87.home.common.crud; + +public enum CrudAction { + CREATED, UPDATED, DELETED +} diff --git a/src/main/java/de/ph87/home/device/DeviceFilter.java b/src/main/java/de/ph87/home/device/DeviceFilter.java index 9018568..36ff93b 100644 --- a/src/main/java/de/ph87/home/device/DeviceFilter.java +++ b/src/main/java/de/ph87/home/device/DeviceFilter.java @@ -29,10 +29,10 @@ public class DeviceFilter extends AbstractSearchFilter { return false; } final Boolean value = dto.getStateValue(); - if (stateTrue != null && (dto.getStateProperty() == null || stateTrue != value)) { + if (stateTrue != null && (value == null || stateTrue != value)) { return false; } - if (stateFalse != null && (dto.getStateProperty() == null || stateFalse == value)) { + if (stateFalse != null && (value == null || stateFalse == value)) { return false; } return search(dto.getName()); diff --git a/src/main/java/de/ph87/home/device/DeviceService.java b/src/main/java/de/ph87/home/device/DeviceService.java index a66f36b..aef9caa 100644 --- a/src/main/java/de/ph87/home/device/DeviceService.java +++ b/src/main/java/de/ph87/home/device/DeviceService.java @@ -1,5 +1,6 @@ package de.ph87.home.device; +import de.ph87.home.common.crud.CrudAction; import de.ph87.home.common.crud.EntityNotFound; import de.ph87.home.property.*; import jakarta.annotation.Nullable; @@ -28,7 +29,7 @@ public class DeviceService { @NonNull public DeviceDto create(@NonNull final String name, @NonNull final String slug, @NonNull final String stateProperty) { - return toDto(deviceRepository.save(new Device(name, slug, stateProperty))); + return publish(deviceRepository.save(new Device(name, slug, stateProperty)), CrudAction.UPDATED); } public void setState(@NonNull final String uuidOrSlug, final boolean state) throws PropertyNotFound, PropertyNotWritable, PropertyTypeMismatch { @@ -75,13 +76,15 @@ public class DeviceService { @EventListener(PropertyDto.class) public void onPropertyChange(@NonNull final PropertyDto dto) { - deviceRepository.findAllByStatePropertyId(dto.getId()).forEach(this::publish); + deviceRepository.findAllByStatePropertyId(dto.getId()).forEach(device -> publish(device, CrudAction.CREATED)); } - private void publish(@NonNull final Device device) { - final DeviceDto deviceDto = toDto(device); - log.info("Device updated: {}", deviceDto); - applicationEventPublisher.publishEvent(deviceDto); + @NonNull + private DeviceDto publish(@NonNull final Device device, @NonNull final CrudAction action) { + final DeviceDto dto = toDto(device); + log.info("Device {}: {}", action, dto); + applicationEventPublisher.publishEvent(dto); + return dto; } @NonNull