package de.hottis.smarthomelib; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public abstract class ADataObject implements Serializable { private static final long serialVersionUID = 1L; final protected Logger logger = LogManager.getRootLogger(); private LocalDateTime timestamp; private String name; private Map values; public ADataObject(LocalDateTime timestamp, String name) { this.timestamp = timestamp; this.name = name; } public void setValues(Map values) { this.values = values; } abstract public String getTableName(); public LocalDateTime getTimestamp() { return timestamp; } public Map getValues() { return values; } public String getName() { return name; } public String toString() { StringBuffer sb = new StringBuffer(); sb.append("{\"name\":\""); sb.append(name); sb.append("\", \"ts\":\""); sb.append(timestamp); sb.append("Z\", \"values\":{"); boolean first = true; for (Map.Entry entry : values.entrySet()) { if (! first) { sb.append(", "); } else { first = false; } sb.append("\""); sb.append(entry.getKey()); sb.append("\":"); Object value = entry.getValue(); if (! (value instanceof Double)) { sb.append("\""); } sb.append(value); if (! (value instanceof Double)) { sb.append("\""); } } sb.append("}}"); /* sb.append("<"); sb.append(name); sb.append(", "); sb.append(timestamp); sb.append(", "); sb.append(values.toString()); sb.append(">"); */ return sb.toString(); } }