2 * Copyright (c) 2010-2022 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.ihc.internal.ws.datatypes;
15 import java.io.IOException;
17 import javax.xml.xpath.XPathExpressionException;
19 import org.openhab.binding.ihc.internal.ws.exeptions.IhcExecption;
22 * Class for WSTimeManagerSettings complex type.
24 * @author Pauli Anttila - Initial contribution
26 public class WSTimeManagerSettings {
28 private boolean synchroniseTimeAgainstServer;
29 private boolean useDST;
30 private int gmtOffsetInHours;
31 private String serverName;
32 private int syncIntervalInHours;
33 private WSDate timeAndDateInUTC;
35 public WSTimeManagerSettings() {
38 public WSTimeManagerSettings(boolean synchroniseTimeAgainstServer, boolean useDST, int gmtOffsetInHours,
39 String serverName, int syncIntervalInHours, WSDate timeAndDateInUTC) {
40 this.synchroniseTimeAgainstServer = synchroniseTimeAgainstServer;
42 this.gmtOffsetInHours = gmtOffsetInHours;
43 this.serverName = serverName;
44 this.syncIntervalInHours = syncIntervalInHours;
45 this.timeAndDateInUTC = timeAndDateInUTC;
48 public boolean getSynchroniseTimeAgainstServer() {
49 return synchroniseTimeAgainstServer;
52 public void setSynchroniseTimeAgainstServer(boolean synchroniseTimeAgainstServer) {
53 this.synchroniseTimeAgainstServer = synchroniseTimeAgainstServer;
56 public boolean getUseDST() {
60 public void setUseDST(boolean useDST) {
64 public int getGmtOffsetInHours() {
65 return gmtOffsetInHours;
68 public void setGmtOffsetInHours(int gmtOffsetInHours) {
69 this.gmtOffsetInHours = gmtOffsetInHours;
72 public String getServerName() {
76 public void setServerName(String serverName) {
77 this.serverName = serverName;
80 public int getSyncIntervalInHours() {
81 return syncIntervalInHours;
84 public void setSyncIntervalInHours(int syncIntervalInHours) {
85 this.syncIntervalInHours = syncIntervalInHours;
88 public WSDate getTimeAndDateInUTC() {
89 return timeAndDateInUTC;
92 public void setTimeAndDateInUTC(WSDate timeAndDateInUTC) {
93 this.timeAndDateInUTC = timeAndDateInUTC;
96 public WSTimeManagerSettings parseXMLData(String data) throws IhcExecption {
98 String value = XPathUtils.parseXMLValue(data,
99 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:synchroniseTimeAgainstServer");
100 setSynchroniseTimeAgainstServer(Boolean.parseBoolean(value));
102 value = XPathUtils.parseXMLValue(data, "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:useDST");
103 setUseDST(Boolean.parseBoolean(value));
105 value = XPathUtils.parseXMLValue(data,
106 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:gmtOffsetInHours");
107 setGmtOffsetInHours(Integer.parseInt(value));
109 value = XPathUtils.parseXMLValue(data, "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:serverName");
110 setServerName(value);
112 value = XPathUtils.parseXMLValue(data,
113 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:syncIntervalInHours");
114 setSyncIntervalInHours(Integer.parseInt(value));
116 WSDate timeAndDateInUTC = new WSDate();
118 value = XPathUtils.parseXMLValue(data,
119 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:day");
120 timeAndDateInUTC.setDay(Integer.parseInt(value));
122 value = XPathUtils.parseXMLValue(data,
123 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:monthWithJanuaryAsOne");
124 timeAndDateInUTC.setMonthWithJanuaryAsOne(Integer.parseInt(value));
126 value = XPathUtils.parseXMLValue(data,
127 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:hours");
128 timeAndDateInUTC.setHours(Integer.parseInt(value));
130 value = XPathUtils.parseXMLValue(data,
131 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:minutes");
132 timeAndDateInUTC.setMinutes(Integer.parseInt(value));
134 value = XPathUtils.parseXMLValue(data,
135 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:seconds");
136 timeAndDateInUTC.setSeconds(Integer.parseInt(value));
138 value = XPathUtils.parseXMLValue(data,
139 "/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:getSettings1/ns1:timeAndDateInUTC/ns1:year");
140 timeAndDateInUTC.setYear(Integer.parseInt(value));
142 setTimeAndDateInUTC(timeAndDateInUTC);
145 } catch (IOException | XPathExpressionException | NumberFormatException e) {
146 throw new IhcExecption("Error occured during XML data parsing", e);
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());