]> git.basschouten.com Git - openhab-addons.git/blob
46c36f617239873c63fe3d68fcfdde68bf9fe59d
[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.helios.internal.ws.soap;
14
15 import javax.xml.bind.annotation.XmlAccessType;
16 import javax.xml.bind.annotation.XmlAccessorType;
17 import javax.xml.bind.annotation.XmlElement;
18 import javax.xml.bind.annotation.XmlRootElement;
19 import javax.xml.bind.annotation.XmlType;
20
21 import org.openhab.binding.helios.internal.handler.HeliosHandler27;
22
23 /**
24  * Helios SOAP Protocol Message
25  *
26  * @author Karel Goderis - Initial contribution
27  */
28 @XmlAccessorType(XmlAccessType.FIELD)
29 @XmlType(name = "HeliosEvent", namespace = HeliosHandler27.HELIOS_URI, propOrder = { "timestamp", "eventName", "data" })
30 @XmlRootElement(name = "Msg")
31 public class SOAPEvent {
32
33     @XmlElement(name = "Timestamp", namespace = HeliosHandler27.HELIOS_URI)
34     protected String timestamp;
35
36     @XmlElement(name = "EventName", namespace = HeliosHandler27.HELIOS_URI)
37     protected String eventName;
38
39     @XmlElement(name = "Data", namespace = HeliosHandler27.HELIOS_URI)
40     protected SOAPDataField data;
41
42     public SOAPDataField getData() {
43         return data;
44     }
45
46     public void setData(SOAPDataField data) {
47         this.data = data;
48     }
49
50     public String getTimestamp() {
51         return timestamp;
52     }
53
54     public void setTimestamp(String timestamp) {
55         this.timestamp = timestamp;
56     }
57
58     public String getEventName() {
59         return eventName;
60     }
61
62     public void setEventName(String eventName) {
63         this.eventName = eventName;
64     }
65
66     @Override
67     public boolean equals(Object obj) {
68         if (!(obj instanceof SOAPEvent)) {
69             return false;
70         }
71         if (obj == this) {
72             return true;
73         }
74
75         SOAPEvent event = (SOAPEvent) obj;
76
77         if (event.getEventName().equals(eventName) && event.getTimestamp().equals(timestamp)) {
78             Object eventData = event.getData();
79
80             if (data instanceof SOAPKeyPressed) {
81                 return ((SOAPKeyPressed) data).getKeyCode().equals(((SOAPKeyPressed) eventData).getKeyCode());
82             }
83
84             if (data instanceof SOAPCallStateChanged) {
85                 return ((SOAPCallStateChanged) data).getDirection()
86                         .equals(((SOAPCallStateChanged) eventData).getDirection())
87                         && ((SOAPCallStateChanged) data).getState()
88                                 .equals(((SOAPCallStateChanged) eventData).getState());
89             }
90
91             if (data instanceof SOAPCardEntered) {
92                 return ((SOAPCardEntered) data).getCard().equals(((SOAPCardEntered) eventData).getCard())
93                         && ((SOAPCardEntered) data).getValid().equals(((SOAPCardEntered) eventData).getValid());
94             }
95
96             if (data instanceof SOAPCodeEntered) {
97                 return ((SOAPCodeEntered) data).getCode().equals(((SOAPCodeEntered) eventData).getCode())
98                         && ((SOAPCodeEntered) data).getValid().equals(((SOAPCodeEntered) eventData).getValid());
99             }
100
101             if (data instanceof SOAPDeviceState) {
102                 return ((SOAPDeviceState) data).getState().equals(((SOAPDeviceState) eventData).getState());
103             }
104         }
105
106         return false;
107     }
108 }