View Javadoc
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  }