Card.java 920 B

123456789101112131415161718192021222324252627282930313233
  1. package org.leumasjaffe.recipe.model;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Optional;
  5. import java.util.stream.Stream;
  6. import org.leumasjaffe.observer.Observable;
  7. import lombok.Data;
  8. import lombok.EqualsAndHashCode;
  9. @Data @EqualsAndHashCode(callSuper=false)
  10. public class Card extends Observable.Instance implements CompoundRecipeComponent {
  11. int id = 0; // TODO Fix this
  12. int[] dependsOn = {}; // decltype(id)[]
  13. String vessel = "";
  14. Optional<Preparation> preparation = Optional.empty();
  15. List<Step> cooking = new ArrayList<>();
  16. Optional<Rest> rest = Optional.empty();
  17. public Stream<Ingredient> getIngredientsAsStream() {
  18. return getComponents().flatMap(RecipeComponent::getIngredientsAsStream);
  19. }
  20. public Stream<? extends RecipeComponent> getComponents() {
  21. if (preparation.isPresent()) {
  22. return Stream.of(preparation.get());
  23. } else {
  24. return cooking.stream();
  25. }
  26. }
  27. }