2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.yang.parser.builder.impl;
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
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.parser.builder.api.AbstractTypeAwareBuilder;
22 import org.opendaylight.controller.yang.parser.builder.api.ConfigNode;
23 import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
24 import org.opendaylight.controller.yang.parser.builder.api.GroupingMember;
26 public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder implements DataSchemaNodeBuilder,
27 GroupingMember, ConfigNode {
28 private boolean isBuilt;
29 private final LeafListSchemaNodeImpl instance;
30 private final int line;
32 private final QName qname;
33 private SchemaPath schemaPath;
34 private String description;
35 private String reference;
36 private Status status = Status.CURRENT;
37 private List<UnknownSchemaNode> unknownNodes;
38 private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
39 // DataSchemaNode args
40 private boolean augmenting;
41 private boolean addedByUses;
42 private Boolean configuration;
43 private final ConstraintsBuilder constraints;
44 // LeafListSchemaNode args
45 private boolean userOrdered;
47 public LeafListSchemaNodeBuilder(final QName qname, final SchemaPath schemaPath, final int line) {
49 this.schemaPath = schemaPath;
51 instance = new LeafListSchemaNodeImpl(qname);
52 constraints = new ConstraintsBuilder(line);
55 public LeafListSchemaNodeBuilder(final LeafListSchemaNodeBuilder b) {
58 instance = new LeafListSchemaNodeImpl(qname);
61 typedef = b.getTypedef();
63 constraints = b.getConstraints();
64 schemaPath = b.getPath();
65 description = b.getDescription();
66 reference = b.getReference();
67 status = b.getStatus();
68 augmenting = b.isAugmenting();
69 addedByUses = b.isAddedByUses();
70 configuration = b.isConfiguration();
71 userOrdered = b.isUserOrdered();
72 unknownNodes = b.unknownNodes;
73 addedUnknownNodes.addAll(b.getUnknownNodes());
77 public LeafListSchemaNode build() {
79 instance.setConstraints(constraints.build());
80 instance.setPath(schemaPath);
81 instance.setDescription(description);
82 instance.setReference(reference);
83 instance.setStatus(status);
84 instance.setAugmenting(augmenting);
85 instance.setAddedByUses(addedByUses);
86 instance.setConfiguration(configuration);
87 instance.setUserOrdered(userOrdered);
90 instance.setType(typedef.build());
92 instance.setType(type);
96 if (unknownNodes == null) {
97 unknownNodes = new ArrayList<UnknownSchemaNode>();
98 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
99 unknownNodes.add(b.build());
102 instance.setUnknownSchemaNodes(unknownNodes);
110 public int getLine() {
115 public QName getQName() {
119 public SchemaPath getPath() {
124 public void setPath(final SchemaPath schemaPath) {
125 this.schemaPath = schemaPath;
128 public String getDescription() {
133 public void setDescription(final String description) {
134 this.description = description;
137 public String getReference() {
142 public void setReference(String reference) {
143 this.reference = reference;
146 public Status getStatus() {
151 public void setStatus(Status status) {
152 if (status != null) {
153 this.status = status;
157 public boolean isAugmenting() {
162 public void setAugmenting(boolean augmenting) {
163 this.augmenting = augmenting;
167 public boolean isAddedByUses() {
172 public void setAddedByUses(final boolean addedByUses) {
173 this.addedByUses = addedByUses;
176 public Boolean isConfiguration() {
177 return configuration;
181 public void setConfiguration(Boolean configuration) {
182 this.configuration = configuration;
186 public ConstraintsBuilder getConstraints() {
190 public boolean isUserOrdered() {
194 public void setUserOrdered(final boolean userOrdered) {
195 this.userOrdered = userOrdered;
198 public List<UnknownSchemaNodeBuilder> getUnknownNodes() {
199 return addedUnknownNodes;
203 public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
204 addedUnknownNodes.add(unknownNode);
207 public void setUnknownNodes(List<UnknownSchemaNode> unknownNodes) {
208 this.unknownNodes = unknownNodes;
211 private final class LeafListSchemaNodeImpl implements LeafListSchemaNode {
212 private final QName qname;
213 private SchemaPath path;
214 private String description;
215 private String reference;
216 private Status status = Status.CURRENT;
217 private boolean augmenting;
218 private boolean addedByUses;
219 private boolean configuration;
220 private ConstraintDefinition constraintsDef;
221 private TypeDefinition<?> type;
222 private boolean userOrdered;
223 private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
225 private LeafListSchemaNodeImpl(final QName qname) {
230 public QName getQName() {
235 public SchemaPath getPath() {
239 private void setPath(final SchemaPath path) {
244 public String getDescription() {
248 private void setDescription(String description) {
249 this.description = description;
253 public String getReference() {
257 private void setReference(String reference) {
258 this.reference = reference;
262 public Status getStatus() {
266 private void setStatus(Status status) {
267 this.status = status;
271 public boolean isAugmenting() {
275 private void setAugmenting(boolean augmenting) {
276 this.augmenting = augmenting;
280 public boolean isAddedByUses() {
284 private void setAddedByUses(final boolean addedByUses) {
285 this.addedByUses = addedByUses;
289 public boolean isConfiguration() {
290 return configuration;
293 private void setConfiguration(boolean configuration) {
294 this.configuration = configuration;
298 public ConstraintDefinition getConstraints() {
299 return constraintsDef;
302 private void setConstraints(ConstraintDefinition constraintsDef) {
303 this.constraintsDef = constraintsDef;
307 public TypeDefinition<?> getType() {
311 public void setType(TypeDefinition<? extends TypeDefinition<?>> type) {
316 public boolean isUserOrdered() {
320 private void setUserOrdered(boolean userOrdered) {
321 this.userOrdered = userOrdered;
325 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
329 private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownNodes) {
330 if (unknownNodes != null) {
331 this.unknownNodes = unknownNodes;
336 public int hashCode() {
337 final int prime = 31;
339 result = prime * result + ((qname == null) ? 0 : qname.hashCode());
340 result = prime * result + ((path == null) ? 0 : path.hashCode());
345 public boolean equals(Object obj) {
352 if (getClass() != obj.getClass()) {
355 LeafListSchemaNodeImpl other = (LeafListSchemaNodeImpl) obj;
357 if (other.qname != null) {
360 } else if (!qname.equals(other.qname)) {
364 if (other.path != null) {
367 } else if (!path.equals(other.path)) {
374 public String toString() {
375 StringBuilder sb = new StringBuilder(LeafListSchemaNodeImpl.class.getSimpleName());
379 return sb.toString();