]> git.basschouten.com Git - openhab-addons.git/blob
a1a46f18aed7157750b45c3a3a6088906929b224
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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.nest.internal.wwn.dto;
14
15 import java.util.Date;
16
17 import com.google.gson.annotations.SerializedName;
18
19 /**
20  * Data for the WWN smoke detector.
21  *
22  * @author David Bennett - Initial contribution
23  * @author Wouter Born - Add equals and hashCode methods
24  */
25 public class WWNSmokeDetector extends BaseWWNDevice {
26
27     private BatteryHealth batteryHealth;
28     private AlarmState coAlarmState;
29     private Date lastManualTestTime;
30     private AlarmState smokeAlarmState;
31     private Boolean isManualTestActive;
32     private UiColorState uiColorState;
33
34     public UiColorState getUiColorState() {
35         return uiColorState;
36     }
37
38     public BatteryHealth getBatteryHealth() {
39         return batteryHealth;
40     }
41
42     public AlarmState getCoAlarmState() {
43         return coAlarmState;
44     }
45
46     public Date getLastManualTestTime() {
47         return lastManualTestTime;
48     }
49
50     public AlarmState getSmokeAlarmState() {
51         return smokeAlarmState;
52     }
53
54     public Boolean isManualTestActive() {
55         return isManualTestActive;
56     }
57
58     public enum BatteryHealth {
59         @SerializedName("ok")
60         OK,
61         @SerializedName("replace")
62         REPLACE
63     }
64
65     public enum AlarmState {
66         @SerializedName("ok")
67         OK,
68         @SerializedName("emergency")
69         EMERGENCY,
70         @SerializedName("warning")
71         WARNING
72     }
73
74     public enum UiColorState {
75         @SerializedName("gray")
76         GRAY,
77         @SerializedName("green")
78         GREEN,
79         @SerializedName("yellow")
80         YELLOW,
81         @SerializedName("red")
82         RED
83     }
84
85     @Override
86     public boolean equals(Object obj) {
87         if (this == obj) {
88             return true;
89         }
90         if (obj == null || !super.equals(obj)) {
91             return false;
92         }
93         if (getClass() != obj.getClass()) {
94             return false;
95         }
96         WWNSmokeDetector other = (WWNSmokeDetector) obj;
97         if (batteryHealth != other.batteryHealth) {
98             return false;
99         }
100         if (coAlarmState != other.coAlarmState) {
101             return false;
102         }
103         if (isManualTestActive == null) {
104             if (other.isManualTestActive != null) {
105                 return false;
106             }
107         } else if (!isManualTestActive.equals(other.isManualTestActive)) {
108             return false;
109         }
110         if (lastManualTestTime == null) {
111             if (other.lastManualTestTime != null) {
112                 return false;
113             }
114         } else if (!lastManualTestTime.equals(other.lastManualTestTime)) {
115             return false;
116         }
117         if (smokeAlarmState != other.smokeAlarmState) {
118             return false;
119         }
120         return uiColorState == other.uiColorState;
121     }
122
123     @Override
124     public int hashCode() {
125         final int prime = 31;
126         int result = super.hashCode();
127         result = prime * result + ((batteryHealth == null) ? 0 : batteryHealth.hashCode());
128         result = prime * result + ((coAlarmState == null) ? 0 : coAlarmState.hashCode());
129         result = prime * result + ((isManualTestActive == null) ? 0 : isManualTestActive.hashCode());
130         result = prime * result + ((lastManualTestTime == null) ? 0 : lastManualTestTime.hashCode());
131         result = prime * result + ((smokeAlarmState == null) ? 0 : smokeAlarmState.hashCode());
132         result = prime * result + ((uiColorState == null) ? 0 : uiColorState.hashCode());
133         return result;
134     }
135
136     @Override
137     public String toString() {
138         StringBuilder builder = new StringBuilder();
139         builder.append("SmokeDetector [batteryHealth=").append(batteryHealth).append(", coAlarmState=")
140                 .append(coAlarmState).append(", lastManualTestTime=").append(lastManualTestTime)
141                 .append(", smokeAlarmState=").append(smokeAlarmState).append(", isManualTestActive=")
142                 .append(isManualTestActive).append(", uiColorState=").append(uiColorState).append(", getId()=")
143                 .append(getId()).append(", getName()=").append(getName()).append(", getDeviceId()=")
144                 .append(getDeviceId()).append(", getLastConnection()=").append(getLastConnection())
145                 .append(", isOnline()=").append(isOnline()).append(", getNameLong()=").append(getNameLong())
146                 .append(", getSoftwareVersion()=").append(getSoftwareVersion()).append(", getStructureId()=")
147                 .append(getStructureId()).append(", getWhereId()=").append(getWhereId()).append("]");
148         return builder.toString();
149     }
150 }