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.model.util;
10 import java.util.Collections;
11 import java.util.List;
13 import org.opendaylight.yangtools.yang.common.QName;
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.model.api.type.LengthConstraint;
18 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
19 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
20 import org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition;
22 public final class UnknownType implements UnknownTypeDefinition {
24 private final QName name;
25 private final SchemaPath path;
26 private final String description;
27 private final String reference;
28 private final List<LengthConstraint> lengthStatements;
29 private final List<PatternConstraint> patterns;
30 private final List<RangeConstraint> rangeStatements;
31 private final List<UnknownSchemaNode> extensions;
32 private final LengthConstraint lengthConstraint;
33 private final Integer fractionDigits;
35 private final Status status;
36 private final String units;
37 private final Object defaultValue;
39 public static class Builder {
41 private final QName name;
42 private final SchemaPath path;
43 private String description;
44 private String reference;
46 private List<LengthConstraint> lengthStatements = Collections.emptyList();
47 private List<PatternConstraint> patterns = Collections.emptyList();
48 private List<RangeConstraint> rangeStatements = Collections.emptyList();
49 private List<UnknownSchemaNode> extensions = Collections.emptyList();
50 private LengthConstraint lengthConstraint = null;
51 private Integer fractionDigits = null;
53 private Status status = Status.CURRENT;
54 private String units = "";
55 private Object defaultValue = null;
57 public Builder(final QName name, final String description, final String reference) {
59 this.path = BaseTypes.schemaPath(name);
60 this.description = description;
61 this.reference = reference;
64 public Builder(final QName name) {
66 this.path = BaseTypes.schemaPath(name);
69 public Builder description(String description) {
70 this.description = description;
74 public Builder reference(String reference) {
75 this.reference = reference;
79 public Builder lengthStatements(final List<LengthConstraint> lengthStatements) {
80 this.lengthStatements = lengthStatements;
84 public Builder patterns(final List<PatternConstraint> patterns) {
85 this.patterns = patterns;
89 public Builder rangeStatements(final List<RangeConstraint> rangeStatements) {
90 this.rangeStatements = rangeStatements;
94 public Builder extensions(final List<UnknownSchemaNode> extensions) {
95 this.extensions = extensions;
99 public Builder lengthConstraint(final LengthConstraint lengthConstraint) {
100 this.lengthConstraint = lengthConstraint;
104 public Builder fractionDigits(final Integer fractionDigits) {
105 this.fractionDigits = fractionDigits;
109 public Builder status(Status status) {
110 this.status = status;
114 public Builder units(String units) {
119 public Builder defaultValue(final Object defaultValue) {
120 this.defaultValue = defaultValue;
124 public UnknownTypeDefinition build() {
125 return new UnknownType(this);
129 private UnknownType(Builder builder) {
130 this.name = builder.name;
131 this.path = builder.path;
132 this.description = builder.description;
133 this.reference = builder.reference;
134 this.lengthStatements = builder.lengthStatements;
135 this.patterns = builder.patterns;
136 this.rangeStatements = builder.rangeStatements;
137 this.extensions = builder.extensions;
138 this.lengthConstraint = builder.lengthConstraint;
139 this.status = builder.status;
140 this.units = builder.units;
141 this.defaultValue = builder.defaultValue;
142 this.fractionDigits = builder.fractionDigits;
149 * org.opendaylight.yangtools.yang.model.api.TypeDefinition#getBaseType()
152 public UnknownTypeDefinition getBaseType() {
159 * @see org.opendaylight.yangtools.yang.model.api.TypeDefinition#getUnits()
162 public String getUnits() {
170 * org.opendaylight.yangtools.yang.model.api.TypeDefinition#getDefaultValue
174 public Object getDefaultValue() {
181 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getQName()
184 public QName getQName() {
191 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getPath()
194 public SchemaPath getPath() {
202 * org.opendaylight.yangtools.yang.model.api.SchemaNode#getDescription()
205 public String getDescription() {
212 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getReference()
215 public String getReference() {
222 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getStatus()
225 public Status getStatus() {
233 * org.opendaylight.yangtools.yang.model.api.SchemaNode#getExtensionSchemaNodes
237 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
244 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
245 * #getRangeStatements()
248 public List<RangeConstraint> getRangeConstraints() {
249 return rangeStatements;
255 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
256 * #getLengthStatements()
259 public List<LengthConstraint> getLengthConstraints() {
260 return lengthStatements;
266 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
270 public List<PatternConstraint> getPatternConstraints() {
275 public Integer getFractionDigits() {
276 return fractionDigits;
280 public int hashCode() {
281 final int prime = 31;
283 result = prime * result + ((defaultValue == null) ? 0 : defaultValue.hashCode());
284 result = prime * result + ((description == null) ? 0 : description.hashCode());
285 result = prime * result + ((extensions == null) ? 0 : extensions.hashCode());
286 result = prime * result + ((lengthConstraint == null) ? 0 : lengthConstraint.hashCode());
287 result = prime * result + ((lengthStatements == null) ? 0 : lengthStatements.hashCode());
288 result = prime * result + ((name == null) ? 0 : name.hashCode());
289 result = prime * result + ((path == null) ? 0 : path.hashCode());
290 result = prime * result + ((patterns == null) ? 0 : patterns.hashCode());
291 result = prime * result + ((rangeStatements == null) ? 0 : rangeStatements.hashCode());
292 result = prime * result + ((reference == null) ? 0 : reference.hashCode());
293 result = prime * result + ((status == null) ? 0 : status.hashCode());
294 result = prime * result + ((units == null) ? 0 : units.hashCode());
299 public boolean equals(Object obj) {
306 if (getClass() != obj.getClass()) {
309 UnknownType other = (UnknownType) obj;
310 if (defaultValue == null) {
311 if (other.defaultValue != null) {
314 } else if (!defaultValue.equals(other.defaultValue)) {
317 if (description == null) {
318 if (other.description != null) {
321 } else if (!description.equals(other.description)) {
324 if (extensions == null) {
325 if (other.extensions != null) {
328 } else if (!extensions.equals(other.extensions)) {
331 if (lengthConstraint == null) {
332 if (other.lengthConstraint != null) {
335 } else if (!lengthConstraint.equals(other.lengthConstraint)) {
338 if (lengthStatements == null) {
339 if (other.lengthStatements != null) {
342 } else if (!lengthStatements.equals(other.lengthStatements)) {
346 if (other.name != null) {
349 } else if (!name.equals(other.name)) {
353 if (other.path != null) {
356 } else if (!path.equals(other.path)) {
359 if (patterns == null) {
360 if (other.patterns != null) {
363 } else if (!patterns.equals(other.patterns)) {
366 if (rangeStatements == null) {
367 if (other.rangeStatements != null) {
370 } else if (!rangeStatements.equals(other.rangeStatements)) {
373 if (reference == null) {
374 if (other.reference != null) {
377 } else if (!reference.equals(other.reference)) {
380 if (status != other.status) {
384 if (other.units != null) {
387 } else if (!units.equals(other.units)) {
394 public String toString() {
395 StringBuilder builder2 = new StringBuilder();
396 builder2.append("UnknownType [name=");
397 builder2.append(name);
398 builder2.append(", path=");
399 builder2.append(path);
400 builder2.append(", description=");
401 builder2.append(description);
402 builder2.append(", reference=");
403 builder2.append(reference);
404 builder2.append(", lengthStatements=");
405 builder2.append(lengthStatements);
406 builder2.append(", patterns=");
407 builder2.append(patterns);
408 builder2.append(", rangeStatements=");
409 builder2.append(rangeStatements);
410 builder2.append(", extensions=");
411 builder2.append(extensions);
412 builder2.append(", lengthConstraint=");
413 builder2.append(lengthConstraint);
414 builder2.append(", status=");
415 builder2.append(status);
416 builder2.append(", units=");
417 builder2.append(units);
418 builder2.append(", defaultValue=");
419 builder2.append(defaultValue);
420 builder2.append("]");
421 return builder2.toString();