Skip to content

Package: ObjectConverter

ObjectConverter

nameinstructionbranchcomplexitylinemethod
ObjectConverter()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
ObjectConverter(boolean)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
convertToAttribute(Object)
M: 0 C: 37
100%
M: 0 C: 6
100%
M: 0 C: 4
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
convertToAxiomValue(Object)
M: 0 C: 13
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
doesPreferMultilingualString()
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%
supportsAxiomValueType(Class)
M: 2 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%

Coverage

1: package cz.cvut.kbss.jopa.oom.converter;
2:
3: import cz.cvut.kbss.jopa.model.MultilingualString;
4: import cz.cvut.kbss.jopa.utils.IdentifierTransformer;
5: import cz.cvut.kbss.ontodriver.model.LangString;
6: import cz.cvut.kbss.ontodriver.model.NamedResource;
7:
8: /**
9: * Allows to convert values between arbitrary types.
10: * <p>
11: * The main intended use is for annotation property mapping to attributes of type {@link Object}, which can hold both
12: * literal values and references to other individuals. In that case, the loaded instance is a {@link NamedResource} and
13: * needs to be transformed to a {@link java.net.URI} to prevent the internal OntoDriver API from leaking into the
14: * application.
15: * <p>
16: * Similarly, OntoDriver API's {@link LangString} is transformed to {@link MultilingualString}.
17: * <p>
18: * In all other cases, the values will be just returned without any conversion.
19: */
20: public class ObjectConverter implements ConverterWrapper<Object, Object> {
21:
22: private final boolean preferMultilingualString;
23:
24: public ObjectConverter() {
25: this.preferMultilingualString = false;
26: }
27:
28: public ObjectConverter(boolean preferMultilingualString) {
29: this.preferMultilingualString = preferMultilingualString;
30: }
31:
32: @Override
33: public Object convertToAxiomValue(Object value) {
34:• if (IdentifierTransformer.isValidIdentifierType(value.getClass()) && !(value instanceof String)) {
35: return NamedResource.create(IdentifierTransformer.valueAsUri(value));
36: }
37: return value;
38: }
39:
40: @Override
41: public Object convertToAttribute(Object value) {
42:• if (value instanceof NamedResource) {
43: return ((NamedResource) value).getIdentifier();
44:• } else if (value instanceof LangString) {
45: final LangString ls = (LangString) value;
46:• if (preferMultilingualString) {
47: final MultilingualString ms = new MultilingualString();
48: ms.set(ls.getLanguage().orElse(null), ls.getValue());
49: return ms;
50: } else {
51: return ls.getValue();
52: }
53: }
54: return value;
55: }
56:
57: @Override
58: public boolean supportsAxiomValueType(Class<?> type) {
59: return true;
60: }
61:
62: public boolean doesPreferMultilingualString() {
63: return preferMultilingualString;
64: }
65: }