Skip to content

Method: lambda$serialize$0(ObjectNode, String, String)

1: /*
2: * JB4JSON-LD
3: * Copyright (C) 2023 Czech Technical University in Prague
4: *
5: * This library is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public
7: * License as published by the Free Software Foundation; either
8: * version 3.0 of the License, or (at your option) any later version.
9: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library.
17: */
18: package cz.cvut.kbss.jsonld.serialization.serializer.context;
19:
20: import cz.cvut.kbss.jopa.model.MultilingualString;
21: import cz.cvut.kbss.jsonld.JsonLd;
22: import cz.cvut.kbss.jsonld.serialization.JsonNodeFactory;
23: import cz.cvut.kbss.jsonld.serialization.model.ObjectNode;
24: import cz.cvut.kbss.jsonld.serialization.serializer.ValueSerializer;
25: import cz.cvut.kbss.jsonld.serialization.traversal.SerializationContext;
26:
27: /**
28: * This is used to serialize {@link MultilingualString} values.
29: */
30: public class ContextBuildingMultilingualStringSerializer implements ValueSerializer<MultilingualString> {
31:
32: @Override
33: public ObjectNode serialize(MultilingualString value, SerializationContext<MultilingualString> ctx) {
34: if (ctx.getTerm() != null) {
35: registerTermMapping(ctx);
36: }
37: final ObjectNode node = JsonNodeFactory.createObjectNode(ctx.getFieldName());
38:• value.getValue().forEach((lang, text) -> node.addItem(JsonNodeFactory.createLiteralNode(lang != null ? lang : JsonLd.NONE, text)));
39: return node;
40: }
41:
42: static void registerTermMapping(SerializationContext<MultilingualString> ctx) {
43: final ObjectNode mapping = JsonNodeFactory.createObjectNode(ctx.getFieldName());
44: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.ID, ctx.getTerm()));
45: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.CONTAINER, JsonLd.LANGUAGE));
46: ctx.registerTermMapping(ctx.getFieldName(), mapping);
47: }
48: }