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.yangtools.yang.parser.builder.impl;
10 import org.opendaylight.yangtools.yang.common.QName;
11 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
12 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
13 import org.opendaylight.yangtools.yang.model.api.Status;
14 import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder;
15 import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder;
16 import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder;
17 import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
18 import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder;
19 import com.google.common.base.Preconditions;
20 import com.google.common.collect.ImmutableList;
22 public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder implements DataSchemaNodeBuilder {
23 private LeafListSchemaNodeImpl instance;
24 private boolean userOrdered;
26 private SchemaPath schemaPath;
27 private String description;
28 private String reference;
29 private Status status = Status.CURRENT;
30 // DataSchemaNode args
31 private boolean augmenting;
32 private boolean addedByUses;
33 private LeafListSchemaNode originalNode;
34 private LeafListSchemaNodeBuilder originalBuilder;
35 private boolean configuration;
36 private final ConstraintsBuilder constraints;
38 public LeafListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) {
39 super(moduleName, line, qname);
40 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
41 constraints = new ConstraintsBuilderImpl(moduleName, line);
44 public LeafListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path,
45 final LeafListSchemaNode base) {
46 super(moduleName, line, qname);
47 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
48 constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints());
50 description = base.getDescription();
51 reference = base.getReference();
52 status = base.getStatus();
53 augmenting = base.isAugmenting();
54 addedByUses = base.isAddedByUses();
56 configuration = base.isConfiguration();
57 this.type = base.getType();
58 userOrdered = base.isUserOrdered();
59 unknownNodes.addAll(base.getUnknownSchemaNodes());
63 public LeafListSchemaNode build() {
64 if (instance != null) {
68 instance = new LeafListSchemaNodeImpl(qname, schemaPath);
70 instance.description = description;
71 instance.reference = reference;
72 instance.status = status;
73 instance.augmenting = augmenting;
74 instance.addedByUses = addedByUses;
75 instance.configuration = configuration;
76 instance.constraintsDef = constraints.toInstance();
77 instance.userOrdered = userOrdered;
80 instance.type = typedef.build();
86 if (originalNode == null && originalBuilder != null) {
87 originalNode = originalBuilder.build();
89 instance.original = originalNode;
92 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
93 unknownNodes.add(b.build());
95 instance.unknownNodes = ImmutableList.copyOf(unknownNodes);
101 public SchemaPath getPath() {
106 public void setPath(final SchemaPath path) {
107 this.schemaPath = path;
111 public String getDescription() {
116 public void setDescription(final String description) {
117 this.description = description;
121 public String getReference() {
126 public void setReference(final String reference) {
127 this.reference = reference;
131 public Status getStatus() {
136 public void setStatus(final Status status) {
137 this.status = Preconditions.checkNotNull(status, "status cannot be null");
141 public boolean isAugmenting() {
146 public void setAugmenting(final boolean augmenting) {
147 this.augmenting = augmenting;
151 public boolean isAddedByUses() {
156 public void setAddedByUses(final boolean addedByUses) {
157 this.addedByUses = addedByUses;
161 public LeafListSchemaNodeBuilder getOriginal() {
162 return originalBuilder;
166 public void setOriginal(final SchemaNodeBuilder builder) {
167 Preconditions.checkArgument(builder instanceof LeafListSchemaNodeBuilder, "Original of leaf-list cannot be "
169 this.originalBuilder = (LeafListSchemaNodeBuilder) builder;
173 public boolean isConfiguration() {
174 return configuration;
178 public void setConfiguration(final boolean configuration) {
179 this.configuration = configuration;
183 public ConstraintsBuilder getConstraints() {
187 public boolean isUserOrdered() {
191 public void setUserOrdered(final boolean userOrdered) {
192 this.userOrdered = userOrdered;
196 public int hashCode() {
197 final int prime = 31;
199 result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode());
204 public boolean equals(final Object obj) {
211 if (getClass() != obj.getClass()) {
214 LeafListSchemaNodeBuilder other = (LeafListSchemaNodeBuilder) obj;
215 if (schemaPath == null) {
216 if (other.schemaPath != null) {
219 } else if (!schemaPath.equals(other.schemaPath)) {
222 if (getParent() == null) {
223 if (other.getParent() != null) {
226 } else if (!getParent().equals(other.getParent())) {
233 public String toString() {
234 return "leaf-list " + qname.getLocalName();