2 * Copyright (c) 2010-2020 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.data;
15 import java.util.Date;
17 import com.google.gson.annotations.SerializedName;
20 * Data for the Nest smoke detector.
22 * @author David Bennett - Initial contribution
23 * @author Wouter Born - Add equals and hashCode methods
25 public class SmokeDetector extends BaseNestDevice {
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 (!super.equals(obj)) {
93 if (getClass() != obj.getClass()) {
96 SmokeDetector other = (SmokeDetector) 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 if (uiColorState != other.uiColorState) {
127 public int hashCode() {
128 final int prime = 31;
129 int result = super.hashCode();
130 result = prime * result + ((batteryHealth == null) ? 0 : batteryHealth.hashCode());
131 result = prime * result + ((coAlarmState == null) ? 0 : coAlarmState.hashCode());
132 result = prime * result + ((isManualTestActive == null) ? 0 : isManualTestActive.hashCode());
133 result = prime * result + ((lastManualTestTime == null) ? 0 : lastManualTestTime.hashCode());
134 result = prime * result + ((smokeAlarmState == null) ? 0 : smokeAlarmState.hashCode());
135 result = prime * result + ((uiColorState == null) ? 0 : uiColorState.hashCode());
140 public String toString() {
141 StringBuilder builder = new StringBuilder();
142 builder.append("SmokeDetector [batteryHealth=").append(batteryHealth).append(", coAlarmState=")
143 .append(coAlarmState).append(", lastManualTestTime=").append(lastManualTestTime)
144 .append(", smokeAlarmState=").append(smokeAlarmState).append(", isManualTestActive=")
145 .append(isManualTestActive).append(", uiColorState=").append(uiColorState).append(", getId()=")
146 .append(getId()).append(", getName()=").append(getName()).append(", getDeviceId()=")
147 .append(getDeviceId()).append(", getLastConnection()=").append(getLastConnection())
148 .append(", isOnline()=").append(isOnline()).append(", getNameLong()=").append(getNameLong())
149 .append(", getSoftwareVersion()=").append(getSoftwareVersion()).append(", getStructureId()=")
150 .append(getStructureId()).append(", getWhereId()=").append(getWhereId()).append("]");
151 return builder.toString();