116f82e8d8ce6d51ef7011d94518675b361f61ee
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / api / AbstractDataNodeContainerBuilder.java
1 /*
2  * Copyright (c) 2013 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.controller.yang.parser.builder.api;
9
10 import java.util.HashSet;
11 import java.util.Set;
12
13 import org.opendaylight.controller.yang.common.QName;
14 import org.opendaylight.controller.yang.model.api.DataSchemaNode;
15 import org.opendaylight.controller.yang.model.api.GroupingDefinition;
16
17 public abstract class AbstractDataNodeContainerBuilder implements DataNodeContainerBuilder {
18     protected final int line;
19     protected final QName qname;
20     protected Builder parent;
21
22     protected Set<DataSchemaNode> childNodes;
23     protected final Set<DataSchemaNodeBuilder> addedChildNodes = new HashSet<DataSchemaNodeBuilder>();
24
25     protected Set<GroupingDefinition> groupings;
26     protected final Set<GroupingBuilder> addedGroupings = new HashSet<GroupingBuilder>();
27
28     protected AbstractDataNodeContainerBuilder(final int line, final QName qname) {
29         this.line = line;
30         this.qname = qname;
31     }
32
33     @Override
34     public int getLine() {
35         return line;
36     }
37
38     @Override
39     public Builder getParent() {
40         return parent;
41     }
42
43     @Override
44     public void setParent(final Builder parent) {
45         this.parent = parent;
46     }
47
48     @Override
49     public QName getQName() {
50         return qname;
51     }
52
53     @Override
54     public Set<DataSchemaNode> getChildNodes() {
55         return childNodes;
56     }
57
58     public void setChildNodes(Set<DataSchemaNode> childNodes) {
59         this.childNodes = childNodes;
60     }
61
62     @Override
63     public Set<DataSchemaNodeBuilder> getChildNodeBuilders() {
64         return addedChildNodes;
65     }
66
67     @Override
68     public DataSchemaNodeBuilder getDataChildByName(final String name) {
69         for(DataSchemaNodeBuilder child : addedChildNodes) {
70             if(child.getQName().getLocalName().equals(name)) {
71                 return child;
72             }
73         }
74         return null;
75     }
76
77     @Override
78     public void addChildNode(DataSchemaNodeBuilder childNode) {
79         addedChildNodes.add(childNode);
80     }
81
82     @Override
83     public Set<GroupingDefinition> getGroupings() {
84         return groupings;
85     }
86
87     public void setGroupings(final Set<GroupingDefinition> groupings) {
88         this.groupings = groupings;
89     }
90
91     public Set<GroupingBuilder> getGroupingBuilders() {
92         return addedGroupings;
93     }
94
95     @Override
96     public void addGrouping(GroupingBuilder grouping) {
97         addedGroupings.add(grouping);
98     }
99
100 }