1 package io.github.magwas.inez.storage;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.Set;
8
9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.stereotype.Service;
11
12 import io.github.magwas.inez.Bridi;
13 import io.github.magwas.inez.storage.model.BridiReference;
14 import io.github.magwas.inez.storage.model.Sumti;
15 import io.github.magwas.inez.storage.repository.BridiReferenceRepository;
16 import io.github.magwas.runtime.LogUtil;
17
18 @Service
19 public class CreateBridiFromSumtiService {
20
21 @Autowired
22 BridiReferenceRepository bridiReferenceRepository;
23
24 public Bridi apply(final Sumti sumti) {
25 final Map<Integer, BridiReference> map = new HashMap<>();
26 Set<BridiReference> refs = bridiReferenceRepository.findAllByBridiId(sumti.id());
27 LogUtil.debug("refs:" + refs);
28 refs.forEach(ref -> map.put(ref.position(), ref));
29 LogUtil.debug("map:" + map);
30 List<String> parts = new ArrayList<>();
31 int i = 0;
32 while (map.containsKey(i)) {
33 parts.add(map.get(i).sumtiId());
34 i++;
35 }
36 Bridi bridi = new Bridi(sumti.id(), sumti.representation(), parts);
37 LogUtil.debug("bridi:" + bridi);
38 return bridi;
39 }
40 }