package org.dsa.iot.responder;
import org.dsa.iot.dslink.node.Node;
import org.dsa.iot.dslink.node.NodeBuilder;
import org.dsa.iot.dslink.node.Writable;
import org.dsa.iot.dslink.node.value.Value;
import org.dsa.iot.dslink.node.value.ValuePair;
import org.dsa.iot.dslink.node.value.ValueType;
import org.dsa.iot.dslink.util.handler.Handler;
import org.dsa.iot.dslink.util.json.JsonArray;
import org.dsa.iot.dslink.util.json.JsonObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Samuel Grenier
*/
public class Values {
private static final Logger LOGGER;
public static void init(Node parent) {
NodeBuilder builder = parent.createChild("values");
parent = builder.build();
builder = parent.createChild("binary");
builder.setValueType(ValueType.BINARY);
builder.setValue(new Value(new byte[] {0, 1, 2, 3}));
builder.build();
builder = parent.createChild("number");
builder.setValueType(ValueType.NUMBER);
builder.setValue(new Value(0));
builder.build();
builder = parent.createChild("bool");
builder.setValueType(ValueType.BOOL);
builder.setValue(new Value(false));
builder.build();
builder = parent.createChild("string");
builder.setValueType(ValueType.STRING);
builder.setValue(new Value("Hello world"));
builder.build();
builder = parent.createChild("dynamic");
builder.setValueType(ValueType.DYNAMIC);
builder.setValue(new Value("test"));
builder.build();
builder = parent.createChild("map");
builder.setValueType(ValueType.MAP);
{
JsonObject object = new JsonObject();
object.put("key", "value");
builder.setValue(new Value(object));
}
builder.build();
builder = parent.createChild("array");
builder.setValueType(ValueType.ARRAY);
{
JsonArray array = new JsonArray();
array.add(0);
array.add("Hello world");
builder.setValue(new Value(array));
}
builder.build();
builder = parent.createChild("writable");
builder.setValueType(ValueType.DYNAMIC);
{
builder.setValue(new Value(0));
builder.setWritable(Writable.WRITE);
builder.getListener().setValueHandler(new Handler<ValuePair>() {
@Override
public void handle(ValuePair event) {
String from = event.getPrevious().toString();
String to = event.getCurrent().toString();
LOGGER.info("Writable value changed from `{}` to `{}`", from, to);
}
});
}
builder.build();
builder = parent.createChild("writable_enum");
builder.setValueType(ValueType.makeEnum("a", "b", "c"));
{
builder.setValue(new Value("a"));
builder.setWritable(Writable.WRITE);
builder.getListener().setValueHandler(new Handler<ValuePair>() {
@Override
public void handle(ValuePair event) {
String from = event.getPrevious().toString();
String to = event.getCurrent().toString();
LOGGER.info("Writable enum value changed from `{}` to `{}`", from, to);
}
});
}
builder.build();
}
static {
LOGGER = LoggerFactory.getLogger(Values.class);
}
}