Disconnect QNamePredicatedBuilder from Builder
[yangtools.git] / data / yang-data-tree-ri / src / main / java / org / opendaylight / yangtools / yang / data / tree / leafref / QNamePredicateBuilder.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.data.tree.leafref;
9
10 import org.eclipse.jdt.annotation.NonNull;
11 import org.opendaylight.yangtools.concepts.Mutable;
12 import org.opendaylight.yangtools.yang.common.QName;
13
14 final class QNamePredicateBuilder implements Mutable {
15     private QName identifier;
16     private LeafRefPath pathKeyExpression;
17
18     QNamePredicateBuilder() {
19         // Hidden on purspose
20     }
21
22     QNamePredicateBuilder(final QName identifier, final LeafRefPath pathKeyExpression) {
23         this.identifier = identifier;
24         this.pathKeyExpression = pathKeyExpression;
25     }
26
27     public QName getIdentifier() {
28         return identifier;
29     }
30
31     public void setIdentifier(final QName identifier) {
32         this.identifier = identifier;
33     }
34
35     public LeafRefPath getPathKeyExpression() {
36         return pathKeyExpression;
37     }
38
39     public void setPathKeyExpression(final LeafRefPath pathKeyExpression) {
40         this.pathKeyExpression = pathKeyExpression;
41     }
42
43     public @NonNull QNamePredicate build() {
44         return new QNamePredicateImpl(identifier, pathKeyExpression);
45     }
46
47     @Override
48     public String toString() {
49         final StringBuilder sb = new StringBuilder();
50         sb.append('[');
51
52         sb.append(identifier);
53         sb.append("=current()");
54
55         for (final QNameWithPredicate qname : pathKeyExpression.getPathFromRoot()) {
56             sb.append('/').append(qname);
57         }
58
59         sb.append(']');
60         return sb.toString();
61     }
62 }