From ad4a006cd0f6d7306c1d3b5b9d7c28dd73b7ebee Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mo, 14 Nov 2022 11:41:51 +0100
Subject: [PATCH] exercise07
---
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/AlcFilter.java | 14 ++++++++++++++
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java | 9 +++++++--
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/SugarFilter.java | 16 ++++++++++++++++
3 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/AlcFilter.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/AlcFilter.java
new file mode 100644
index 0000000..53b1b6a
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/AlcFilter.java
@@ -0,0 +1,14 @@
+package de.gedoplan.seminar.sbt.di.exercise.service;
+
+import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
+import org.springframework.stereotype.Component;
+
+import java.util.function.Predicate;
+
+@Component
+public class AlcFilter implements Predicate<Cocktail> {
+ @Override
+ public boolean test(Cocktail cocktail) {
+ return cocktail.isAlcoholic();
+ }
+}
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java
index 9e49f94..ff9a7e1 100644
--- a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailServiceImpl.java
@@ -6,19 +6,24 @@
import org.springframework.stereotype.Component;
import java.util.List;
+import java.util.function.Predicate;
@ConditionalOnProperty(name = "cocktailService.mock", havingValue = "false", matchIfMissing = true)
@Component
public class CocktailServiceImpl implements CocktailService {
private final CocktailRepository cocktailRepository;
+ private final List<Predicate<Cocktail>> filters;
- public CocktailServiceImpl(CocktailRepository cocktailRepository) {
+ public CocktailServiceImpl(CocktailRepository cocktailRepository, List<Predicate<Cocktail>> filters) {
this.cocktailRepository = cocktailRepository;
+ this.filters = filters;
}
@Override
public List<Cocktail> findAll() {
- return cocktailRepository.findAll();
+ return cocktailRepository.findAll().stream()
+ .filter(filters.stream().reduce(Predicate::and).orElse(x -> true))
+ .toList();
}
}
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/SugarFilter.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/SugarFilter.java
new file mode 100644
index 0000000..73f61be
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/SugarFilter.java
@@ -0,0 +1,16 @@
+package de.gedoplan.seminar.sbt.di.exercise.service;
+
+import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
+import de.gedoplan.seminar.sbt.di.exercise.domain.CocktailSamples;
+import org.springframework.stereotype.Component;
+
+import java.util.function.Predicate;
+
+@Component
+public class SugarFilter implements Predicate<Cocktail> {
+
+ @Override
+ public boolean test(Cocktail cocktail) {
+ return !cocktail.getIngredients().containsKey(CocktailSamples.SUGAR);
+ }
+}
--
Gitblit v1.7.1