diff --git a/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java b/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java index 017a101fb1a5b35b018a775d36f24480104f586f..cb8ac5a0a2c97e3a6de47bcb7ce8ed8ec3df14a7 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java +++ b/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java @@ -42,53 +42,51 @@ public class AutomationServiceImpl implements AutomationService { @Override public Uni<Device> addDevice(String deviceId) { final var deserializedDeviceUni = contextService.getDevice(deviceId); - + deserializedDeviceUni .onFailure() .recoverWithNull() - .subscribe() - .with( - device -> { - final var id = deviceId; - - if (device == null) { - LOGGER.warnf("%s is null. Ignoring...", device); - return; - } - - if (device.isEnabled()) { - LOGGER.warnf("%s has already been enabled. Ignoring...", device); - return; - } - - // LOGGER.infof(MESSAGE, device); - - final var initialConfiguration = - deviceService.getInitialConfiguration(device.getDeviceId()); - - device.enableDevice(); - LOGGER.infof("Enabled device [%s]", id); - - initialConfiguration - .subscribe() - .with( - deviceConfig -> { - device.setDeviceConfiguration(deviceConfig); - final var configuredDeviceIdUni = deviceService.configureDevice(device); - - configuredDeviceIdUni - .subscribe() - .with( - configuredDeviceId -> - LOGGER.infof( - "Device [%s] has been successfully enabled and configured with %s.\n", - id, deviceConfig)); - }); - }); - + .invoke(device -> processDevice(device, deviceId)); + return deserializedDeviceUni; } - + + private void processDevice(Device device, String deviceId) { + if (device == null) { + LOGGER.warnf("%s is null. Ignoring...", device); + return; + } + + if (device.isEnabled()) { + LOGGER.warnf("%s has already been enabled. Ignoring...", device); + return; + } + + enableAndConfigureDevice(device, deviceId); + } + + private void enableAndConfigureDevice(Device device, String deviceId) { + final var initialConfiguration = deviceService.getInitialConfiguration(device.getDeviceId()); + + device.enableDevice(); + LOGGER.infof("Enabled device [%s]", deviceId); + + initialConfiguration + .subscribe() + .with(deviceConfig -> setDeviceConfiguration(device, deviceId, deviceConfig)); + } + + private void setDeviceConfiguration(Device device, String deviceId, DeviceConfig deviceConfig) { + device.setDeviceConfiguration(deviceConfig); + final var configuredDeviceIdUni = deviceService.configureDevice(device); + + configuredDeviceIdUni + .subscribe() + .with(configuredDeviceId -> LOGGER.infof( + "Device [%s] has been successfully enabled and configured with %s.\n", + deviceId, deviceConfig)); + } + @Override public Uni<Device> deleteDevice(String deviceId) { final var deserializedDeviceUni = contextService.getDevice(deviceId);