Skip to content

Package: AbstractAttribute

AbstractAttribute

nameinstructionbranchcomplexitylinemethod
AbstractAttribute(AbstractAttribute.AbstractAttributeBuilder)
M: 0 C: 63
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 17
100%
M: 0 C: 1
100%
getCascadeTypes()
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%
getConstraints()
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%
getConverter()
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%
getDatatype()
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%
getDeclaringType()
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%
getFetchType()
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%
getIRI()
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%
getJavaField()
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%
getJavaMember()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getLanguage()
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%
getName()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPersistentAttributeType()
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%
hasLanguage()
M: 0 C: 17
100%
M: 0 C: 8
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
includeExplicit()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
isInferred()
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%
isLexicalForm()
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%
isNonEmpty()
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%
isSimpleLiteral()
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%
toString()
M: 0 C: 15
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2022 Czech Technical University in Prague
3: *
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: *
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.model.metamodel;
16:
17: import cz.cvut.kbss.jopa.model.IRI;
18: import cz.cvut.kbss.jopa.model.annotations.CascadeType;
19: import cz.cvut.kbss.jopa.model.annotations.FetchType;
20: import cz.cvut.kbss.jopa.model.annotations.ParticipationConstraint;
21: import cz.cvut.kbss.jopa.oom.converter.ConverterWrapper;
22:
23: import java.lang.reflect.Field;
24: import java.lang.reflect.Member;
25:
26: public abstract class AbstractAttribute<X, Y> implements Attribute<X, Y> {
27:
28: private final Field field;
29:
30: private final ManagedType<X> declaringType;
31:
32: private final PersistentAttributeType attributeType;
33:
34: private final IRI iri;
35:
36: private final CascadeType[] cascadeTypes;
37:
38: private final FetchType fetchType;
39:
40: private final boolean inferred;
41:
42: private final boolean includeExplicit;
43:
44: private final boolean nonEmpty;
45:
46: private final boolean lexicalForm;
47:
48: private final boolean simpleLiteral;
49:
50: private final String datatype;
51:
52: private final String language;
53:
54: private final ParticipationConstraint[] constraints;
55:
56: private final ConverterWrapper converter;
57:
58: AbstractAttribute(AbstractAttributeBuilder<X, Y> builder) {
59: this.field = builder.field;
60: this.declaringType = builder.declaringType;
61: this.attributeType = builder.attributeType;
62: this.iri = builder.iri;
63: this.cascadeTypes = builder.cascadeTypes;
64: this.fetchType = builder.fetchType;
65: this.inferred = builder.inferred;
66: this.includeExplicit = builder.includeExplicit;
67: this.constraints = builder.constraints;
68: this.nonEmpty = builder.nonEmpty;
69: this.converter = builder.converter;
70: this.lexicalForm = builder.lexicalForm;
71: this.simpleLiteral = builder.simpleLiteral;
72: this.language = builder.language;
73: this.datatype = builder.datatype;
74: }
75:
76: @Override
77: public PersistentAttributeType getPersistentAttributeType() {
78: return attributeType;
79: }
80:
81: @Override
82: public Member getJavaMember() {
83: return field;
84: }
85:
86: @Override
87: public IRI getIRI() {
88: return iri;
89: }
90:
91: @Override
92: public CascadeType[] getCascadeTypes() {
93: return cascadeTypes;
94: }
95:
96: @Override
97: public boolean isNonEmpty() {
98: return nonEmpty;
99: }
100:
101: @Override
102: public ParticipationConstraint[] getConstraints() {
103: return constraints;
104: }
105:
106: @Override
107: public ManagedType<X> getDeclaringType() {
108: return declaringType;
109: }
110:
111: @Override
112: public Field getJavaField() {
113: return field;
114: }
115:
116: @Override
117: public FetchType getFetchType() {
118: return fetchType;
119: }
120:
121: @Override
122: public boolean isInferred() {
123: return inferred;
124: }
125:
126: @Override
127: public boolean includeExplicit() {
128: return includeExplicit;
129: }
130:
131: @Override
132: public boolean isLexicalForm() {
133: return lexicalForm;
134: }
135:
136: @Override
137: public boolean isSimpleLiteral() {
138: return simpleLiteral;
139: }
140:
141: @Override
142: public boolean hasLanguage() {
143:• return language != null && !simpleLiteral && !lexicalForm && attributeType != PersistentAttributeType.OBJECT;
144: }
145:
146: @Override
147: public String getLanguage() {
148: return language;
149: }
150:
151: @Override
152: public String getName() {
153: return field.getName();
154: }
155:
156: public ConverterWrapper getConverter() {
157: return converter;
158: }
159:
160: @Override
161: public String toString() {
162: return declaringType.getJavaType().getSimpleName() + "." + getName();
163: }
164:
165: @Override
166: public String getDatatype() {
167: return datatype;
168: }
169:
170: abstract static class AbstractAttributeBuilder<X, Y> {
171: private Field field;
172: private ManagedType<X> declaringType;
173: private PersistentAttributeType attributeType;
174: private IRI iri;
175: private CascadeType[] cascadeTypes;
176: private FetchType fetchType;
177: private boolean inferred;
178: private boolean includeExplicit;
179: private boolean nonEmpty = false;
180: private boolean lexicalForm = false;
181: private boolean simpleLiteral = false;
182: private String datatype;
183: private String language;
184: private ParticipationConstraint[] constraints;
185: private ConverterWrapper converter;
186:
187: FieldMappingValidator mappingValidator;
188:
189: public AbstractAttributeBuilder<X, Y> config(PropertyAttributes config) {
190: this.iri = config.getIri();
191: this.attributeType = config.getPersistentAttributeType();
192: this.cascadeTypes = config.getCascadeTypes();
193: this.constraints = config.getParticipationConstraints();
194: this.nonEmpty = config.isNonEmpty();
195: this.fetchType = config.getFetchType();
196: this.lexicalForm = config.isLexicalForm();
197: this.simpleLiteral = config.isSimpleLiteral();
198: this.datatype = config.hasDatatype() ? config.getDatatype() : null;
199: this.language = config.getLanguage();
200: this.mappingValidator = config.validator;
201: return this;
202: }
203:
204: public AbstractAttributeBuilder<X, Y> field(Field field) {
205: this.field = field;
206: return this;
207: }
208:
209: public AbstractAttributeBuilder<X, Y> declaringType(ManagedType<X> declaringType) {
210: this.declaringType = declaringType;
211: return this;
212: }
213:
214: public AbstractAttributeBuilder<X, Y> inferred(boolean inferred) {
215: this.inferred = inferred;
216: return this;
217: }
218:
219: public AbstractAttributeBuilder<X, Y> includeExplicit(boolean includeExplicit) {
220: this.includeExplicit = includeExplicit;
221: return this;
222: }
223:
224: public AbstractAttributeBuilder<X, Y> converter(ConverterWrapper converter) {
225: this.converter = converter;
226: return this;
227: }
228:
229: public abstract AbstractAttribute<X, Y> build();
230: }
231: }