2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.nest.internal.wwn.dto;
15 import java.util.Date;
17 import com.google.gson.annotations.SerializedName;
20 * Data for the WWN smoke detector.
22 * @author David Bennett - Initial contribution
23 * @author Wouter Born - Add equals and hashCode methods
25 public class WWNSmokeDetector extends BaseWWNDevice {
27 private BatteryHealth batteryHealth;
28 private AlarmState coAlarmState;
29 private Date lastManualTestTime;
30 private AlarmState smokeAlarmState;
31 private Boolean isManualTestActive;
32 private UiColorState uiColorState;
34 public UiColorState getUiColorState() {
38 public BatteryHealth getBatteryHealth() {
42 public AlarmState getCoAlarmState() {
46 public Date getLastManualTestTime() {
47 return lastManualTestTime;
50 public AlarmState getSmokeAlarmState() {
51 return smokeAlarmState;
54 public Boolean isManualTestActive() {
55 return isManualTestActive;
58 public enum BatteryHealth {
61 @SerializedName("replace")
65 public enum AlarmState {
68 @SerializedName("emergency")
70 @SerializedName("warning")
74 public enum UiColorState {
75 @SerializedName("gray")
77 @SerializedName("green")
79 @SerializedName("yellow")
81 @SerializedName("red")
86 public boolean equals(Object obj) {
90 if (obj == null || !super.equals(obj)) {
93 if (getClass() != obj.getClass()) {
96 WWNSmokeDetector other = (WWNSmokeDetector) obj;
97 if (batteryHealth != other.batteryHealth) {
100 if (coAlarmState != other.coAlarmState) {
103 if (isManualTestActive == null) {
104 if (other.isManualTestActive != null) {
107 } else if (!isManualTestActive.equals(other.isManualTestActive)) {
110 if (lastManualTestTime == null) {
111 if (other.lastManualTestTime != null) {
114 } else if (!lastManualTestTime.equals(other.lastManualTestTime)) {
117 if (smokeAlarmState != other.smokeAlarmState) {
120 return uiColorState == other.uiColorState;
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());
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();