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
17 @Autowired
18 BridiReferenceRepository bridiReferenceRepository;
19
20 @Autowired
21 BridiElementFactory bridiElementFactory;
22
23 public Stream<BridiElement> apply(final String id) {
24 final Stream<String> contained = getRelativeForBridiElement
25 .apply(id, CONTAINS_ID, 1, 2)
26 .filter(x -> {
27 Optional<BridiReference> refP = bridiReferenceRepository.findByBridiIdAndPosition(x, 0);
28 return refP.isEmpty() || !CONTAINS_ID.equals(refP.get().selbriId());
29 });
30 return contained.sorted().map(bridiElementFactory::apply);
31 }
32 }