Hendrik Jungnitsch
2022-09-29 bc435ed1a9a73d85c9d625b18787945d8a6db946
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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());
                });
    }
}