1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.caravan.hal.docs.impl.augmenter;
21
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import org.apache.commons.lang3.StringUtils;
26
27 import com.google.common.collect.ImmutableMap;
28
29 import io.wcm.caravan.hal.docs.impl.model.LinkRelation;
30 import io.wcm.caravan.hal.docs.impl.model.Service;
31
32
33
34
35 class DocsMetadata {
36
37 private final Map<String, String> curieLinks;
38 private final Map<String, String> linkRelationTitles;
39
40
41
42
43
44 DocsMetadata(Service serviceModel, String docsPath) {
45 curieLinks = buildCurieLinkMap(serviceModel, docsPath);
46 linkRelationTitles = buildLinkRelationTitlesMap(serviceModel);
47 }
48
49 private static Map<String, String> buildCurieLinkMap(Service serviceModel, String docsPath) {
50 Map<String, String> map = new HashMap<>();
51
52 serviceModel.getLinkRelations().stream()
53 .map(rel -> CurieUtil.getCurieName(rel.getRel()))
54 .filter(StringUtils::isNotEmpty)
55 .forEach(curie -> map.put(curie, CurieUtil.toDocTemplate(docsPath, curie)));
56
57 return ImmutableMap.copyOf(map);
58 }
59
60 private static Map<String, String> buildLinkRelationTitlesMap(Service serviceModel) {
61 Map<String, String> map = new HashMap<>();
62
63 for (LinkRelation rel : serviceModel.getLinkRelations()) {
64 String title = rel.getShortDescription();
65 if (title != null) {
66 map.put(rel.getRel(), title);
67 }
68 }
69
70 return ImmutableMap.copyOf(map);
71 }
72
73 public String getCurieLink(String curie) {
74 return curieLinks.get(curie);
75 }
76
77 public String getLinkRelationTitle(String rel) {
78 return linkRelationTitles.get(rel);
79 }
80
81 }