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.model.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.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;
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>();
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;
41 public LeafSchemaNodeBuilder(final QName qname) {
43 instance = new LeafSchemaNodeImpl(qname);
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);
56 instance.setType(typedef.build());
58 instance.setType(type);
62 final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
63 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
64 unknownNodes.add(b.build());
66 instance.setUnknownSchemaNodes(unknownNodes);
68 instance.setAugmenting(augmenting);
69 instance.setConfiguration(configuration);
70 instance.setDefault(defaultStr);
71 instance.setUnits(unitsStr);
76 public QName getQName() {
80 public SchemaPath getPath() {
85 public void setPath(final SchemaPath path) {
90 public ConstraintsBuilder getConstraints() {
95 public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
96 addedUnknownNodes.add(unknownNode);
99 public List<UnknownSchemaNodeBuilder> getUnknownNodes() {
100 return addedUnknownNodes;
103 public String getDescription() {
108 public void setDescription(final String description) {
109 this.description = description;
112 public String getReference() {
117 public void setReference(final String reference) {
118 this.reference = reference;
121 public Status getStatus() {
126 public void setStatus(final Status status) {
127 if (status != null) {
128 this.status = status;
132 public boolean isAugmenting() {
137 public void setAugmenting(final boolean augmenting) {
138 this.augmenting = augmenting;
141 public boolean isConfiguration() {
142 return configuration;
146 public void setConfiguration(final boolean configuration) {
147 instance.setConfiguration(configuration);
150 public String getDefaultStr() {
154 public void setDefaultStr(String defaultStr) {
155 this.defaultStr = defaultStr;
158 public String getUnits() {
162 public void setUnits(String unitsStr) {
163 this.unitsStr = unitsStr;
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;
180 private LeafSchemaNodeImpl(final QName qname) {
185 public QName getQName() {
190 public SchemaPath getPath() {
194 private void setPath(final SchemaPath path) {
199 public String getDescription() {
203 private void setDescription(String description) {
204 this.description = description;
208 public String getReference() {
212 private void setReference(String reference) {
213 this.reference = reference;
217 public Status getStatus() {
221 private void setStatus(Status status) {
222 if (status != null) {
223 this.status = status;
228 public boolean isAugmenting() {
232 private void setAugmenting(boolean augmenting) {
233 this.augmenting = augmenting;
237 public boolean isConfiguration() {
238 return configuration;
241 private void setConfiguration(boolean configuration) {
242 this.configuration = configuration;
246 public ConstraintDefinition getConstraints() {
247 return constraintsDef;
250 private void setConstraints(ConstraintDefinition constraintsDef) {
251 this.constraintsDef = constraintsDef;
255 public TypeDefinition<?> getType() {
259 private void setType(TypeDefinition<? extends TypeDefinition<?>> type) {
264 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
268 private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownNodes) {
269 if (unknownNodes != null) {
270 this.unknownNodes = unknownNodes;
274 public String getDefault() {
278 private void setDefault(String defaultStr) {
279 this.defaultStr = defaultStr;
282 public String getUnits() {
286 public void setUnits(String unitsStr) {
287 this.unitsStr = unitsStr;
291 public int hashCode() {
292 final int prime = 31;
294 result = prime * result + ((qname == null) ? 0 : qname.hashCode());
295 result = prime * result + ((path == null) ? 0 : path.hashCode());
300 public boolean equals(Object obj) {
307 if (getClass() != obj.getClass()) {
310 LeafSchemaNodeImpl other = (LeafSchemaNodeImpl) obj;
312 if (other.qname != null) {
315 } else if (!qname.equals(other.qname)) {
319 if (other.path != null) {
322 } else if (!path.equals(other.path)) {
329 public String toString() {
330 StringBuilder sb = new StringBuilder(
331 LeafSchemaNodeImpl.class.getSimpleName());
333 sb.append("qname=" + qname);
334 sb.append(", path=" + path);
336 return sb.toString();