Skip to content

Package: ContextBuildingPluralMultilingualStringSerializer

ContextBuildingPluralMultilingualStringSerializer

nameinstructionbranchcomplexitylinemethod
ContextBuildingPluralMultilingualStringSerializer()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$serialize$0(Map, String, String)
M: 0 C: 15
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
lambda$serialize$1(Map, MultilingualString)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$serialize$2(CollectionNode, String)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$serialize$3(ObjectNode, String, Set)
M: 0 C: 29
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
registerTermMapping(SerializationContext)
M: 0 C: 19
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
serialize(Collection, SerializationContext)
M: 1 C: 27
96%
M: 2 C: 2
50%
M: 2 C: 1
33%
M: 0 C: 7
100%
M: 0 C: 1
100%

Coverage

1: package cz.cvut.kbss.jsonld.serialization.serializer.context;
2:
3: import cz.cvut.kbss.jopa.model.MultilingualString;
4: import cz.cvut.kbss.jsonld.JsonLd;
5: import cz.cvut.kbss.jsonld.serialization.JsonNodeFactory;
6: import cz.cvut.kbss.jsonld.serialization.model.CollectionNode;
7: import cz.cvut.kbss.jsonld.serialization.model.ObjectNode;
8: import cz.cvut.kbss.jsonld.serialization.serializer.ValueSerializer;
9: import cz.cvut.kbss.jsonld.serialization.traversal.SerializationContext;
10:
11: import java.util.*;
12:
13: public class ContextBuildingPluralMultilingualStringSerializer implements ValueSerializer<Collection<MultilingualString>> {
14:
15: @Override
16: public ObjectNode serialize(Collection<MultilingualString> value,
17: SerializationContext<Collection<MultilingualString>> ctx) {
18:• if (ctx.getTerm() != null) {
19: registerTermMapping(ctx);
20: }
21: final Map<String, Set<String>> allValues = new HashMap<>();
22: value.forEach(ms -> ms.getValue().forEach((lang, text) -> {
23: allValues.putIfAbsent(lang, new LinkedHashSet<>());
24: allValues.get(lang).add(text);
25: }));
26:• final ObjectNode node = ctx.getField() != null ? JsonNodeFactory.createObjectNode(ctx.getTerm()) : JsonNodeFactory.createObjectNode();
27: allValues.forEach((lang, texts) -> {
28:• final String langKey = lang != null ? lang : JsonLd.NONE;
29:• if (texts.size() == 1) {
30: node.addItem(JsonNodeFactory.createLiteralNode(langKey, texts.iterator().next()));
31: } else {
32: final CollectionNode<?> translations = JsonNodeFactory.createCollectionNodeFromArray(langKey);
33: texts.forEach(t -> translations.addItem(JsonNodeFactory.createLiteralNode(t)));
34: node.addItem(translations);
35: }
36: });
37: return node;
38: }
39:
40: static void registerTermMapping(SerializationContext<Collection<MultilingualString>> ctx) {
41: final ObjectNode mapping = JsonNodeFactory.createObjectNode();
42: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.ID, ctx.getTerm()));
43: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.TYPE, JsonLd.LANGUAGE));
44: ctx.registerTermMapping(ctx.getFieldName(), mapping);
45: }
46: }