X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FDriverController.java;h=cc3abedacf9c5b06924eb5ea91497191c861b537;hb=eba11d4859d1e2b936bcd9e8075986b5179b32ea;hp=5d6c1a8d0ca1657b96a516b52e9153d83ba906d0;hpb=eb0ead4c178df50cdaf2197cf4e63a1fe709e852;p=demos%2Fkafka%2Ftraining diff --git a/src/main/java/de/juplo/kafka/DriverController.java b/src/main/java/de/juplo/kafka/DriverController.java index 5d6c1a8..cc3abed 100644 --- a/src/main/java/de/juplo/kafka/DriverController.java +++ b/src/main/java/de/juplo/kafka/DriverController.java @@ -5,45 +5,60 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; -import java.util.concurrent.ExecutionException; +import java.util.Optional; +import java.util.stream.Collectors; @RestController @RequiredArgsConstructor public class DriverController { - private final EndlessConsumer consumer; - private final WordcountRecordHandler wordcount; + private final ApplicationRecordHandler recordHandler; + private final AdderResults results; - @PostMapping("start") - public void start() + @GetMapping("state") + public Map> state() { - consumer.start(); + return + recordHandler + .getState() + .entrySet() + .stream() + .collect(Collectors.toMap( + entry -> entry.getKey(), + entry -> entry.getValue().getState())); } - @PostMapping("stop") - public void stop() throws ExecutionException, InterruptedException + @GetMapping("state/{user}") + public ResponseEntity state(@PathVariable String user) { - consumer.stop(); - } + for (AdderBusinessLogic adder : recordHandler.getState().values()) + { + Optional sum = adder.getSum(user); + if (sum.isPresent()) + return ResponseEntity.ok(sum.get()); + } + return ResponseEntity.notFound().build(); + } - @GetMapping("seen") - public Map>> seen() + @GetMapping("results") + public Map>> results() { - return wordcount.getSeen(); + return results.getState(); } - @GetMapping("seen/{user}") - public ResponseEntity> seen(@PathVariable String user) + @GetMapping("results/{user}") + public ResponseEntity> results(@PathVariable String user) { - for (Map> users : wordcount.getSeen().values()) + for (Map> resultsByUser : this.results.getState().values()) { - Map words = users.get(user); - if (words != null) - return ResponseEntity.ok(words); + List results = resultsByUser.get(user); + if (results != null) + return ResponseEntity.ok(results); } return ResponseEntity.notFound().build();