3d3ad28891b92eba2ae222582afd905f252262a1
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / UnknownSchemaNodeBuilder.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.impl;
9
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
13
14 import org.opendaylight.controller.yang.common.QName;
15 import org.opendaylight.controller.yang.model.api.SchemaPath;
16 import org.opendaylight.controller.yang.model.api.Status;
17 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
18 import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
19
20 public final class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
21     private boolean isBuilt;
22     private final UnknownSchemaNodeImpl instance;
23     private final int line;
24     private final QName qname;
25     private SchemaPath schemaPath;
26     private String description;
27     private String reference;
28     private Status status = Status.CURRENT;
29     private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
30     private QName nodeType;
31     private String nodeParameter;
32
33     UnknownSchemaNodeBuilder(final QName qname, final int line) {
34         this.qname = qname;
35         this.line = line;
36         instance = new UnknownSchemaNodeImpl(qname);
37     }
38
39     @Override
40     public UnknownSchemaNode build() {
41         if (!isBuilt) {
42             instance.setPath(schemaPath);
43             instance.setNodeType(nodeType);
44             instance.setNodeParameter(nodeParameter);
45             instance.setDescription(description);
46             instance.setReference(reference);
47             instance.setStatus(status);
48
49             // UNKNOWN NODES
50             final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
51             for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
52                 unknownNodes.add(b.build());
53             }
54             instance.setUnknownSchemaNodes(unknownNodes);
55
56             isBuilt = true;
57         }
58
59         return instance;
60     }
61
62     @Override
63     public int getLine() {
64         return line;
65     }
66
67     @Override
68     public QName getQName() {
69         return qname;
70     }
71
72     @Override
73     public SchemaPath getPath() {
74         return schemaPath;
75     }
76
77     @Override
78     public void setPath(SchemaPath schemaPath) {
79         this.schemaPath = schemaPath;
80     }
81
82     @Override
83     public String getDescription() {
84         return description;
85     }
86
87     @Override
88     public void setDescription(final String description) {
89         this.description = description;
90     }
91
92     @Override
93     public String getReference() {
94         return reference;
95     }
96
97     @Override
98     public void setReference(String reference) {
99         this.reference = reference;
100     }
101
102     @Override
103     public Status getStatus() {
104         return status;
105     }
106
107     @Override
108     public void setStatus(Status status) {
109         if (status != null) {
110             this.status = status;
111         }
112     }
113
114     @Override
115     public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
116         addedUnknownNodes.add(unknownNode);
117     }
118
119     public QName getNodeType() {
120         return nodeType;
121     }
122
123     public void setNodeType(final QName nodeType) {
124         this.nodeType = nodeType;
125     }
126
127     public String getNodeParameter() {
128         return nodeParameter;
129     }
130
131     public void setNodeParameter(final String nodeParameter) {
132         this.nodeParameter = nodeParameter;
133     }
134
135     private final class UnknownSchemaNodeImpl implements UnknownSchemaNode {
136         private final QName qname;
137         private SchemaPath path;
138         private String description;
139         private String reference;
140         private Status status = Status.CURRENT;
141         private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
142         private QName nodeType;
143         private String nodeParameter;
144
145         private UnknownSchemaNodeImpl(final QName qname) {
146             this.qname = qname;
147         }
148
149         @Override
150         public QName getQName() {
151             return qname;
152         }
153
154         @Override
155         public SchemaPath getPath() {
156             return path;
157         }
158
159         private void setPath(final SchemaPath path) {
160             this.path = path;
161         }
162
163         @Override
164         public String getDescription() {
165             return description;
166         }
167
168         private void setDescription(final String description) {
169             this.description = description;
170         }
171
172         @Override
173         public String getReference() {
174             return reference;
175         }
176
177         private void setReference(final String reference) {
178             this.reference = reference;
179         }
180
181         @Override
182         public Status getStatus() {
183             return status;
184         }
185
186         private void setStatus(final Status status) {
187             if (status != null) {
188                 this.status = status;
189             }
190         }
191
192         @Override
193         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
194             return unknownNodes;
195         }
196
197         private void setUnknownSchemaNodes(final List<UnknownSchemaNode> unknownNodes) {
198             if (unknownNodes != null) {
199                 this.unknownNodes = unknownNodes;
200             }
201         }
202
203         @Override
204         public QName getNodeType() {
205             return nodeType;
206         }
207
208         private void setNodeType(final QName nodeType) {
209             this.nodeType = nodeType;
210         }
211
212         @Override
213         public String getNodeParameter() {
214             return nodeParameter;
215         }
216
217         private void setNodeParameter(final String nodeParameter) {
218             this.nodeParameter = nodeParameter;
219         }
220     }
221
222 }