X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FApplicationRecordHandler.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FApplicationRecordHandler.java;h=596f3da256d9d1e9a052ea43fe2d21c674db94cd;hb=890fd85c334a078610701bd6e571d133df69473f;hp=d0d385ca9f3ed0f94da4a5af058f1da0adc8a19e;hpb=e5c029af3690ae8ebed729af4f06296cef13fa3c;p=demos%2Fkafka%2Ftraining diff --git a/src/main/java/de/juplo/kafka/ApplicationRecordHandler.java b/src/main/java/de/juplo/kafka/ApplicationRecordHandler.java index d0d385c..596f3da 100644 --- a/src/main/java/de/juplo/kafka/ApplicationRecordHandler.java +++ b/src/main/java/de/juplo/kafka/ApplicationRecordHandler.java @@ -1,5 +1,6 @@ package de.juplo.kafka; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; @@ -7,9 +8,12 @@ import java.util.HashMap; import java.util.Map; +@RequiredArgsConstructor @Slf4j public class ApplicationRecordHandler implements RecordHandler { + private final AdderResults results; + private final Map state = new HashMap<>(); @@ -19,29 +23,24 @@ public class ApplicationRecordHandler implements RecordHandler Integer partition = record.partition(); String user = record.key(); String message = record.value(); - switch (message) + + if (message.equals("CALCULATE")) { - case "START": - state.get(partition).startSum(user); - break; - - case "END": - Long result = state.get(partition).endSum(user); - log.info("New result for {}: {}", user, result); - break; - - default: - state.get(partition).addToSum(user, Integer.parseInt(message)); - break; + AdderResult result = state.get(partition).calculate(user); + log.info("New result for {}: {}", user, result); + results.addResults(partition, user, result); + return; } + + state.get(partition).addToSum(user, Integer.parseInt(message)); } - protected void addPartition(Integer partition, Map state) + protected void addPartition(Integer partition, Map state) { this.state.put(partition, new AdderBusinessLogic(state)); } - protected Map removePartition(Integer partition) + protected Map removePartition(Integer partition) { return this.state.remove(partition).getState(); } @@ -51,4 +50,9 @@ public class ApplicationRecordHandler implements RecordHandler { return state; } + + public AdderBusinessLogic getState(Integer partition) + { + return state.get(partition); + } }