package org.openhab.habdroid.model;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
public class OpenHAB1Widget extends OpenHABWidget {
public OpenHAB1Widget() {
}
@Override
public String getIconPath() {
return String.format("images/%s.png", getIcon());
}
private OpenHAB1Widget(OpenHABWidget parent, Node startNode) {
this.parent = parent;
this.children = new ArrayList<OpenHABWidget>();
this.mappings = new ArrayList<OpenHABWidgetMapping>();
if (startNode.hasChildNodes()) {
NodeList childNodes = startNode.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i ++) {
Node childNode = childNodes.item(i);
String childNodeName = childNode.getNodeName();
String childNodeTextContent = childNode.getTextContent();
if (childNodeName.equals("item")) {
this.setItem(new OpenHABItem(childNode));
} else if (childNodeName.equals("linkedPage")) {
this.setLinkedPage(new OpenHABLinkedPage(childNode));
} else if (childNodeName.equals("widget")) {
createOpenHABWidgetFromNode(this, childNode);
} else {
if (childNodeName.equals("type")) {
this.setType(childNodeTextContent);
} else if (childNodeName.equals("widgetId")) {
this.setId(childNodeTextContent);
} else if (childNodeName.equals("label")) {
this.setLabel(childNodeTextContent);
} else if (childNodeName.equals("icon")) {
this.setIcon(childNodeTextContent);
} else if (childNodeName.equals("url")) {
this.setUrl(childNodeTextContent);
} else if (childNodeName.equals("minValue")) {
setMinValue(Float.valueOf(childNodeTextContent).floatValue());
} else if (childNodeName.equals("maxValue")) {
setMaxValue(Float.valueOf(childNodeTextContent).floatValue());
} else if (childNodeName.equals("step")) {
setStep(Float.valueOf(childNodeTextContent).floatValue());
} else if (childNodeName.equals("refresh")) {
setRefresh(Integer.valueOf(childNodeTextContent).intValue());
} else if (childNodeName.equals("period")) {
setPeriod(childNodeTextContent);
} else if (childNodeName.equals("service")) {
setService(childNodeTextContent);
} else if (childNodeName.equals("height")) {
setHeight(Integer.valueOf(childNodeTextContent));
} else if (childNodeName.equals("mapping")) {
NodeList mappingChildNodes = childNode.getChildNodes();
String mappingCommand = "";
String mappingLabel = "";
for (int k = 0; k < mappingChildNodes.getLength(); k++) {
if (mappingChildNodes.item(k).getNodeName().equals("command"))
mappingCommand = mappingChildNodes.item(k).getTextContent();
if (mappingChildNodes.item(k).getNodeName().equals("label"))
mappingLabel = mappingChildNodes.item(k).getTextContent();
}
OpenHABWidgetMapping mapping = new OpenHABWidgetMapping(mappingCommand, mappingLabel);
mappings.add(mapping);
} else if (childNodeName.equals("iconcolor")) {
setIconColor(childNodeTextContent);
} else if (childNodeName.equals("labelcolor")) {
setLabelColor(childNodeTextContent);
} else if (childNodeName.equals("valuecolor")) {
setValueColor(childNodeTextContent);
} else if (childNodeName.equals("encoding")) {
setEncoding(childNodeTextContent);
}
}
}
}
this.parent.addChildWidget(this);
}
public static OpenHABWidget createOpenHABWidgetFromNode(OpenHABWidget parent, Node startNode) {
return new OpenHAB1Widget(parent, startNode);
}
}