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.zoneminder.internal.handler;
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16 import org.eclipse.jdt.annotation.Nullable;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
21 * The {@link Monitor} represents the attributes of a Zoneminder monitor
22 * that are relevant to this binding.
24 * @author Mark Hilbush - Initial contribution
27 public class Monitor {
29 private final Logger logger = LoggerFactory.getLogger(Monitor.class);
33 private String function;
34 private Boolean enabled;
35 private String status;
36 private Boolean alarm = Boolean.FALSE;
37 private MonitorState state = MonitorState.UNKNOWN;
38 private Integer hourEvents = 0;
39 private Integer dayEvents = 0;
40 private Integer weekEvents = 0;
41 private Integer monthEvents = 0;
42 private Integer totalEvents = 0;
43 private String imageUrl = "";
44 private String videoUrl = "";
45 private @Nullable Event lastEvent = null;
47 public Monitor(String monitorId, String name, String function, String enabled, String status) {
50 this.function = function;
51 this.enabled = "1".equals(enabled);
55 public String getId() {
59 public String setId(String id) {
63 public String getName() {
67 public void setName(String name) {
71 public String getFunction() {
75 public void setFunction(String function) {
76 this.function = function;
79 public boolean isEnabled() {
83 public void setEnabled(boolean enabled) {
84 this.enabled = enabled;
87 public String getStatus() {
91 public void setStatus(String status) {
95 public Boolean isAlarm() {
99 public MonitorState getState() {
103 public void setState(MonitorState state) {
104 this.alarm = (state != MonitorState.IDLE && state != MonitorState.UNKNOWN);
108 public Integer getHourEvents() {
112 public void setHourEvents(@Nullable String hourEvents) {
113 if (hourEvents != null) {
115 this.hourEvents = Integer.parseInt(hourEvents);
116 } catch (NumberFormatException e) {
117 logger.debug("Monitor object contains invalid hourEvents: {}", hourEvents);
122 public Integer getDayEvents() {
126 public void setDayEvents(@Nullable String dayEvents) {
127 if (dayEvents != null) {
129 this.dayEvents = Integer.parseInt(dayEvents);
130 } catch (NumberFormatException e) {
131 logger.debug("Monitor object contains invalid dayEvents: {}", dayEvents);
136 public Integer getWeekEvents() {
140 public void setWeekEvents(@Nullable String weekEvents) {
141 if (weekEvents != null) {
143 this.weekEvents = Integer.parseInt(weekEvents);
144 } catch (NumberFormatException e) {
145 logger.debug("Monitor object contains invalid totalEvents: {}", weekEvents);
150 public Integer getMonthEvents() {
154 public void setMonthEvents(@Nullable String monthEvents) {
155 if (monthEvents != null) {
157 this.monthEvents = Integer.parseInt(monthEvents);
158 } catch (NumberFormatException e) {
159 logger.debug("Monitor object contains invalid monthEvents: {}", monthEvents);
164 public Integer getTotalEvents() {
168 public void setTotalEvents(@Nullable String totalEvents) {
169 if (totalEvents != null) {
171 this.totalEvents = Integer.parseInt(totalEvents);
172 } catch (NumberFormatException e) {
173 logger.debug("Monitor object contains invalid totalEvents: {}", totalEvents);
178 public String getImageUrl() {
182 public void setImageUrl(String imageUrl) {
183 this.imageUrl = imageUrl;
186 public String getVideoUrl() {
190 public void setVideoUrl(String videoUrl) {
191 this.videoUrl = videoUrl;
194 public @Nullable Event getMostRecentCompletedEvent() {
198 public void setLastEvent(@Nullable Event lastEvent) {
199 this.lastEvent = lastEvent;
203 public String toString() {
204 StringBuffer sb = new StringBuffer();
205 sb.append("id=").append(id);
206 sb.append(", name=").append(name);
207 sb.append(", function=").append(function);
208 sb.append(", enabled=").append(enabled);
209 sb.append(", status=").append(status);
210 sb.append(", alarm=").append(alarm);
211 sb.append(", state=").append(state);
212 sb.append(", events=(").append(hourEvents);
213 sb.append(",").append(dayEvents);
214 sb.append(",").append(weekEvents);
215 sb.append(",").append(monthEvents);
216 sb.append(",").append(totalEvents);
218 return sb.toString();