Package: ContextBuildingPluralMultilingualStringSerializer
ContextBuildingPluralMultilingualStringSerializer
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ContextBuildingPluralMultilingualStringSerializer() |
|
|
|
|
|
||||||||||||||||||||
lambda$serialize$0(Map, String, String) |
|
|
|
|
|
||||||||||||||||||||
lambda$serialize$1(Map, MultilingualString) |
|
|
|
|
|
||||||||||||||||||||
lambda$serialize$2(CollectionNode, String) |
|
|
|
|
|
||||||||||||||||||||
lambda$serialize$3(ObjectNode, String, Set) |
|
|
|
|
|
||||||||||||||||||||
registerTermMapping(SerializationContext) |
|
|
|
|
|
||||||||||||||||||||
serialize(Collection, SerializationContext) |
|
|
|
|
|
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(ctx.getFieldName());
42: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.ID, ctx.getTerm()));
43: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.CONTAINER, JsonLd.LANGUAGE));
44: ctx.registerTermMapping(ctx.getFieldName(), mapping);
45: }
46: }