Merge "BUG 428 remove importing unnecessary imports"
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / util / AbstractDocumentedDataNodeContainer.java
1 package org.opendaylight.yangtools.yang.parser.builder.util;
2
3 import com.google.common.collect.ImmutableMap;
4 import com.google.common.collect.ImmutableSet;
5 import java.util.Map;
6 import java.util.Set;
7 import org.opendaylight.yangtools.yang.common.QName;
8 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
9 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
10 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
11 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
12 import org.opendaylight.yangtools.yang.model.api.UsesNode;
13
14 public abstract class AbstractDocumentedDataNodeContainer extends AbstractDocumentedNode implements DataNodeContainer {
15
16     protected final Map<QName, DataSchemaNode> childNodes;
17     private final Set<GroupingDefinition> groupings;
18     private final Set<UsesNode> uses;
19     private final Set<TypeDefinition<?>> typeDefinitions;
20
21     protected AbstractDocumentedDataNodeContainer(final AbstractDocumentedDataNodeContainerBuilder data) {
22         super(data);
23         // FIXME : Should be unmodifiable ordered set (ordered by QName... or appearance in YANG file).
24         // consider using new TreeSet<>(Comparators.SCHEMA_NODE_COMP);
25
26         childNodes = ImmutableMap.copyOf(data.getChildNodes());
27         groupings = ImmutableSet.copyOf(data.getGroupings());
28         uses = ImmutableSet.copyOf(data.getUsesNodes());
29         typeDefinitions = ImmutableSet.copyOf(data.getTypeDefinitions());
30     }
31
32     @Override
33     public final Set<TypeDefinition<?>> getTypeDefinitions() {
34         return typeDefinitions;
35     }
36
37     @Override
38     public final Set<DataSchemaNode> getChildNodes() {
39         return ImmutableSet.copyOf(childNodes.values());
40     }
41
42     @Override
43     public final Set<GroupingDefinition> getGroupings() {
44         return groupings;
45     }
46
47     @Override
48     public final DataSchemaNode getDataChildByName(final QName name) {
49         for (DataSchemaNode node : childNodes.values()) {
50             if (node.getQName().equals(name)) {
51                 return node;
52             }
53         }
54         return null;
55     }
56
57     @Override
58     public final DataSchemaNode getDataChildByName(final String name) {
59         for (DataSchemaNode node : childNodes.values()) {
60             if (node.getQName().getLocalName().equals(name)) {
61                 return node;
62             }
63         }
64         return null;
65     }
66
67     @Override
68     public Set<UsesNode> getUses() {
69         return uses;
70     }
71
72 }