package de.ph87.data.message.handler; import com.fasterxml.jackson.databind.*; import de.ph87.data.message.*; import de.ph87.data.series.*; import de.ph87.data.series.entry.*; import de.ph87.data.value.Value; import lombok.*; import lombok.extern.slf4j.*; import org.springframework.stereotype.*; import java.time.*; @Slf4j @Service @RequiredArgsConstructor public class SimpleJsonHandler implements IMessageHandler { private final ObjectMapper objectMapper; private final EntryService entryService; @Override public void handle(@NonNull final Message message) throws Exception { if (!message.topic.endsWith("/SimpleJson")) { return; } final Inbound inbound = objectMapper.readValue(message.payload, Inbound.class); entryService.receive(new SeriesInbound(inbound.name, inbound.date, inbound.value)); } @Getter @ToString private static class Inbound { @NonNull public final String name; @NonNull public final ZonedDateTime date; public final Value value; public Inbound(@NonNull final String name, final long timestamp, final double value, @NonNull final Value.Unit unit) { this.name = name; this.date = ZonedDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.systemDefault()); this.value = new Value(value, unit); } } }