fe039b2394807037fbb6e0568f8f16c049f780e2
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / model / parser / builder / impl / LeafSchemaNodeBuilder.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.model.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.ConstraintDefinition;
16 import org.opendaylight.controller.yang.model.api.LeafSchemaNode;
17 import org.opendaylight.controller.yang.model.api.SchemaPath;
18 import org.opendaylight.controller.yang.model.api.Status;
19 import org.opendaylight.controller.yang.model.api.TypeDefinition;
20 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
21 import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
22 import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
23 import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
24
25 public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements
26         DataSchemaNodeBuilder, SchemaNodeBuilder {
27     private final QName qname;
28     private SchemaPath path;
29     private final LeafSchemaNodeImpl instance;
30     private final ConstraintsBuilder constraints = new ConstraintsBuilder();
31     private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
32
33     private String description;
34     private String reference;
35     private Status status = Status.CURRENT;
36     private boolean augmenting;
37     private boolean configuration;
38     private String defaultStr;
39     private String unitsStr;
40
41     public LeafSchemaNodeBuilder(final QName qname) {
42         this.qname = qname;
43         instance = new LeafSchemaNodeImpl(qname);
44     }
45
46     @Override
47     public LeafSchemaNode build() {
48         instance.setPath(path);
49         instance.setConstraints(constraints.build());
50         instance.setDescription(description);
51         instance.setReference(reference);
52         instance.setStatus(status);
53
54         // TYPE
55         if (type == null) {
56             instance.setType(typedef.build());
57         } else {
58             instance.setType(type);
59         }
60
61         // UNKNOWN NODES
62         final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
63         for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
64             unknownNodes.add(b.build());
65         }
66         instance.setUnknownSchemaNodes(unknownNodes);
67
68         instance.setAugmenting(augmenting);
69         instance.setConfiguration(configuration);
70         instance.setDefault(defaultStr);
71         instance.setUnits(unitsStr);
72         return instance;
73     }
74
75     @Override
76     public QName getQName() {
77         return qname;
78     }
79
80     public SchemaPath getPath() {
81         return path;
82     }
83
84     @Override
85     public void setPath(final SchemaPath path) {
86         this.path = path;
87     }
88
89     @Override
90     public ConstraintsBuilder getConstraints() {
91         return constraints;
92     }
93
94     @Override
95     public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
96         addedUnknownNodes.add(unknownNode);
97     }
98
99     public List<UnknownSchemaNodeBuilder> getUnknownNodes() {
100         return addedUnknownNodes;
101     }
102
103     public String getDescription() {
104         return description;
105     }
106
107     @Override
108     public void setDescription(final String description) {
109         this.description = description;
110     }
111
112     public String getReference() {
113         return reference;
114     }
115
116     @Override
117     public void setReference(final String reference) {
118         this.reference = reference;
119     }
120
121     public Status getStatus() {
122         return status;
123     }
124
125     @Override
126     public void setStatus(final Status status) {
127         if (status != null) {
128             this.status = status;
129         }
130     }
131
132     public boolean isAugmenting() {
133         return augmenting;
134     }
135
136     @Override
137     public void setAugmenting(final boolean augmenting) {
138         this.augmenting = augmenting;
139     }
140
141     public boolean isConfiguration() {
142         return configuration;
143     }
144
145     @Override
146     public void setConfiguration(final boolean configuration) {
147         instance.setConfiguration(configuration);
148     }
149
150     public String getDefaultStr() {
151         return defaultStr;
152     }
153
154     public void setDefaultStr(String defaultStr) {
155         this.defaultStr = defaultStr;
156     }
157
158     public String getUnits() {
159         return unitsStr;
160     }
161
162     public void setUnits(String unitsStr) {
163         this.unitsStr = unitsStr;
164     }
165
166     private class LeafSchemaNodeImpl implements LeafSchemaNode {
167         private final QName qname;
168         private SchemaPath path;
169         private String description;
170         private String reference;
171         private Status status = Status.CURRENT;
172         private boolean augmenting;
173         private boolean configuration;
174         private ConstraintDefinition constraintsDef;
175         private TypeDefinition<?> type;
176         private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
177         private String defaultStr;
178         private String unitsStr;
179
180         private LeafSchemaNodeImpl(final QName qname) {
181             this.qname = qname;
182         }
183
184         @Override
185         public QName getQName() {
186             return qname;
187         }
188
189         @Override
190         public SchemaPath getPath() {
191             return path;
192         }
193
194         private void setPath(final SchemaPath path) {
195             this.path = path;
196         }
197
198         @Override
199         public String getDescription() {
200             return description;
201         }
202
203         private void setDescription(String description) {
204             this.description = description;
205         }
206
207         @Override
208         public String getReference() {
209             return reference;
210         }
211
212         private void setReference(String reference) {
213             this.reference = reference;
214         }
215
216         @Override
217         public Status getStatus() {
218             return status;
219         }
220
221         private void setStatus(Status status) {
222             if (status != null) {
223                 this.status = status;
224             }
225         }
226
227         @Override
228         public boolean isAugmenting() {
229             return augmenting;
230         }
231
232         private void setAugmenting(boolean augmenting) {
233             this.augmenting = augmenting;
234         }
235
236         @Override
237         public boolean isConfiguration() {
238             return configuration;
239         }
240
241         private void setConfiguration(boolean configuration) {
242             this.configuration = configuration;
243         }
244
245         @Override
246         public ConstraintDefinition getConstraints() {
247             return constraintsDef;
248         }
249
250         private void setConstraints(ConstraintDefinition constraintsDef) {
251             this.constraintsDef = constraintsDef;
252         }
253
254         @Override
255         public TypeDefinition<?> getType() {
256             return type;
257         }
258
259         private void setType(TypeDefinition<? extends TypeDefinition<?>> type) {
260             this.type = type;
261         }
262
263         @Override
264         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
265             return unknownNodes;
266         }
267
268         private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownNodes) {
269             if (unknownNodes != null) {
270                 this.unknownNodes = unknownNodes;
271             }
272         }
273
274         public String getDefault() {
275             return defaultStr;
276         }
277
278         private void setDefault(String defaultStr) {
279             this.defaultStr = defaultStr;
280         }
281
282         public String getUnits() {
283             return unitsStr;
284         }
285
286         public void setUnits(String unitsStr) {
287             this.unitsStr = unitsStr;
288         }
289
290         @Override
291         public int hashCode() {
292             final int prime = 31;
293             int result = 1;
294             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
295             result = prime * result + ((path == null) ? 0 : path.hashCode());
296             return result;
297         }
298
299         @Override
300         public boolean equals(Object obj) {
301             if (this == obj) {
302                 return true;
303             }
304             if (obj == null) {
305                 return false;
306             }
307             if (getClass() != obj.getClass()) {
308                 return false;
309             }
310             LeafSchemaNodeImpl other = (LeafSchemaNodeImpl) obj;
311             if (qname == null) {
312                 if (other.qname != null) {
313                     return false;
314                 }
315             } else if (!qname.equals(other.qname)) {
316                 return false;
317             }
318             if (path == null) {
319                 if (other.path != null) {
320                     return false;
321                 }
322             } else if (!path.equals(other.path)) {
323                 return false;
324             }
325             return true;
326         }
327
328         @Override
329         public String toString() {
330             StringBuilder sb = new StringBuilder(
331                     LeafSchemaNodeImpl.class.getSimpleName());
332             sb.append("[");
333             sb.append("qname=" + qname);
334             sb.append(", path=" + path);
335             sb.append("]");
336             return sb.toString();
337         }
338     }
339
340 }