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  	@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  }