Refactored SchemaPath for yang java types. Fixed SchemaPath for augmented nodes types.
[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 final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
27     private QName nodeType;
28     private String nodeParameter;
29
30     UnknownSchemaNodeBuilder(final QName qname, final int line) {
31         this.qname = qname;
32         this.line = line;
33         instance = new UnknownSchemaNodeImpl(qname);
34     }
35
36     @Override
37     public UnknownSchemaNode build() {
38         if(!isBuilt) {
39             instance.setPath(schemaPath);
40             instance.setNodeType(nodeType);
41             instance.setNodeParameter(nodeParameter);
42
43             // UNKNOWN NODES
44             final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
45             for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
46                 unknownNodes.add(b.build());
47             }
48             instance.setUnknownSchemaNodes(unknownNodes);
49
50             isBuilt = true;
51         }
52
53         return instance;
54     }
55
56     @Override
57     public int getLine() {
58         return line;
59     }
60
61     @Override
62     public QName getQName() {
63         return qname;
64     }
65
66     @Override
67     public SchemaPath getPath() {
68         return schemaPath;
69     }
70
71     @Override
72     public void setPath(SchemaPath schemaPath) {
73         this.schemaPath = schemaPath;
74     }
75
76     @Override
77     public void setDescription(final String description) {
78         instance.setDescription(description);
79     }
80
81     @Override
82     public void setReference(final String reference) {
83         instance.setReference(reference);
84     }
85
86     @Override
87     public void setStatus(final Status status) {
88         instance.setStatus(status);
89     }
90
91     @Override
92     public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
93         addedUnknownNodes.add(unknownNode);
94     }
95
96     public QName getNodeType() {
97         return nodeType;
98     }
99
100     public void setNodeType(final QName nodeType) {
101         this.nodeType = nodeType;
102     }
103
104     public String getNodeParameter() {
105         return nodeParameter;
106     }
107
108     public void setNodeParameter(final String nodeParameter) {
109         this.nodeParameter = nodeParameter;
110     }
111
112     private final class UnknownSchemaNodeImpl implements UnknownSchemaNode {
113         private final QName qname;
114         private SchemaPath path;
115         private String description;
116         private String reference;
117         private Status status = Status.CURRENT;
118         private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
119         private QName nodeType;
120         private String nodeParameter;
121
122         private UnknownSchemaNodeImpl(final QName qname) {
123             this.qname = qname;
124         }
125
126         @Override
127         public QName getQName() {
128             return qname;
129         }
130
131         @Override
132         public SchemaPath getPath() {
133             return path;
134         }
135
136         private void setPath(final SchemaPath path) {
137             this.path = path;
138         }
139
140         @Override
141         public String getDescription() {
142             return description;
143         }
144
145         private void setDescription(final String description) {
146             this.description = description;
147         }
148
149         @Override
150         public String getReference() {
151             return reference;
152         }
153
154         private void setReference(final String reference) {
155             this.reference = reference;
156         }
157
158         @Override
159         public Status getStatus() {
160             return status;
161         }
162
163         private void setStatus(final Status status) {
164             if (status != null) {
165                 this.status = status;
166             }
167         }
168
169         @Override
170         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
171             return unknownNodes;
172         }
173
174         private void setUnknownSchemaNodes(
175                 final List<UnknownSchemaNode> unknownNodes) {
176             if (unknownNodes != null) {
177                 this.unknownNodes = unknownNodes;
178             }
179         }
180
181         @Override
182         public QName getNodeType() {
183             return nodeType;
184         }
185
186         private void setNodeType(final QName nodeType) {
187             this.nodeType = nodeType;
188         }
189
190         @Override
191         public String getNodeParameter() {
192             return nodeParameter;
193         }
194
195         private void setNodeParameter(final String nodeParameter) {
196             this.nodeParameter = nodeParameter;
197         }
198     }
199
200 }