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);
|
}
|
|
}
|