]> git.basschouten.com Git - openhab-addons.git/blob
80e55b0e4ae0a6cfc28ff6015d370cbacf58f645
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.plugwiseha.internal.api.model.dto;
14
15 import java.util.Map;
16 import java.util.Optional;
17
18 /**
19  * The {@link ActuatorFunctionalities} class is an object model class that
20  * mirrors the XML structure provided by the Plugwise Home Automation controller
21  * for the collection of actuator functionalities. (e.g. 'offset', 'relay', et
22  * cetera). It extends the {@link CustomCollection} class.
23  * 
24  * @author B. van Wetten - Initial contribution
25  */
26
27 public class ActuatorFunctionalities extends PlugwiseHACollection<ActuatorFunctionality> {
28
29     private static final String THERMOSTAT_FUNCTIONALITY = "thermostat";
30     private static final String OFFSETTEMPERATURE_FUNCTIONALITY = "temperature_offset";
31     private static final String RELAY_FUNCTIONALITY = "relay";
32
33     public Optional<Boolean> getRelayLockState() {
34         return this.getFunctionalityRelay().flatMap(ActuatorFunctionality::getRelayLockState)
35                 .map(Boolean::parseBoolean);
36     }
37
38     public Optional<Boolean> getPreHeatState() {
39         return this.getFunctionalityThermostat().flatMap(ActuatorFunctionality::getPreHeatState)
40                 .map(Boolean::parseBoolean);
41     }
42
43     public Optional<ActuatorFunctionality> getFunctionalityThermostat() {
44         return Optional.ofNullable(this.get(THERMOSTAT_FUNCTIONALITY));
45     }
46
47     public Optional<ActuatorFunctionality> getFunctionalityOffsetTemperature() {
48         return Optional.ofNullable(this.get(OFFSETTEMPERATURE_FUNCTIONALITY));
49     }
50
51     public Optional<ActuatorFunctionality> getFunctionalityRelay() {
52         return Optional.ofNullable(this.get(RELAY_FUNCTIONALITY));
53     }
54
55     @Override
56     public void merge(Map<String, ActuatorFunctionality> actuatorFunctionalities) {
57         if (actuatorFunctionalities != null) {
58             for (ActuatorFunctionality actuatorFunctionality : actuatorFunctionalities.values()) {
59                 String type = actuatorFunctionality.getType();
60                 ActuatorFunctionality originalActuatorFunctionality = this.get(type);
61
62                 Boolean originalIsOlder = false;
63                 if (originalActuatorFunctionality != null) {
64                     originalIsOlder = originalActuatorFunctionality.isOlderThan(actuatorFunctionality);
65                 }
66
67                 if (originalActuatorFunctionality == null || originalIsOlder) {
68                     this.put(type, actuatorFunctionality);
69                 }
70             }
71         }
72     }
73 }