public void update(final VType value) { display_info = Optional.ofNullable(ValueUtil.displayOf(value)); if (display_info.isPresent()) value_dbl = ValueUtil.numericValueOf(value).doubleValue(); if (value instanceof VNumber) value_str = Double.toString(((VNumber) value).getValue().doubleValue()); else if (value instanceof VEnum) { final VEnum ev = (VEnum) value; if (ev.getIndex() >= 0 && ev.getIndex() < ev.getLabels().size()) value_str = ev.getLabels().get(ev.getIndex()); else value_str = Integer.toString(ev.getIndex()); } else if (value instanceof VString) value_str = ((VString) value).getValue(); else value_str = Objects.toString(value); final Time vtime = ValueUtil.timeOf(value); if (vtime == null) return; final Timestamp stamp = vtime.getTimestamp(); final Instant new_time = Instant.ofEpochSecond(stamp.getSec(), stamp.getNanoSec()); if (time != null) { final Duration duration = Duration.between(time, new_time); final double period = duration.getSeconds() + duration.getNano() * 1e-9; value_period.add(period); } else value_period.reset(); time = new_time; }
private static void appendTime(StringBuilder builder, Time time) { builder.append(", ").append(timeFormat.format(time.getTimestamp())); }