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 boolean referenceOnly;
29 private final List<LengthConstraint> lengthStatements;
30 private final List<PatternConstraint> patterns;
31 private final List<RangeConstraint> rangeStatements;
32 private final List<UnknownSchemaNode> extensions;
33 private final LengthConstraint lengthConstraint;
34 private final Integer fractionDigits;
36 private final Status status;
37 private final String units;
38 private final Object defaultValue;
40 public static class Builder {
42 private final QName name;
43 private final SchemaPath path;
44 private String description;
45 private String reference;
47 private List<LengthConstraint> lengthStatements = Collections.emptyList();
48 private List<PatternConstraint> patterns = Collections.emptyList();
49 private List<RangeConstraint> rangeStatements = Collections.emptyList();
50 private List<UnknownSchemaNode> extensions = Collections.emptyList();
51 private LengthConstraint lengthConstraint = null;
52 private Integer fractionDigits = null;
54 private Status status = Status.CURRENT;
55 private String units = "";
56 private Object defaultValue = null;
57 private boolean referenceOnly = false;
59 public Builder(final QName name, final String description, final String reference) {
61 this.path = BaseTypes.schemaPath(name);
62 this.description = description;
63 this.reference = reference;
66 public Builder(final QName name) {
68 this.path = BaseTypes.schemaPath(name);
71 public Builder description(String description) {
72 this.description = description;
76 public Builder reference(String reference) {
77 this.reference = reference;
81 public Builder lengthStatements(final List<LengthConstraint> lengthStatements) {
82 this.lengthStatements = lengthStatements;
86 public Builder patterns(final List<PatternConstraint> patterns) {
87 this.patterns = patterns;
91 public Builder rangeStatements(final List<RangeConstraint> rangeStatements) {
92 this.rangeStatements = rangeStatements;
96 public Builder extensions(final List<UnknownSchemaNode> extensions) {
97 this.extensions = extensions;
101 public Builder lengthConstraint(final LengthConstraint lengthConstraint) {
102 this.lengthConstraint = lengthConstraint;
106 public Builder fractionDigits(final Integer fractionDigits) {
107 this.fractionDigits = fractionDigits;
111 public Builder status(Status status) {
112 this.status = status;
116 public Builder units(String units) {
121 public Builder defaultValue(final Object defaultValue) {
122 this.defaultValue = defaultValue;
126 public UnknownTypeDefinition build() {
127 return new UnknownType(this);
130 public void setReferenceOnly(boolean b) {
131 this.referenceOnly = b;
136 private UnknownType(Builder builder) {
137 this.referenceOnly = builder.referenceOnly;
138 this.name = builder.name;
139 this.path = builder.path;
140 this.description = builder.description;
141 this.reference = builder.reference;
142 this.lengthStatements = builder.lengthStatements;
143 this.patterns = builder.patterns;
144 this.rangeStatements = builder.rangeStatements;
145 this.extensions = builder.extensions;
146 this.lengthConstraint = builder.lengthConstraint;
147 this.status = builder.status;
148 this.units = builder.units;
149 this.defaultValue = builder.defaultValue;
150 this.fractionDigits = builder.fractionDigits;
157 * org.opendaylight.yangtools.yang.model.api.TypeDefinition#getBaseType()
160 public UnknownTypeDefinition getBaseType() {
167 * @see org.opendaylight.yangtools.yang.model.api.TypeDefinition#getUnits()
170 public String getUnits() {
178 * org.opendaylight.yangtools.yang.model.api.TypeDefinition#getDefaultValue
182 public Object getDefaultValue() {
189 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getQName()
192 public QName getQName() {
199 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getPath()
202 public SchemaPath getPath() {
210 * org.opendaylight.yangtools.yang.model.api.SchemaNode#getDescription()
213 public String getDescription() {
220 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getReference()
223 public String getReference() {
230 * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getStatus()
233 public Status getStatus() {
241 * org.opendaylight.yangtools.yang.model.api.SchemaNode#getExtensionSchemaNodes
245 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
252 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
253 * #getRangeStatements()
256 public List<RangeConstraint> getRangeStatements() {
257 return rangeStatements;
263 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
264 * #getLengthStatements()
267 public List<LengthConstraint> getLengthStatements() {
268 return lengthStatements;
274 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
278 public List<PatternConstraint> getPatterns() {
285 * @see org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
286 * #getLengthConstraint()
289 public LengthConstraint getLengthConstraint() {
290 return lengthConstraint;
294 public Integer getFractionDigits() {
295 return fractionDigits;
299 public boolean isReferenceOnly() {
300 return referenceOnly;
304 public int hashCode() {
305 final int prime = 31;
307 result = prime * result + ((defaultValue == null) ? 0 : defaultValue.hashCode());
308 result = prime * result + ((description == null) ? 0 : description.hashCode());
309 result = prime * result + ((extensions == null) ? 0 : extensions.hashCode());
310 result = prime * result + ((lengthConstraint == null) ? 0 : lengthConstraint.hashCode());
311 result = prime * result + ((lengthStatements == null) ? 0 : lengthStatements.hashCode());
312 result = prime * result + ((name == null) ? 0 : name.hashCode());
313 result = prime * result + ((path == null) ? 0 : path.hashCode());
314 result = prime * result + ((patterns == null) ? 0 : patterns.hashCode());
315 result = prime * result + ((rangeStatements == null) ? 0 : rangeStatements.hashCode());
316 result = prime * result + ((reference == null) ? 0 : reference.hashCode());
317 result = prime * result + ((status == null) ? 0 : status.hashCode());
318 result = prime * result + ((units == null) ? 0 : units.hashCode());
323 public boolean equals(Object obj) {
330 if (getClass() != obj.getClass()) {
333 UnknownType other = (UnknownType) obj;
334 if (defaultValue == null) {
335 if (other.defaultValue != null) {
338 } else if (!defaultValue.equals(other.defaultValue)) {
341 if (description == null) {
342 if (other.description != null) {
345 } else if (!description.equals(other.description)) {
348 if (extensions == null) {
349 if (other.extensions != null) {
352 } else if (!extensions.equals(other.extensions)) {
355 if (lengthConstraint == null) {
356 if (other.lengthConstraint != null) {
359 } else if (!lengthConstraint.equals(other.lengthConstraint)) {
362 if (lengthStatements == null) {
363 if (other.lengthStatements != null) {
366 } else if (!lengthStatements.equals(other.lengthStatements)) {
370 if (other.name != null) {
373 } else if (!name.equals(other.name)) {
377 if (other.path != null) {
380 } else if (!path.equals(other.path)) {
383 if (patterns == null) {
384 if (other.patterns != null) {
387 } else if (!patterns.equals(other.patterns)) {
390 if (rangeStatements == null) {
391 if (other.rangeStatements != null) {
394 } else if (!rangeStatements.equals(other.rangeStatements)) {
397 if (reference == null) {
398 if (other.reference != null) {
401 } else if (!reference.equals(other.reference)) {
404 if (status != other.status) {
408 if (other.units != null) {
411 } else if (!units.equals(other.units)) {
418 public String toString() {
419 StringBuilder builder2 = new StringBuilder();
420 builder2.append("UnknownType [name=");
421 builder2.append(name);
422 builder2.append(", path=");
423 builder2.append(path);
424 builder2.append(", description=");
425 builder2.append(description);
426 builder2.append(", reference=");
427 builder2.append(reference);
428 builder2.append(", lengthStatements=");
429 builder2.append(lengthStatements);
430 builder2.append(", patterns=");
431 builder2.append(patterns);
432 builder2.append(", rangeStatements=");
433 builder2.append(rangeStatements);
434 builder2.append(", extensions=");
435 builder2.append(extensions);
436 builder2.append(", lengthConstraint=");
437 builder2.append(lengthConstraint);
438 builder2.append(", status=");
439 builder2.append(status);
440 builder2.append(", units=");
441 builder2.append(units);
442 builder2.append(", defaultValue=");
443 builder2.append(defaultValue);
444 builder2.append("]");
445 return builder2.toString();