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 com.google.common.base.Preconditions;
11 import java.util.Collections;
12 import org.opendaylight.yangtools.yang.common.QName;
13 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
14 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
15 import org.opendaylight.yangtools.yang.model.api.Status;
16 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
17 import org.opendaylight.yangtools.yang.parser.builder.api.ExtensionBuilder;
18 import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
19 import org.opendaylight.yangtools.yang.parser.builder.util.AbstractBuilder;
20 import org.opendaylight.yangtools.yang.parser.builder.util.Comparators;
22 public final class UnknownSchemaNodeBuilderImpl extends AbstractBuilder implements UnknownSchemaNodeBuilder {
24 private SchemaPath schemaPath;
25 private String description;
26 private String reference;
27 private Status status = Status.CURRENT;
28 private boolean addedByUses;
30 private UnknownSchemaNodeImpl instance;
31 private QName nodeType;
32 private String nodeParameter;
34 private ExtensionDefinition extensionDefinition;
35 private ExtensionBuilder extensionBuilder;
37 public UnknownSchemaNodeBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path) {
38 super(moduleName, line);
40 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
43 public UnknownSchemaNodeBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path, final UnknownSchemaNode base) {
44 super(moduleName, line);
45 this.qname = base.getQName();
46 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
48 this.nodeType = base.getNodeType();
49 this.nodeParameter = base.getNodeParameter();
50 this.description = base.getDescription();
51 this.reference = base.getReference();
52 this.status = base.getStatus();
53 this.addedByUses = base.isAddedByUses();
54 this.extensionDefinition = base.getExtensionDefinition();
55 this.unknownNodes.addAll(base.getUnknownSchemaNodes());
59 public QName getQName() {
64 public SchemaPath getPath() {
69 public void setPath(SchemaPath schemaPath) {
70 this.schemaPath = schemaPath;
74 public int hashCode() {
77 result = prime * result + ((qname == null) ? 0 : qname.hashCode());
78 result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode());
79 result = prime * result + ((nodeType == null) ? 0 : nodeType.hashCode());
80 result = prime * result + ((nodeParameter == null) ? 0 : nodeParameter.hashCode());
85 public boolean equals(final Object obj) {
92 if (getClass() != obj.getClass()) {
95 UnknownSchemaNodeBuilderImpl other = (UnknownSchemaNodeBuilderImpl) obj;
97 if (other.qname != null) {
100 } else if (!qname.equals(other.qname)) {
103 if (schemaPath == null) {
104 if (other.schemaPath != null) {
107 } else if (!schemaPath.equals(other.schemaPath)) {
110 if (nodeType == null) {
111 if (other.nodeType != null) {
114 } else if (!nodeType.equals(other.nodeType)) {
117 if (nodeParameter == null) {
118 if (other.nodeParameter != null) {
121 } else if (!nodeParameter.equals(other.nodeParameter)) {
128 public UnknownSchemaNode build() {
129 if (instance != null) {
133 instance = new UnknownSchemaNodeImpl(qname, schemaPath);
135 instance.setNodeType(nodeType);
136 instance.setNodeParameter(nodeParameter);
138 instance.description = description;
139 instance.reference = reference;
140 instance.status = status;
141 instance.addedByUses = addedByUses;
144 if (extensionDefinition != null) {
145 instance.setExtensionDefinition(extensionDefinition);
147 if (extensionBuilder != null) {
148 instance.setExtensionDefinition(extensionBuilder.build());
153 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
154 unknownNodes.add(b.build());
156 Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP);
157 instance.setUnknownSchemaNodes(unknownNodes);
163 public String getDescription() {
168 public void setDescription(final String description) {
169 this.description = description;
173 public String getReference() {
178 public void setReference(final String reference) {
179 this.reference = reference;
183 public Status getStatus() {
188 public void setStatus(final Status status) {
189 if (status != null) {
190 this.status = status;
195 public boolean isAddedByUses() {
200 public void setAddedByUses(final boolean addedByUses) {
201 this.addedByUses = addedByUses;
205 public QName getNodeType() {
210 public void setNodeType(final QName nodeType) {
211 this.nodeType = nodeType;
215 public String getNodeParameter() {
216 return nodeParameter;
220 public void setNodeParameter(final String nodeParameter) {
221 this.nodeParameter = nodeParameter;
225 public ExtensionDefinition getExtensionDefinition() {
226 return extensionDefinition;
230 public void setExtensionDefinition(final ExtensionDefinition extensionDefinition) {
231 this.extensionDefinition = extensionDefinition;
235 public ExtensionBuilder getExtensionBuilder() {
236 return extensionBuilder;
240 public void setExtensionBuilder(final ExtensionBuilder extension) {
241 this.extensionBuilder = extension;
245 public String toString() {
246 StringBuilder sb = new StringBuilder();
247 sb.append(nodeType.getNamespace());
249 sb.append(nodeType.getLocalName());
251 sb.append(nodeParameter);
252 return sb.toString();