From 20bc6bff6fe3c06c24c9a35bdf7bb0d894ee6c85 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mo, 14 Nov 2022 11:51:54 +0100
Subject: [PATCH] exercise11

---
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java   |    2 ++
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java |    1 +
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailCounter.java      |   37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java
index 1c19e71..dbc800d 100644
--- a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java
@@ -3,7 +3,9 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
+import org.springframework.scheduling.annotation.EnableAsync;
 
+@EnableAsync
 @ConfigurationPropertiesScan
 @SpringBootApplication
 public class SbtCoreExerciseApplication {
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailCounter.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailCounter.java
new file mode 100644
index 0000000..28b8eeb
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailCounter.java
@@ -0,0 +1,37 @@
+package de.gedoplan.seminar.sbt.di.exercise.service;
+
+import de.gedoplan.seminar.sbt.di.exercise.domain.CocktailOrder;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Component
+public class CocktailCounter {
+  private AtomicInteger count = new AtomicInteger();
+
+  @Autowired
+  Logger logger;
+
+  @EventListener
+  @Async
+  public void countCocktail(CocktailOrder cocktailOrder) {
+    int cocktailCount = cocktailOrder
+        .getOrderDetails()
+        .values()
+        .stream()
+        .mapToInt(Integer::intValue)
+        .sum();
+
+    if (this.logger.isDebugEnabled()) {
+      this.logger.info("Cocktail count ordered: " + cocktailCount);
+    }
+
+    int currentCount = this.count.addAndGet(cocktailCount);
+    this.logger.info("Cocktail count total: " + currentCount);
+  }
+
+}
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java
index 731efb8..0d93bb3 100644
--- a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java
@@ -47,6 +47,7 @@
 
     if (!cocktailOrder.isPlaced()) {
       cocktailOrder.place();
+      eventPublisher.publishEvent(cocktailOrder);
     }
   }
 

--
Gitblit v1.7.1