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