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.AnyXmlSchemaNode;
16 import org.opendaylight.controller.yang.model.api.ConstraintDefinition;
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.UnknownSchemaNode;
20 import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
22 public class AnyXmlBuilder implements DataSchemaNodeBuilder {
23 private final int line;
24 private final QName qname;
25 private SchemaPath path;
26 private final AnyXmlSchemaNodeImpl instance;
27 private final ConstraintsBuilder constraints;
28 private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
30 private String description;
31 private String reference;
32 private Status status = Status.CURRENT;
33 private boolean configuration;
35 public AnyXmlBuilder(final QName qname, final int line) {
38 instance = new AnyXmlSchemaNodeImpl(qname);
39 constraints = new ConstraintsBuilder(line);
43 public AnyXmlSchemaNode build() {
44 instance.setPath(path);
45 instance.setConstraints(constraints.build());
46 instance.setDescription(description);
47 instance.setReference(reference);
48 instance.setStatus(status);
51 final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
52 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
53 unknownNodes.add(b.build());
55 instance.setUnknownSchemaNodes(unknownNodes);
57 instance.setConfiguration(configuration);
62 public int getLine() {
67 public QName getQName() {
71 public SchemaPath getPath() {
76 public void setPath(final SchemaPath path) {
81 public ConstraintsBuilder getConstraints() {
86 public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
87 addedUnknownNodes.add(unknownNode);
90 public List<UnknownSchemaNodeBuilder> getUnknownNodes() {
91 return addedUnknownNodes;
94 public String getDescription() {
99 public void setDescription(final String description) {
100 this.description = description;
103 public String getReference() {
108 public void setReference(final String reference) {
109 this.reference = reference;
112 public Status getStatus() {
117 public void setStatus(final Status status) {
118 if (status != null) {
119 this.status = status;
124 public void setAugmenting(final boolean augmenting) {
125 throw new UnsupportedOperationException(
126 "An anyxml node cannot be augmented.");
129 public boolean isConfiguration() {
130 return configuration;
134 public void setConfiguration(final boolean configuration) {
135 instance.setConfiguration(configuration);
138 private static class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode {
139 private final QName qname;
140 private SchemaPath path;
141 private String description;
142 private String reference;
143 private Status status = Status.CURRENT;
144 private boolean configuration;
145 private ConstraintDefinition constraintsDef;
146 private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
148 private AnyXmlSchemaNodeImpl(final QName qname) {
153 public QName getQName() {
158 public SchemaPath getPath() {
162 private void setPath(final SchemaPath path) {
167 public String getDescription() {
171 private void setDescription(String description) {
172 this.description = description;
176 public String getReference() {
180 private void setReference(String reference) {
181 this.reference = reference;
185 public Status getStatus() {
189 private void setStatus(Status status) {
190 if (status != null) {
191 this.status = status;
196 public boolean isAugmenting() {
201 public boolean isConfiguration() {
202 return configuration;
205 private void setConfiguration(boolean configuration) {
206 this.configuration = configuration;
210 public ConstraintDefinition getConstraints() {
211 return constraintsDef;
214 private void setConstraints(ConstraintDefinition constraintsDef) {
215 this.constraintsDef = constraintsDef;
219 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
223 private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownNodes) {
224 if (unknownNodes != null) {
225 this.unknownNodes = unknownNodes;
230 public int hashCode() {
231 final int prime = 31;
233 result = prime * result + ((qname == null) ? 0 : qname.hashCode());
234 result = prime * result + ((path == null) ? 0 : path.hashCode());
239 public boolean equals(Object obj) {
246 if (getClass() != obj.getClass()) {
249 AnyXmlSchemaNodeImpl other = (AnyXmlSchemaNodeImpl) obj;
251 if (other.qname != null) {
254 } else if (!qname.equals(other.qname)) {
258 if (other.path != null) {
261 } else if (!path.equals(other.path)) {
268 public String toString() {
269 StringBuilder sb = new StringBuilder(
270 AnyXmlSchemaNodeImpl.class.getSimpleName());
272 sb.append("qname=" + qname);
273 sb.append(", path=" + path);
275 return sb.toString();