package de.gedoplan.seminar.sbt.di.exercise.service;
|
|
import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
|
import de.gedoplan.seminar.sbt.di.exercise.exception.OutOfStockException;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.event.EventListener;
|
import org.springframework.stereotype.Component;
|
|
import static java.util.function.Predicate.not;
|
|
@Component
|
public class CocktailSelectChecker {
|
|
@Autowired
|
IngredientService ingredientService;
|
|
@EventListener
|
public void select(Cocktail cocktail) {
|
cocktail.getIngredients().entrySet().stream()
|
.filter(not(e -> ingredientService.isAvailable(e.getKey().getId(), e.getValue())))
|
.findFirst().ifPresent(beverage -> {
|
throw new OutOfStockException(beverage.getKey());
|
});
|
}
|
}
|