Bug 2366 - Effective statments impl merge, retest & bugfix
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / CaseShorthandImpl.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.parser.stmt.rfc6020.effective;
9
10 import com.google.common.collect.Iterables;
11 import java.util.Collections;
12 import java.util.Arrays;
13 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
14 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
15 import org.opendaylight.yangtools.yang.model.api.Status;
16 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
17 import org.opendaylight.yangtools.yang.model.api.UsesNode;
18 import java.util.Collection;
19 import java.util.List;
20 import java.util.Set;
21 import org.opendaylight.yangtools.yang.common.QName;
22 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
23 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
24 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
25 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
26 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
27
28 public class CaseShorthandImpl implements ChoiceCaseNode {
29
30     private final DataSchemaNode caseShorthandNode;
31     private final QName qName;
32     private final SchemaPath path;
33
34     public CaseShorthandImpl(DataSchemaNode caseShorthandNode) {
35         this.caseShorthandNode = caseShorthandNode;
36         this.qName = caseShorthandNode.getQName();
37
38         SchemaPath caseShorthandNodePath = caseShorthandNode.getPath();
39         Iterable<QName> pathFromRoot = caseShorthandNodePath.getPathFromRoot();
40         this.path = SchemaPath
41                 .create(Iterables.limit(pathFromRoot,
42                         Iterables.size(pathFromRoot) - 1),
43                         caseShorthandNodePath.isAbsolute());
44     }
45
46     @Override
47     public boolean isAugmenting() {
48         return caseShorthandNode.isAugmenting();
49     }
50
51     @Override
52     public boolean isAddedByUses() {
53         return caseShorthandNode.isAddedByUses();
54     }
55
56     @Override
57     public boolean isConfiguration() {
58         return caseShorthandNode.isConfiguration();
59     }
60
61     @Override
62     public ConstraintDefinition getConstraints() {
63         return caseShorthandNode.getConstraints();
64     }
65
66     @Override
67     public QName getQName() {
68         return caseShorthandNode.getQName();
69     }
70
71     @Override
72     public SchemaPath getPath() {
73         return path;
74     }
75
76     @Override
77     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
78         return caseShorthandNode.getUnknownSchemaNodes();
79     }
80
81     @Override
82     public String getDescription() {
83         return caseShorthandNode.getDescription();
84     }
85
86     @Override
87     public String getReference() {
88         return caseShorthandNode.getReference();
89     }
90
91     @Override
92     public Status getStatus() {
93         return caseShorthandNode.getStatus();
94     }
95
96     @Override
97     public Set<TypeDefinition<?>> getTypeDefinitions() {
98         return Collections.emptySet();
99     }
100
101     @Override
102     public Collection<DataSchemaNode> getChildNodes() {
103         return Arrays.asList(caseShorthandNode);
104     }
105
106     @Override
107     public Set<GroupingDefinition> getGroupings() {
108         return Collections.emptySet();
109     }
110
111     @Override
112     public DataSchemaNode getDataChildByName(QName name) {
113         if (qName.equals(name)) {
114             return caseShorthandNode;
115         } else {
116             return null;
117         }
118     }
119
120     @Override
121     public DataSchemaNode getDataChildByName(String name) {
122         if (qName.getLocalName().equals(name)) {
123             return caseShorthandNode;
124         } else {
125             return null;
126         }
127     }
128
129     @Override
130     public Set<UsesNode> getUses() {
131         return Collections.emptySet();
132     }
133
134     @Override
135     public Set<AugmentationSchema> getAvailableAugmentations() {
136         return Collections.emptySet();
137     }
138 }