Package: AbstractPathExpression
AbstractPathExpression
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AbstractPathExpression(Class, AbstractPathExpression, Metamodel, CriteriaBuilder) |
|
|
|
|
|
||||||||||||||||||||
getAttr(SingularAttribute) |
|
|
|
|
|
||||||||||||||||||||
getAttr(String) |
|
|
|
|
|
||||||||||||||||||||
getParentPath() |
|
|
|
|
|
Coverage
1: /**
2: * Copyright (C) 2023 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.query.criteria.expressions;
16:
17: import cz.cvut.kbss.jopa.model.metamodel.EntityType;
18: import cz.cvut.kbss.jopa.model.metamodel.FieldSpecification;
19: import cz.cvut.kbss.jopa.model.metamodel.Metamodel;
20: import cz.cvut.kbss.jopa.model.metamodel.SingularAttribute;
21: import cz.cvut.kbss.jopa.model.query.criteria.Path;
22: import cz.cvut.kbss.jopa.query.criteria.PathImpl;
23: import cz.cvut.kbss.jopa.sessions.CriteriaBuilder;
24:
25: public abstract class AbstractPathExpression<X> extends AbstractExpression<X> implements Path<X> {
26:
27: protected AbstractPathExpression pathSource;
28: protected final Metamodel metamodel;
29:
30: public AbstractPathExpression(Class<X> type, AbstractPathExpression pathSource, Metamodel metamodel, CriteriaBuilder cb) {
31: super(type, cb);
32: this.pathSource = pathSource;
33: this.metamodel = metamodel;
34: }
35:
36: public <Y> Path<Y> getAttr(String attributeName) {
37: final EntityType<X> et = metamodel.entity(type);
38: final FieldSpecification<? super X, ?> fs;
39:• if (et.getIdentifier().getName().equals(attributeName)) {
40: fs = et.getIdentifier();
41: } else {
42: fs = et.getAttribute(attributeName);
43: }
44: return new PathImpl<>(this.metamodel, this, fs, this.cb);
45: }
46:
47: public <Y> Path<Y> getAttr(SingularAttribute<? super X, Y> attribute) {
48: return new PathImpl<>(this.metamodel, this, attribute, this.cb);
49: }
50:
51:
52: public Path<?> getParentPath() {
53: return this.pathSource;
54: }
55:
56: }
57:
58: