1 package io.github.magwas.inez.element;
2
3 import java.util.Optional;
4 import java.util.stream.Stream;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service;
8
9 import io.github.magwas.inez.storage.model.BridiReference;
10 import io.github.magwas.inez.storage.repository.BridiReferenceRepository;
11
12 @Service
13 public class GetBridiElementChildrenService implements ElementConstants {
14 @Autowired
15 GetRelativeForBridiElementService getRelativeForBridiElement;
16 @Autowired
17 BridiReferenceRepository bridiReferenceRepository;
18 @Autowired
19 BridiElementFactory bridiElementFactory;
20
21 public Stream<BridiElement> apply(String id) {
22 final Stream<String> contained = getRelativeForBridiElement
23 .apply(id, CONTAINS_ID, 1, 2).filter(x -> {
24 Optional<BridiReference> refP = bridiReferenceRepository
25 .findByBridiIdAndPosition(x, 0);
26 if (refP.isEmpty())
27 return true;
28 if (refP.get().selbriId().equals(CONTAINS_ID))
29 return false;
30 return true;
31 });
32 return contained.sorted().map(x -> bridiElementFactory.apply((x)));
33 }
34
35 }