package org.openhab.domain.rule;
import org.openhab.domain.model.OpenHABWidget;
import org.openhab.domain.model.OpenHABWidgetDataSource;
import org.openhab.domain.util.IColorParser;
import org.openhab.domain.util.ILogger;
import org.openhab.domain.IDocumentFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
/**
* Created by Tony Alpskog in 2014.
*/
public class HttpDataSetup {
private static final String TEST_DATA = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><sitemap><name>demo</name><label>Main Menu</label><link>https://demo.openhab.org:8443/rest/sitemaps/demo</link><homepage><id>demo</id><title>Main Menu</title><link>https://demo.openhab.org:8443/rest/sitemaps/demo/demo</link><leaf>false</leaf><widget><widgetId>demo_0</widgetId><type>Frame</type><label></label><icon>frame</icon><widget><widgetId>demo_0_0</widgetId><type>Group</type><label>First Floor</label><icon>firstfloor</icon><item><type>GroupItem</type><name>gFF</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/gFF</link></item><linkedPage><id>0000</id><title>First Floor</title><icon>firstfloor</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0000</link><leaf>false</leaf><widget><widgetId>0000_0</widgetId><type>Group</type><label>Bathroom</label><icon>bath</icon><item><type>GroupItem</type><name>FF_Bath</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/FF_Bath</link></item><linkedPage><id>FF_Bath</id><title>Bathroom</title><icon>bath</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/FF_Bath</link><leaf>true</leaf><widget><widgetId>FF_Bath_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_FF_Bath_Ceiling</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_FF_Bath_Ceiling</link></item></widget><widget><widgetId>FF_Bath_1</widgetId><type>Switch</type><label>Mirror</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_FF_Bath_Mirror</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_FF_Bath_Mirror</link></item></widget><widget><widgetId>FF_Bath_2</widgetId><type>Switch</type><label>Bath</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_FF_Bath</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_FF_Bath</link></item></widget><widget><widgetId>FF_Bath_3</widgetId><type>Switch</type><label>Bath</label><icon>rollershutter-100</icon><item><type>RollershutterItem</type><name>Shutter_FF_Bath</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/Shutter_FF_Bath</link></item></widget><widget><widgetId>FF_Bath_4</widgetId><type>Text</type><label>Temperature [20.2 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_FF_Bath</name><state>20.20000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_FF_Bath</link></item></widget><widget><widgetId>FF_Bath_5</widgetId><type>Text</type><label>Bath [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_FF_Bath</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Bath</link></item></widget></linkedPage></widget><widget><widgetId>0000_1</widgetId><type>Group</type><label>Office</label><icon>office</icon><item><type>GroupItem</type><name>FF_Office</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/FF_Office</link></item><linkedPage><id>FF_Office</id><title>Office</title><icon>office</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/FF_Office</link><leaf>true</leaf><widget><widgetId>FF_Office_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_FF_Office_Ceiling</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_FF_Office_Ceiling</link></item></widget><widget><widgetId>FF_Office_1</widgetId><type>Switch</type><label>Office</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_FF_Office</name><state>OFF</state>" + "<link>https://demo.openhab.org:8443/rest/items/Heating_FF_Office</link></item></widget><widget><widgetId>FF_Office_2</widgetId><type>Switch</type><label>Office Window</label><icon>rollershutter-100</icon><item><type>RollershutterItem</type><name>Shutter_FF_Office_Window</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/Shutter_FF_Office_Window</link></item></widget><widget><widgetId>FF_Office_3</widgetId><type>Switch</type><label>Office Door</label><icon>rollershutter-100</icon><item><type>RollershutterItem</type><name>Shutter_FF_Office_Door</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/Shutter_FF_Office_Door</link></item></widget><widget><widgetId>FF_Office_4</widgetId><type>Text</type><label>Temperature [18.6 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_FF_Office</name><state>18.60000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_FF_Office</link></item></widget><widget><widgetId>FF_Office_5</widgetId><type>Text</type><label>Office Window [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_FF_Office_Window</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Office_Window</link></item></widget><widget><widgetId>FF_Office_6</widgetId><type>Text</type><label>Balcony Door [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_FF_Office_Door</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Office_Door</link></item></widget></linkedPage></widget><widget><widgetId>0000_2</widgetId><type>Group</type><label>Child's Room</label><icon>boy1</icon><item><type>GroupItem</type><name>FF_Child</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/FF_Child</link></item><linkedPage><id>FF_Child</id><title>Child's Room</title><icon>boy1</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/FF_Child</link><leaf>true</leaf><widget><widgetId>FF_Child_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_FF_Child_Ceiling</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_FF_Child_Ceiling</link></item></widget><widget><widgetId>FF_Child_1</widgetId><type>Switch</type><label>Child's Room</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_FF_Child</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_FF_Child</link></item></widget><widget><widgetId>FF_Child_2</widgetId><type>Text</type><label>Temperature [18.9 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_FF_Child</name><state>18.90000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_FF_Child</link></item></widget></linkedPage></widget><widget><widgetId>0000_3</widgetId><type>Group</type><label>Bedroom</label><icon>bedroom</icon><item><type>GroupItem</type><name>FF_Bed</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/FF_Bed</link></item><linkedPage><id>FF_Bed</id><title>Bedroom</title><icon>bedroom</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/FF_Bed</link><leaf>true</leaf><widget><widgetId>FF_Bed_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_FF_Bed_Ceiling</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_FF_Bed_Ceiling</link></item></widget><widget><widgetId>FF_Bed_1</widgetId><type>Switch</type><label>Bedroom</label><icon>heating-on</icon><item><type>SwitchItem</type><name>Heating_FF_Bed</name><state>ON</state>" + "<link>https://demo.openhab.org:8443/rest/items/Heating_FF_Bed</link></item></widget><widget><widgetId>FF_Bed_2</widgetId><type>Switch</type><label>Bedroom</label><icon>rollershutter-100</icon><item><type>RollershutterItem</type><name>Shutter_FF_Bed</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/Shutter_FF_Bed</link></item></widget><widget><widgetId>FF_Bed_3</widgetId><type>Text</type><label>Temperature [19.2 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_FF_Bed</name><state>19.20000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_FF_Bed</link></item></widget><widget><widgetId>FF_Bed_4</widgetId><type>Text</type><label>Bedroom [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_FF_Bed</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Bed</link></item></widget></linkedPage></widget><widget><widgetId>0000_4</widgetId><type>Group</type><label>Corridor</label><icon>corridor</icon><item><type>GroupItem</type><name>FF_Corridor</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/FF_Corridor</link></item><linkedPage><id>FF_Corridor</id><title>Corridor</title><icon>corridor</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/FF_Corridor</link><leaf>true</leaf><widget><widgetId>FF_Corridor_0</widgetId><type>Switch</type><label>Corridor</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_FF_Corridor_Ceiling</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_FF_Corridor_Ceiling</link></item></widget></linkedPage></widget></linkedPage></widget><widget><widgetId>demo_0_0_1</widgetId><type>Group</type><label>Ground Floor</label><icon>groundfloor</icon><item><type>GroupItem</type><name>gGF</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/gGF</link></item><linkedPage><id>0001</id><title>Ground Floor</title><icon>groundfloor</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0001</link><leaf>false</leaf><widget><widgetId>0001_0</widgetId><type>Group</type><label>Living Room</label><icon>video</icon><item><type>GroupItem</type><name>GF_Living</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/GF_Living</link></item><linkedPage><id>GF_Living</id><title>Living Room</title><icon>video</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/GF_Living</link><leaf>true</leaf><widget><widgetId>GF_Living_0</widgetId><type>Slider</type><label>Table</label><icon>slider-0</icon><switchSupport>true</switchSupport><sendFrequency>0</sendFrequency><item><type>DimmerItem</type><name>Light_GF_Living_Table</name><state>2</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Living_Table</link></item></widget><widget><widgetId>GF_Living_1</widgetId><type>Switch</type><label>Livingroom</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_GF_Living</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Living</link></item></widget><widget><widgetId>GF_Living_2</widgetId><type>Switch</type><label>Livingroom</label><icon>rollershutter-0</icon><item><type>RollershutterItem</type><name>Shutter_GF_Living</name><state>0</state><link>https://demo.openhab.org:8443/rest/items/Shutter_GF_Living</link></item></widget><widget><widgetId>GF_Living_3</widgetId><type>Text</type><label>Temperature [18.8 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_GF_Living</name><state>18.80000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_GF_Living</link></item></widget><widget>" + "<widgetId>GF_Living_4</widgetId><type>Text</type><label>Terrace door [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_GF_Living</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Living</link></item></widget></linkedPage></widget><widget><widgetId>0001_1</widgetId><type>Group</type><label>Kitchen</label><icon>kitchen</icon><item><type>GroupItem</type><name>GF_Kitchen</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/GF_Kitchen</link></item><linkedPage><id>GF_Kitchen</id><title>Kitchen</title><icon>kitchen</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/GF_Kitchen</link><leaf>true</leaf><widget><widgetId>GF_Kitchen_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_GF_Kitchen_Ceiling</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Kitchen_Ceiling</link></item></widget><widget><widgetId>GF_Kitchen_1</widgetId><type>Switch</type><label>Table</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_GF_Kitchen_Table</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Kitchen_Table</link></item></widget><widget><widgetId>GF_Kitchen_2</widgetId><type>Switch</type><label>Kitchen</label><icon>heating-on</icon><item><type>SwitchItem</type><name>Heating_GF_Kitchen</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Kitchen</link></item></widget><widget><widgetId>GF_Kitchen_3</widgetId><type>Switch</type><label>Kitchen</label><icon>rollershutter-0</icon><item><type>RollershutterItem</type><name>Shutter_GF_Kitchen</name><state>0</state><link>https://demo.openhab.org:8443/rest/items/Shutter_GF_Kitchen</link></item></widget><widget><widgetId>GF_Kitchen_4</widgetId><type>Text</type><label>Temperature [18.8 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_GF_Kitchen</name><state>18.80000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_GF_Kitchen</link></item></widget><widget><widgetId>GF_Kitchen_5</widgetId><type>Text</type><label>Kitchen [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_GF_Kitchen</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Kitchen</link></item></widget></linkedPage></widget><widget><widgetId>0001_2</widgetId><type>Group</type><label>Toilet</label><icon>bath</icon><item><type>GroupItem</type><name>GF_Toilet</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/GF_Toilet</link></item><linkedPage><id>GF_Toilet</id><title>Toilet</title><icon>bath</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/GF_Toilet</link><leaf>true</leaf><widget><widgetId>GF_Toilet_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_GF_Toilet_Ceiling</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Toilet_Ceiling</link></item></widget><widget><widgetId>GF_Toilet_1</widgetId><type>Switch</type><label>Mirror</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_GF_Toilet_Mirror</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Toilet_Mirror</link></item></widget><widget><widgetId>GF_Toilet_2</widgetId><type>Switch</type><label>Toilet</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_GF_Toilet</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Toilet</link></item></widget><widget><widgetId>GF_Toilet_3</widgetId><type>Switch</type>" + "<label>Toilet</label><icon>rollershutter-100</icon><item><type>RollershutterItem</type><name>Shutter_GF_Toilet</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/Shutter_GF_Toilet</link></item></widget><widget><widgetId>GF_Toilet_4</widgetId><type>Text</type><label>Temperature [21.5 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_GF_Toilet</name><state>21.50000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_GF_Toilet</link></item></widget><widget><widgetId>GF_Toilet_5</widgetId><type>Text</type><label>Toilet [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_GF_Toilet</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Toilet</link></item></widget></linkedPage></widget><widget><widgetId>0001_3</widgetId><type>Group</type><label>Corridor</label><icon>corridor</icon><item><type>GroupItem</type><name>GF_Corridor</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/GF_Corridor</link></item><linkedPage><id>GF_Corridor</id><title>Corridor</title><icon>corridor</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/GF_Corridor</link><leaf>true</leaf><widget><widgetId>GF_Corridor_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_GF_Corridor_Ceiling</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Corridor_Ceiling</link></item></widget><widget><widgetId>GF_Corridor_1</widgetId><type>Switch</type><label>Wardrobe</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_GF_Corridor_Wardrobe</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_GF_Corridor_Wardrobe</link></item></widget><widget><widgetId>GF_Corridor_2</widgetId><type>Switch</type><label>GF Corridor</label><icon>heating-on</icon><item><type>SwitchItem</type><name>Heating_GF_Corridor</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Corridor</link></item></widget><widget><widgetId>GF_Corridor_3</widgetId><type>Text</type><label>Temperature [22.2 °C]</label><icon>temperature</icon><item><type>NumberItem</type><name>Temperature_GF_Corridor</name><state>22.20000000</state><link>https://demo.openhab.org:8443/rest/items/Temperature_GF_Corridor</link></item></widget><widget><widgetId>GF_Corridor_4</widgetId><type>Text</type><label>Frontdoor [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_GF_Frontdoor</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Frontdoor</link></item></widget></linkedPage></widget></linkedPage></widget><widget><widgetId>demo_0_0_1_2</widgetId><type>Group</type><label>Cellar</label><icon>cellar</icon><item><type>GroupItem</type><name>gC</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/gC</link></item><linkedPage><id>0002</id><title>Cellar</title><icon>cellar</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0002</link><leaf>true</leaf><widget><widgetId>0002_0</widgetId><type>Switch</type><label>Ceiling</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_C_Corridor_Ceiling</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_C_Corridor_Ceiling</link></item></widget><widget><widgetId>0002_1</widgetId><type>Switch</type><label>Staircase</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_C_Staircase</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_C_Staircase</link></item></widget><widget><widgetId>0002_2</widgetId><type>Switch</type>" + "<label>Washing</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_C_Washing_Ceiling</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_C_Washing_Ceiling</link></item></widget><widget><widgetId>0002_3</widgetId><type>Switch</type><label>Workshop</label><icon>switch-off</icon><item><type>SwitchItem</type><name>Light_C_Workshop</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Light_C_Workshop</link></item></widget></linkedPage></widget><widget><widgetId>demo_0_0_1_2_3</widgetId><type>Group</type><label>Outdoor</label><icon>garden</icon><item><type>GroupItem</type><name>Outdoor</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/Outdoor</link></item><linkedPage><id>0003</id><title>Outdoor</title><icon>garden</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0003</link><leaf>true</leaf><widget><widgetId>0003_0</widgetId><type>Switch</type><label>Garage</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_Outdoor_Garage</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_Outdoor_Garage</link></item></widget><widget><widgetId>0003_1</widgetId><type>Switch</type><label>Terrace</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_Outdoor_Terrace</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_Outdoor_Terrace</link></item></widget><widget><widgetId>0003_2</widgetId><type>Switch</type><label>Frontdoor</label><icon>switch-on</icon><item><type>SwitchItem</type><name>Light_Outdoor_Frontdoor</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Light_Outdoor_Frontdoor</link></item></widget><widget><widgetId>0003_3</widgetId><type>Text</type><label>Garage Door [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Garage_Door</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Garage_Door</link></item></widget></linkedPage></widget></widget><widget><widgetId>demo_1</widgetId><type>Frame</type><label>Weather</label><icon>frame</icon><widget><widgetId>demo_1_0</widgetId><type>Text</type><label>Outside Temperature [10.0 °C]</label><icon>temperature</icon><valuecolor>#ffa500</valuecolor><item><type>NumberItem</type><name>Weather_Temperature</name><state>10</state><link>https://demo.openhab.org:8443/rest/items/Weather_Temperature</link></item><linkedPage><id>0100</id><title>Outside Temperature [10.0 °C]</title><icon>temperature</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0100</link><leaf>false</leaf><widget><widgetId>0100_0</widgetId><type>Frame</type><label></label><icon>frame</icon><widget><widgetId>0100_0_0</widgetId><type>Text</type><label>Todays Maximum [14.0 °C]</label><icon>temperature</icon><valuecolor>#ffa500</valuecolor><item><type>NumberItem</type><name>Weather_Temp_Max</name><state>14</state><link>https://demo.openhab.org:8443/rest/items/Weather_Temp_Max</link></item></widget><widget><widgetId>0100_0_0_1</widgetId><type>Text</type><label>Todays Minimum [7.0 °C]</label><icon>temperature</icon><valuecolor>#ffa500</valuecolor><item><type>NumberItem</type><name>Weather_Temp_Min</name><state>7</state><link>https://demo.openhab.org:8443/rest/items/Weather_Temp_Min</link></item></widget><widget><widgetId>0100_0_0_1_2</widgetId><type>Text</type><label>Last Update [Sat 22:16]</label><icon>clock</icon><item><type>DateTimeItem</type><name>Weather_LastUpdate</name><state>2014-04-05T22:16:15</state><link>https://demo.openhab.org:8443/rest/items/Weather_LastUpdate</link></item></widget></widget><widget><widgetId>0100_1</widgetId><type>Frame</type><label></label><icon>frame</icon>" + "<widget><widgetId>0100_1_0</widgetId><type>Switch</type><label>Chart Period</label><icon>none</icon><mapping><command>0</command><label>Hour</label></mapping><mapping><command>1</command><label>Day</label></mapping><mapping><command>2</command><label>Week</label></mapping><item><type>NumberItem</type><name>Weather_Chart_Period</name><state>1</state><link>https://demo.openhab.org:8443/rest/items/Weather_Chart_Period</link></item></widget><widget><widgetId>0100_1_0_1_1</widgetId><type>Chart</type><label>Weather_Chart</label><icon>chart</icon><refresh>3600</refresh><period>D</period><item><type>GroupItem</type><name>Weather_Chart</name><state>Undefined</state><link>https://demo.openhab.org:8443/rest/items/Weather_Chart</link></item></widget></widget></linkedPage></widget></widget><widget><widgetId>demo_2</widgetId><type>Frame</type><label>Date</label><icon>frame</icon><widget><widgetId>demo_2_0</widgetId><type>Text</type><label>Date [Saturday, 05.04.2014]</label><icon>calendar</icon><item><type>DateTimeItem</type><name>Date</name><state>2014-04-05T22:05:15</state><link>https://demo.openhab.org:8443/rest/items/Date</link></item></widget></widget><widget><widgetId>demo_3</widgetId><type>Frame</type><label>Demo</label><icon>frame</icon><widget><widgetId>demo_3_0</widgetId><type>Text</type><label>Group Demo</label><icon>firstfloor</icon><linkedPage><id>0300</id><title>Group Demo</title><icon>firstfloor</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0300</link><leaf>false</leaf><widget><widgetId>0300_0</widgetId><type>Switch</type><label>All Lights [(11)]</label><icon>switch-on</icon><mapping><command>OFF</command><label>All Off</label></mapping><item><type>GroupItem</type><name>Lights</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Lights</link></item></widget><widget><widgetId>0300_1</widgetId><type>Group</type><label>No. of Active Heatings [(3)]</label><icon>heating-on</icon><item><type>GroupItem</type><name>Heating</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Heating</link></item><linkedPage><id>030001</id><title>No. of Active Heatings [(3)]</title><icon>heating-on</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/030001</link><leaf>true</leaf><widget><widgetId>030001_0</widgetId><type>Switch</type><label>GF Corridor</label><icon>heating-on</icon><item><type>SwitchItem</type><name>Heating_GF_Corridor</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Corridor</link></item></widget><widget><widgetId>030001_1</widgetId><type>Switch</type><label>Toilet</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_GF_Toilet</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Toilet</link></item></widget><widget><widgetId>030001_2</widgetId><type>Switch</type><label>Livingroom</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_GF_Living</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Living</link></item></widget><widget><widgetId>030001_3</widgetId><type>Switch</type><label>Kitchen</label><icon>heating-on</icon><item><type>SwitchItem</type><name>Heating_GF_Kitchen</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Heating_GF_Kitchen</link></item></widget><widget><widgetId>030001_4</widgetId><type>Switch</type><label>Bath</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_FF_Bath</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_FF_Bath</link></item></widget><widget><widgetId>030001_5</widgetId><type>Switch</type><label>Office</label><icon>heating-off</icon><item>" + "<type>SwitchItem</type><name>Heating_FF_Office</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_FF_Office</link></item></widget><widget><widgetId>030001_6</widgetId><type>Switch</type><label>Child's Room</label><icon>heating-off</icon><item><type>SwitchItem</type><name>Heating_FF_Child</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/Heating_FF_Child</link></item></widget><widget><widgetId>030001_7</widgetId><type>Switch</type><label>Bedroom</label><icon>heating-on</icon><item><type>SwitchItem</type><name>Heating_FF_Bed</name><state>ON</state><link>https://demo.openhab.org:8443/rest/items/Heating_FF_Bed</link></item></widget></linkedPage></widget><widget><widgetId>0300_2</widgetId><type>Group</type><label>Open windows [(4)]</label><icon>contact-open</icon><item><type>GroupItem</type><name>Windows</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Windows</link></item><linkedPage><id>030002</id><title>Open windows [(4)]</title><icon>contact-open</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/030002</link><leaf>true</leaf><widget><widgetId>030002_0</widgetId><type>Text</type><label>Frontdoor [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_GF_Frontdoor</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Frontdoor</link></item></widget><widget><widgetId>030002_1</widgetId><type>Text</type><label>Kitchen [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_GF_Kitchen</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Kitchen</link></item></widget><widget><widgetId>030002_2</widgetId><type>Text</type><label>Terrace door [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_GF_Living</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Living</link></item></widget><widget><widgetId>030002_3</widgetId><type>Text</type><label>Toilet [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_GF_Toilet</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_GF_Toilet</link></item></widget><widget><widgetId>030002_4</widgetId><type>Text</type><label>Bath [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_FF_Bath</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Bath</link></item></widget><widget><widgetId>030002_5</widgetId><type>Text</type><label>Bedroom [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_FF_Bed</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Bed</link></item></widget><widget><widgetId>030002_6</widgetId><type>Text</type><label>Office Window [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Window_FF_Office_Window</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Office_Window</link></item></widget><widget><widgetId>030002_7</widgetId><type>Text</type><label>Balcony Door [open]</label><icon>contact-open</icon><item><type>ContactItem</type><name>Window_FF_Office_Door</name><state>OPEN</state><link>https://demo.openhab.org:8443/rest/items/Window_FF_Office_Door</link></item></widget><widget><widgetId>030002_8</widgetId><type>Text</type><label>Garage Door [closed]</label><icon>contact-closed</icon><item><type>ContactItem</type><name>Garage_Door</name><state>CLOSED</state><link>https://demo.openhab.org:8443/rest/items/Garage_Door</link></item></widget></linkedPage></widget><widget><widgetId>0300_3</widgetId>" + "<type>Text</type><label>Avg. Room Temperature [19.8 °C]</label><icon>temperature</icon><item><type>GroupItem</type><name>Temperature</name><state>19.77500000</state><link>https://demo.openhab.org:8443/rest/items/Temperature</link></item></widget></linkedPage></widget><widget><widgetId>demo_3_0_1</widgetId><type>Text</type><label>Widget Overview</label><icon>chart</icon><linkedPage><id>0301</id><title>Widget Overview</title><icon>chart</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0301</link><leaf>false</leaf><widget><widgetId>0301_0</widgetId><type>Frame</type><label>Binary Widgets</label><icon>frame</icon><widget><widgetId>0301_0_0</widgetId><type>Switch</type><label>Toggle Switch</label><icon>switch-off</icon><item><type>SwitchItem</type><name>DemoSwitch</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/DemoSwitch</link></item></widget><widget><widgetId>0301_0_0_1</widgetId><type>Switch</type><label>Button Switch</label><icon>switch-off</icon><mapping><command>ON</command><label>On</label></mapping><item><type>SwitchItem</type><name>DemoSwitch</name><state>OFF</state><link>https://demo.openhab.org:8443/rest/items/DemoSwitch</link></item></widget></widget><widget><widgetId>0301_1</widgetId><type>Frame</type><label>Discrete Widgets</label><icon>frame</icon><widget><widgetId>0301_1_0</widgetId><type>Selection</type><label>Scene Selection</label><icon>sofa</icon><mapping><command>0</command><label>off</label></mapping><mapping><command>1</command><label>TV</label></mapping><mapping><command>2</command><label>Dinner</label></mapping><mapping><command>3</command><label>Reading</label></mapping><item><type>NumberItem</type><name>Scene_General</name><state>3</state><link>https://demo.openhab.org:8443/rest/items/Scene_General</link></item></widget><widget><widgetId>0301_1_0_1</widgetId><type>Switch</type><label>Scene</label><icon>sofa</icon><mapping><command>1</command><label>TV</label></mapping><mapping><command>2</command><label>Dinner</label></mapping><mapping><command>3</command><label>Reading</label></mapping><item><type>NumberItem</type><name>Scene_General</name><state>3</state><link>https://demo.openhab.org:8443/rest/items/Scene_General</link></item></widget><widget><widgetId>0301_1_0_1_2</widgetId><type>Setpoint</type><label>Temperature [21.0 °C]</label><icon>temperature</icon><minValue>16</minValue><maxValue>28</maxValue><step>0.5</step><item><type>NumberItem</type><name>Temperature_Setpoint</name><state>21.0</state><link>https://demo.openhab.org:8443/rest/items/Temperature_Setpoint</link></item></widget></widget><widget><widgetId>0301_2</widgetId><type>Frame</type><label>Percent-based Widgets</label><icon>frame</icon><widget><widgetId>0301_2_0</widgetId><type>Slider</type><label>Dimmer [100 %]</label><icon>slider-100</icon><switchSupport>true</switchSupport><sendFrequency>0</sendFrequency><item><type>DimmerItem</type><name>DimmedLight</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/DimmedLight</link></item></widget><widget><widgetId>0301_2_0_1</widgetId><type>Colorpicker</type><label>RGB Light</label><icon>slider-40</icon><item><type>ColorItem</type><name>RGBLight</name><state>125.51724,74.35898,45.882355</state><link>https://demo.openhab.org:8443/rest/items/RGBLight</link></item></widget><widget><widgetId>0301_2_0_1_2</widgetId><type>Switch</type><label>Roller Shutter</label><icon>rollershutter-100</icon><item><type>RollershutterItem</type><name>DemoShutter</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/DemoShutter</link></item></widget><widget><widgetId>0301_2_0_1_2_3</widgetId><type>Slider</type><label>Blinds [100 %]</label>" + "<icon>rollershutter-100</icon><switchSupport>false</switchSupport><sendFrequency>0</sendFrequency><item><type>DimmerItem</type><name>DemoBlinds</name><state>100</state><link>https://demo.openhab.org:8443/rest/items/DemoBlinds</link></item></widget></widget></linkedPage></widget><widget><widgetId>demo_3_0_1_2</widgetId><type>Text</type><label>Multimedia</label><icon>video</icon><linkedPage><id>0302</id><title>Multimedia</title><icon>video</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/0302</link><leaf>false</leaf><widget><widgetId>0302_0</widgetId><type>Frame</type><label>Radio Control</label><icon>frame</icon><widget><widgetId>0302_0_0</widgetId><type>Selection</type><label>Radio</label><icon>network</icon><mapping><command>0</command><label>off</label></mapping><mapping><command>1</command><label>HR3</label></mapping><mapping><command>2</command><label>SWR3</label></mapping><mapping><command>3</command><label>FFH</label></mapping><item><type>NumberItem</type><name>Radio_Station</name><state>1</state><link>https://demo.openhab.org:8443/rest/items/Radio_Station</link></item></widget><widget><widgetId>0302_0_0_1</widgetId><type>Slider</type><label>Volume [62.0 %]</label><icon>slider-60</icon><switchSupport>false</switchSupport><sendFrequency>0</sendFrequency><item><type>DimmerItem</type><name>Volume</name><state>62</state><link>https://demo.openhab.org:8443/rest/items/Volume</link></item></widget></widget><widget><widgetId>0302_1</widgetId><type>Frame</type><label>Multimedia Widgets</label><icon>frame</icon><widget><widgetId>0302_1_0</widgetId><type>Image</type><label>openHAB</label><icon>image</icon><url>https://demo.openhab.org:8443/proxy?sitemap=demo.sitemap&widgetId=03020100</url><linkedPage><id>03020100</id><title>openHAB</title><icon>image</icon><link>https://demo.openhab.org:8443/rest/sitemaps/demo/03020100</link><leaf>true</leaf><widget><widgetId>03020100_0</widgetId><type>Text</type><label>http://www.openHAB.org</label><icon>icon</icon></widget></linkedPage></widget><widget><widgetId>0302_1_0_1</widgetId><type>Video</type><label></label><icon>video</icon><url>https://demo.openhab.org:8443/proxy?sitemap=demo.sitemap&widgetId=03020101</url></widget><widget><widgetId>0302_1_0_1_2</widgetId><type>Webview</type><label></label><icon>webview</icon><height>8</height><url>http://heise-online.mobi/</url></widget></widget></linkedPage></widget></widget></homepage></sitemap>";
private final ILogger mLogger;
private final IColorParser mColorParser;
private final IDocumentFactory mResponseParser;
public HttpDataSetup(ILogger logger,
IColorParser colorParser,
IDocumentFactory responseParser) {
mLogger = logger;
mColorParser = colorParser;
mResponseParser = responseParser;
}
private OpenHABWidgetDataSource requestOpenHABData(String htmlResponseData) {
Document document = null;
try {
document = mResponseParser.build(htmlResponseData);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
Node rootNode = document.getElementsByTagName("homepage").item(0);
OpenHABWidget rootWidget = new OpenHABWidget(mLogger);
int childWidgetsFound = 0, childTitlesFound = 0, childIDsFound = 0, childIconsFound = 0, childLinksFound = 0;
OpenHABWidgetDataSource openHABWidgetDataSource = new OpenHABWidgetDataSource(mLogger, mColorParser);
for (int i = 0; i < rootNode.getChildNodes().getLength(); i++) {
Node childNode = rootNode.getChildNodes().item(i);
if (childNode.getNodeName().equals("widget")) {
childWidgetsFound++;
} else if (childNode.getNodeName().equals("title")) {
openHABWidgetDataSource.setTitle(childNode.getTextContent());
childTitlesFound++;
} else if (childNode.getNodeName().equals("id")) {
openHABWidgetDataSource.setId(childNode.getTextContent());
childIDsFound++;
} else if (childNode.getNodeName().equals("icon")) {
openHABWidgetDataSource.setIcon(childNode.getTextContent());
childIconsFound++;
} else if (childNode.getNodeName().equals("link")) {
openHABWidgetDataSource.setLink(childNode.getTextContent());
childLinksFound++;
}
}
return new OpenHABWidgetDataSource(rootNode, mLogger, mColorParser);
}
public OpenHABWidgetDataSource loadTestData() {
return requestOpenHABData(TEST_DATA);
}
}