]> git.basschouten.com Git - openhab-addons.git/blob
8962cde0193a9e85795181200a63a77c6ccc5ff6
[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.ihc.internal.ws.datatypes;
14
15 import java.io.IOException;
16
17 import javax.xml.xpath.XPathExpressionException;
18
19 import org.openhab.binding.ihc.internal.ws.exeptions.IhcExecption;
20
21 /**
22  * Class for WSTimeManagerSettings complex type.
23  *
24  * @author Pauli Anttila - Initial contribution
25  */
26 public class WSTimeManagerSettings {
27
28     private boolean synchroniseTimeAgainstServer;
29     private boolean useDST;
30     private int gmtOffsetInHours;
31     private String serverName;
32     private int syncIntervalInHours;
33     private WSDate timeAndDateInUTC;
34
35     public WSTimeManagerSettings() {
36     }
37
38     public WSTimeManagerSettings(boolean synchroniseTimeAgainstServer, boolean useDST, int gmtOffsetInHours,
39             String serverName, int syncIntervalInHours, WSDate timeAndDateInUTC) {
40         this.synchroniseTimeAgainstServer = synchroniseTimeAgainstServer;
41         this.useDST = useDST;
42         this.gmtOffsetInHours = gmtOffsetInHours;
43         this.serverName = serverName;
44         this.syncIntervalInHours = syncIntervalInHours;
45         this.timeAndDateInUTC = timeAndDateInUTC;
46     }
47
48     public boolean getSynchroniseTimeAgainstServer() {
49         return synchroniseTimeAgainstServer;
50     }
51
52     public void setSynchroniseTimeAgainstServer(boolean synchroniseTimeAgainstServer) {
53         this.synchroniseTimeAgainstServer = synchroniseTimeAgainstServer;
54     }
55
56     public boolean getUseDST() {
57         return useDST;
58     }
59
60     public void setUseDST(boolean useDST) {
61         this.useDST = useDST;
62     }
63
64     public int getGmtOffsetInHours() {
65         return gmtOffsetInHours;
66     }
67
68     public void setGmtOffsetInHours(int gmtOffsetInHours) {
69         this.gmtOffsetInHours = gmtOffsetInHours;
70     }
71
72     public String getServerName() {
73         return serverName;
74     }
75
76     public void setServerName(String serverName) {
77         this.serverName = serverName;
78     }
79
80     public int getSyncIntervalInHours() {
81         return syncIntervalInHours;
82     }
83
84     public void setSyncIntervalInHours(int syncIntervalInHours) {
85         this.syncIntervalInHours = syncIntervalInHours;
86     }
87
88     public WSDate getTimeAndDateInUTC() {
89         return timeAndDateInUTC;
90     }
91
92     public void setTimeAndDateInUTC(WSDate timeAndDateInUTC) {
93         this.timeAndDateInUTC = timeAndDateInUTC;
94     }
95
96     public WSTimeManagerSettings parseXMLData(String data) throws IhcExecption {
97         try {
98             String value = XPathUtils.parseXMLValue(data,
99                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:synchroniseTimeAgainstServer");
100             setSynchroniseTimeAgainstServer(Boolean.parseBoolean(value));
101
102             value = XPathUtils.parseXMLValue(data, "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:useDST");
103             setUseDST(Boolean.parseBoolean(value));
104
105             value = XPathUtils.parseXMLValue(data,
106                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:gmtOffsetInHours");
107             setGmtOffsetInHours(Integer.parseInt(value));
108
109             value = XPathUtils.parseXMLValue(data, "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:serverName");
110             setServerName(value);
111
112             value = XPathUtils.parseXMLValue(data,
113                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:syncIntervalInHours");
114             setSyncIntervalInHours(Integer.parseInt(value));
115
116             WSDate timeAndDateInUTC = new WSDate();
117
118             value = XPathUtils.parseXMLValue(data,
119                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:day");
120             timeAndDateInUTC.setDay(Integer.parseInt(value));
121
122             value = XPathUtils.parseXMLValue(data,
123                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:monthWithJanuaryAsOne");
124             timeAndDateInUTC.setMonthWithJanuaryAsOne(Integer.parseInt(value));
125
126             value = XPathUtils.parseXMLValue(data,
127                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:hours");
128             timeAndDateInUTC.setHours(Integer.parseInt(value));
129
130             value = XPathUtils.parseXMLValue(data,
131                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:minutes");
132             timeAndDateInUTC.setMinutes(Integer.parseInt(value));
133
134             value = XPathUtils.parseXMLValue(data,
135                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:seconds");
136             timeAndDateInUTC.setSeconds(Integer.parseInt(value));
137
138             value = XPathUtils.parseXMLValue(data,
139                     "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:year");
140             timeAndDateInUTC.setYear(Integer.parseInt(value));
141
142             setTimeAndDateInUTC(timeAndDateInUTC);
143
144             return this;
145         } catch (IOException | XPathExpressionException | NumberFormatException e) {
146             throw new IhcExecption("Error occured during XML data parsing", e);
147         }
148     }
149
150     @Override
151     public String toString() {
152         return String.format(
153                 "[ synchroniseTimeAgainstServer=%b, useDST=%b, gmtOffsetInHours=%d, serverName=%s, syncIntervalInHours=%d, timeAndDateInUTC=%s ]",
154                 synchroniseTimeAgainstServer, useDST, gmtOffsetInHours, serverName, syncIntervalInHours,
155                 timeAndDateInUTC.getAsLocalDateTime());
156     }
157 }