Skip to content

Package: MultilingualStringInstanceBuilder

MultilingualStringInstanceBuilder

nameinstructionbranchcomplexitylinemethod
MultilingualStringInstanceBuilder(CloneBuilder, UnitOfWork)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
buildClone(Object, Field, Object, CloneConfiguration)
M: 4 C: 31
89%
M: 1 C: 5
83%
M: 1 C: 3
75%
M: 0 C: 7
100%
M: 0 C: 1
100%
mergeChanges(Field, Object, Object, Object)
M: 0 C: 23
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
populatesAttributes()
M: 0 C: 2
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
static {...}
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /*
2: * JOPA
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.jopa.sessions;
19:
20: import cz.cvut.kbss.jopa.proxy.change.ChangeTrackingIndirectMultilingualString;
21: import cz.cvut.kbss.jopa.model.MultilingualString;
22: import cz.cvut.kbss.jopa.sessions.util.CloneConfiguration;
23: import cz.cvut.kbss.jopa.utils.EntityPropertiesUtils;
24:
25: import java.lang.reflect.Field;
26:
27: class MultilingualStringInstanceBuilder extends AbstractInstanceBuilder {
28:
29: MultilingualStringInstanceBuilder(CloneBuilder builder, UnitOfWork uow) {
30: super(builder, uow);
31: }
32:
33: @Override
34: Object buildClone(Object cloneOwner, Field field, Object original, CloneConfiguration cloneConfiguration) {
35:• if (original == null) {
36: return null;
37: }
38:• assert original instanceof MultilingualString;
39: MultilingualString orig = (MultilingualString) original;
40:• if (orig instanceof ChangeTrackingIndirectMultilingualString) {
41: orig = ((ChangeTrackingIndirectMultilingualString) orig).unwrap();
42: }
43: return new ChangeTrackingIndirectMultilingualString(cloneOwner, field, uow, new MultilingualString(orig.getValue()));
44: }
45:
46: @Override
47: void mergeChanges(Field field, Object target, Object originalValue, Object cloneValue) {
48: MultilingualString clone = (MultilingualString) cloneValue;
49:• if (clone instanceof ChangeTrackingIndirectMultilingualString) {
50: clone = ((ChangeTrackingIndirectMultilingualString) clone).unwrap();
51: }
52: EntityPropertiesUtils
53:• .setFieldValue(field, target, clone != null ? new MultilingualString(clone.getValue()) : null);
54: }
55:
56: @Override
57: boolean populatesAttributes() {
58: return true;
59: }
60: }