384f6c34a7252ce1b6d1255100a37111d7da6bef
[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.opendaylight.yangtools.concepts.Builder;
11 import org.opendaylight.yangtools.yang.common.QName;
12
13 class QNamePredicateBuilder implements Builder<QNamePredicate> {
14
15     private QName identifier;
16     private LeafRefPath pathKeyExpression;
17
18     QNamePredicateBuilder() {
19     }
20
21     QNamePredicateBuilder(final QName identifier, final LeafRefPath pathKeyExpression) {
22         this.identifier = identifier;
23         this.pathKeyExpression = pathKeyExpression;
24     }
25
26     public QName getIdentifier() {
27         return identifier;
28     }
29
30     public void setIdentifier(final QName identifier) {
31         this.identifier = identifier;
32     }
33
34     public LeafRefPath getPathKeyExpression() {
35         return pathKeyExpression;
36     }
37
38     public void setPathKeyExpression(final LeafRefPath pathKeyExpression) {
39         this.pathKeyExpression = pathKeyExpression;
40     }
41
42     @Override
43     public 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 }