]> git.basschouten.com Git - openhab-addons.git/commitdiff
[homeconnect] Add missing channel update handler configuration (#10785)
authorlolodomo <lg.hc@free.fr>
Sat, 5 Jun 2021 17:33:30 +0000 (19:33 +0200)
committerGitHub <noreply@github.com>
Sat, 5 Jun 2021 17:33:30 +0000 (19:33 +0200)
* [homeconnect] Add missing channel update handler configuration

Related to dryer, washer and washer/dryer appliances

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
* 2 new methods to factorize duplicated code

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
* Apply spotless

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/AbstractHomeConnectThingHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectDryerHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectOvenHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectWasherDryerHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectWasherHandler.java

index f042a56d020d677797e704062401e26d08c45dbf..e6e370a273768a0e77712d44cd3a2c1f74f3717d 100644 (file)
@@ -1073,6 +1073,25 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
         }));
     }
 
+    protected ChannelUpdateHandler getAndUpdateSelectedProgramStateUpdateHandler() {
+        return (channelUID, cache) -> {
+            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
+            if (channel.isPresent()) {
+                defaultSelectedProgramStateUpdateHandler().handle(channel.get().getUID(), cache);
+            }
+        };
+    }
+
+    protected ChannelUpdateHandler getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler() {
+        return (channelUID, cache) -> {
+            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
+            if (channel.isPresent()) {
+                updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
+                        .handle(channel.get().getUID(), cache);
+            }
+        };
+    }
+
     protected ChannelUpdateHandler defaultActiveProgramStateUpdateHandler() {
         return (channelUID, cache) -> updateState(channelUID, cache.putIfAbsentAndGet(channelUID, () -> {
             Optional<HomeConnectApiClient> apiClient = getApiClient();
index cab3ad3e3188c9e1a7555535e001f27ff79317ba..06835e5be6384b716365c82baf59ce2956ec433a 100644 (file)
@@ -60,6 +60,10 @@ public class HomeConnectDryerHandler extends AbstractHomeConnectThingHandler {
         handlers.put(CHANNEL_ACTIVE_PROGRAM_STATE, defaultActiveProgramStateUpdateHandler());
         handlers.put(CHANNEL_SELECTED_PROGRAM_STATE,
                 updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
+
+        // register dryer specific handlers
+        handlers.put(CHANNEL_DRYER_DRYING_TARGET,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
     }
 
     @Override
index ec69c146e34db01a7f0dcdc4036d4d92d36ab876..d7e4ce602a65e75ab59b47b41eca45238ad1e219 100644 (file)
@@ -36,7 +36,6 @@ import org.openhab.binding.homeconnect.internal.client.model.Data;
 import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.library.types.QuantityType;
-import org.openhab.core.thing.Channel;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.types.Command;
@@ -89,18 +88,8 @@ public class HomeConnectOvenHandler extends AbstractHomeConnectThingHandler {
                     }
                     return UnDefType.UNDEF;
                 })));
-        handlers.put(CHANNEL_SETPOINT_TEMPERATURE, (channelUID, cache) -> {
-            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
-            if (channel.isPresent()) {
-                defaultSelectedProgramStateUpdateHandler().handle(channel.get().getUID(), cache);
-            }
-        });
-        handlers.put(CHANNEL_DURATION, (channelUID, cache) -> {
-            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
-            if (channel.isPresent()) {
-                defaultSelectedProgramStateUpdateHandler().handle(channel.get().getUID(), cache);
-            }
-        });
+        handlers.put(CHANNEL_SETPOINT_TEMPERATURE, getAndUpdateSelectedProgramStateUpdateHandler());
+        handlers.put(CHANNEL_DURATION, getAndUpdateSelectedProgramStateUpdateHandler());
     }
 
     @Override
index 9d1d97d2ac2f83002cedb2877d90ee4862582cd4..bdb1a9e5ec97950ecc430c4ff85e8f4b30842baf 100644 (file)
@@ -17,7 +17,6 @@ import static org.openhab.binding.homeconnect.internal.HomeConnectBindingConstan
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
@@ -26,7 +25,6 @@ import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationEx
 import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
 import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
 import org.openhab.core.library.types.StringType;
-import org.openhab.core.thing.Channel;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.types.Command;
@@ -65,20 +63,13 @@ public class HomeConnectWasherDryerHandler extends AbstractHomeConnectThingHandl
                 updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
 
         // register washer specific handlers
-        handlers.put(CHANNEL_WASHER_SPIN_SPEED, (channelUID, cache) -> {
-            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
-            if (channel.isPresent()) {
-                updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
-                        .handle(channel.get().getUID(), cache);
-            }
-        });
-        handlers.put(CHANNEL_WASHER_TEMPERATURE, (channelUID, cache) -> {
-            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
-            if (channel.isPresent()) {
-                updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
-                        .handle(channel.get().getUID(), cache);
-            }
-        });
+        handlers.put(CHANNEL_WASHER_SPIN_SPEED,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
+        handlers.put(CHANNEL_WASHER_TEMPERATURE,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
+        // register dryer specific handlers
+        handlers.put(CHANNEL_DRYER_DRYING_TARGET,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
     }
 
     @Override
@@ -103,6 +94,7 @@ public class HomeConnectWasherDryerHandler extends AbstractHomeConnectThingHandl
         handlers.put(EVENT_WASHER_SPIN_SPEED,
                 event -> getThingChannel(CHANNEL_WASHER_SPIN_SPEED).ifPresent(channel -> updateState(channel.getUID(),
                         event.getValue() == null ? UnDefType.UNDEF : new StringType(event.getValue()))));
+        // register dryer specific event handlers
         handlers.put(EVENT_DRYER_DRYING_TARGET,
                 event -> getThingChannel(CHANNEL_DRYER_DRYING_TARGET).ifPresent(channel -> updateState(channel.getUID(),
                         event.getValue() == null ? UnDefType.UNDEF : new StringType(event.getValue()))));
index 964d9bcad75f82863dc2618a5a41f68d890ba1e0..beda8976f83f1248df28daab37fdb83a5564b934 100644 (file)
@@ -17,7 +17,6 @@ import static org.openhab.binding.homeconnect.internal.HomeConnectBindingConstan
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
@@ -26,7 +25,6 @@ import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationEx
 import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
 import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
 import org.openhab.core.library.types.StringType;
-import org.openhab.core.thing.Channel;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.types.Command;
@@ -65,20 +63,14 @@ public class HomeConnectWasherHandler extends AbstractHomeConnectThingHandler {
                 updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
 
         // register washer specific handlers
-        handlers.put(CHANNEL_WASHER_SPIN_SPEED, (channelUID, cache) -> {
-            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
-            if (channel.isPresent()) {
-                updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
-                        .handle(channel.get().getUID(), cache);
-            }
-        });
-        handlers.put(CHANNEL_WASHER_TEMPERATURE, (channelUID, cache) -> {
-            Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
-            if (channel.isPresent()) {
-                updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
-                        .handle(channel.get().getUID(), cache);
-            }
-        });
+        handlers.put(CHANNEL_WASHER_SPIN_SPEED,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
+        handlers.put(CHANNEL_WASHER_TEMPERATURE,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
+        handlers.put(CHANNEL_WASHER_IDOS1,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
+        handlers.put(CHANNEL_WASHER_IDOS2,
+                getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
     }
 
     @Override