Merge "Fix for messags at the boot up time This commit proposes following two sets...
[controller.git] / opendaylight / sal / yang-prototype / yang / yang-model-util / src / main / java / org / opendaylight / controller / yang / model / util / UnknownType.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.yang.model.util;
9
10 import java.util.Collections;
11 import java.util.List;
12
13 import org.opendaylight.controller.yang.common.QName;
14 import org.opendaylight.controller.yang.model.api.SchemaPath;
15 import org.opendaylight.controller.yang.model.api.Status;
16 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
17 import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
18 import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
19 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
20 import org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition;
21
22 public class UnknownType implements UnknownTypeDefinition {
23
24     private final QName name;
25     private final SchemaPath path;
26     private final String description;
27     private final String reference;
28
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;
35
36     private final Status status;
37     private final String units;
38     private final Object defaultValue;
39
40     public static class Builder {
41
42         private final QName name;
43         private final SchemaPath path;
44         private String description;
45         private String reference;
46
47         private List<LengthConstraint> lengthStatements = Collections
48                 .emptyList();
49         private List<PatternConstraint> patterns = Collections.emptyList();
50         private List<RangeConstraint> rangeStatements = Collections.emptyList();
51         private List<UnknownSchemaNode> extensions = Collections.emptyList();
52         private LengthConstraint lengthConstraint = null;
53         private Integer fractionDigits = null;
54
55         private Status status = Status.CURRENT;
56         private String units = "";
57         private Object defaultValue = null;
58
59         public Builder(final QName name, final String description,
60                 final String reference) {
61             this.name = name;
62             this.path = BaseTypes.schemaPath(name);
63             this.description = description;
64             this.reference = reference;
65         }
66
67         public Builder(final QName name) {
68             this.name = name;
69             this.path = BaseTypes.schemaPath(name);
70         }
71
72         public Builder description(String description) {
73             this.description = description;
74             return this;
75         }
76
77         public Builder reference(String reference) {
78             this.reference = reference;
79             return this;
80         }
81
82         public Builder lengthStatements(
83                 final List<LengthConstraint> lengthStatements) {
84             this.lengthStatements = lengthStatements;
85             return this;
86         }
87
88         public Builder patterns(final List<PatternConstraint> patterns) {
89             this.patterns = patterns;
90             return this;
91         }
92
93         public Builder rangeStatements(
94                 final List<RangeConstraint> rangeStatements) {
95             this.rangeStatements = rangeStatements;
96             return this;
97         }
98
99         public Builder extensions(final List<UnknownSchemaNode> extensions) {
100             this.extensions = extensions;
101             return this;
102         }
103
104         public Builder lengthConstraint(final LengthConstraint lengthConstraint) {
105             this.lengthConstraint = lengthConstraint;
106             return this;
107         }
108
109         public Builder fractionDigits(final Integer fractionDigits) {
110             this.fractionDigits = fractionDigits;
111             return this;
112         }
113
114         public Builder status(Status status) {
115             this.status = status;
116             return this;
117         }
118
119         public Builder units(String units) {
120             this.units = units;
121             return this;
122         }
123
124         public Builder defaultValue(final Object defaultValue) {
125             this.defaultValue = defaultValue;
126             return this;
127         }
128
129         public UnknownTypeDefinition build() {
130             return new UnknownType(this);
131         }
132     }
133
134     private UnknownType(Builder builder) {
135         this.name = builder.name;
136         this.path = builder.path;
137         this.description = builder.description;
138         this.reference = builder.reference;
139         this.lengthStatements = builder.lengthStatements;
140         this.patterns = builder.patterns;
141         this.rangeStatements = builder.rangeStatements;
142         this.extensions = builder.extensions;
143         this.lengthConstraint = builder.lengthConstraint;
144         this.status = builder.status;
145         this.units = builder.units;
146         this.defaultValue = builder.defaultValue;
147         this.fractionDigits = builder.fractionDigits;
148     }
149
150     /*
151      * (non-Javadoc)
152      *
153      * @see
154      * org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()
155      */
156     @Override
157     public UnknownTypeDefinition getBaseType() {
158         return this;
159     }
160
161     /*
162      * (non-Javadoc)
163      *
164      * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getUnits()
165      */
166     @Override
167     public String getUnits() {
168         return units;
169     }
170
171     /*
172      * (non-Javadoc)
173      *
174      * @see
175      * org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue
176      * ()
177      */
178     @Override
179     public Object getDefaultValue() {
180         return defaultValue;
181     }
182
183     /*
184      * (non-Javadoc)
185      *
186      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getQName()
187      */
188     @Override
189     public QName getQName() {
190         return name;
191     }
192
193     /*
194      * (non-Javadoc)
195      *
196      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getPath()
197      */
198     @Override
199     public SchemaPath getPath() {
200         return path;
201     }
202
203     /*
204      * (non-Javadoc)
205      *
206      * @see
207      * org.opendaylight.controller.yang.model.api.SchemaNode#getDescription()
208      */
209     @Override
210     public String getDescription() {
211         return description;
212     }
213
214     /*
215      * (non-Javadoc)
216      *
217      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getReference()
218      */
219     @Override
220     public String getReference() {
221         return reference;
222     }
223
224     /*
225      * (non-Javadoc)
226      *
227      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getStatus()
228      */
229     @Override
230     public Status getStatus() {
231         return status;
232     }
233
234     /*
235      * (non-Javadoc)
236      *
237      * @see
238      * org.opendaylight.controller.yang.model.api.SchemaNode#getExtensionSchemaNodes
239      * ()
240      */
241     @Override
242     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
243         return extensions;
244     }
245
246     /*
247      * (non-Javadoc)
248      *
249      * @see
250      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition
251      * #getRangeStatements()
252      */
253     @Override
254     public List<RangeConstraint> getRangeStatements() {
255         return rangeStatements;
256     }
257
258     /*
259      * (non-Javadoc)
260      *
261      * @see
262      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition
263      * #getLengthStatements()
264      */
265     @Override
266     public List<LengthConstraint> getLengthStatements() {
267         return lengthStatements;
268     }
269
270     /*
271      * (non-Javadoc)
272      *
273      * @see
274      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition
275      * #getPatterns()
276      */
277     @Override
278     public List<PatternConstraint> getPatterns() {
279         return patterns;
280     }
281
282     /*
283      * (non-Javadoc)
284      *
285      * @see
286      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition
287      * #getLengthConstraint()
288      */
289     @Override
290     public LengthConstraint getLengthConstraint() {
291         return lengthConstraint;
292     }
293
294     @Override
295     public Integer getFractionDigits() {
296         return fractionDigits;
297     }
298
299     @Override
300     public int hashCode() {
301         final int prime = 31;
302         int result = 1;
303         result = prime * result
304                 + ((defaultValue == null) ? 0 : defaultValue.hashCode());
305         result = prime * result
306                 + ((description == null) ? 0 : description.hashCode());
307         result = prime * result
308                 + ((extensions == null) ? 0 : extensions.hashCode());
309         result = prime
310                 * result
311                 + ((lengthConstraint == null) ? 0 : lengthConstraint.hashCode());
312         result = prime
313                 * result
314                 + ((lengthStatements == null) ? 0 : lengthStatements.hashCode());
315         result = prime * result + ((name == null) ? 0 : name.hashCode());
316         result = prime * result + ((path == null) ? 0 : path.hashCode());
317         result = prime * result
318                 + ((patterns == null) ? 0 : patterns.hashCode());
319         result = prime * result
320                 + ((rangeStatements == null) ? 0 : rangeStatements.hashCode());
321         result = prime * result
322                 + ((reference == null) ? 0 : reference.hashCode());
323         result = prime * result + ((status == null) ? 0 : status.hashCode());
324         result = prime * result + ((units == null) ? 0 : units.hashCode());
325         return result;
326     }
327
328     @Override
329     public boolean equals(Object obj) {
330         if (this == obj) {
331             return true;
332         }
333         if (obj == null) {
334             return false;
335         }
336         if (getClass() != obj.getClass()) {
337             return false;
338         }
339         UnknownType other = (UnknownType) obj;
340         if (defaultValue == null) {
341             if (other.defaultValue != null) {
342                 return false;
343             }
344         } else if (!defaultValue.equals(other.defaultValue)) {
345             return false;
346         }
347         if (description == null) {
348             if (other.description != null) {
349                 return false;
350             }
351         } else if (!description.equals(other.description)) {
352             return false;
353         }
354         if (extensions == null) {
355             if (other.extensions != null) {
356                 return false;
357             }
358         } else if (!extensions.equals(other.extensions)) {
359             return false;
360         }
361         if (lengthConstraint == null) {
362             if (other.lengthConstraint != null) {
363                 return false;
364             }
365         } else if (!lengthConstraint.equals(other.lengthConstraint)) {
366             return false;
367         }
368         if (lengthStatements == null) {
369             if (other.lengthStatements != null) {
370                 return false;
371             }
372         } else if (!lengthStatements.equals(other.lengthStatements)) {
373             return false;
374         }
375         if (name == null) {
376             if (other.name != null) {
377                 return false;
378             }
379         } else if (!name.equals(other.name)) {
380             return false;
381         }
382         if (path == null) {
383             if (other.path != null) {
384                 return false;
385             }
386         } else if (!path.equals(other.path)) {
387             return false;
388         }
389         if (patterns == null) {
390             if (other.patterns != null) {
391                 return false;
392             }
393         } else if (!patterns.equals(other.patterns)) {
394             return false;
395         }
396         if (rangeStatements == null) {
397             if (other.rangeStatements != null) {
398                 return false;
399             }
400         } else if (!rangeStatements.equals(other.rangeStatements)) {
401             return false;
402         }
403         if (reference == null) {
404             if (other.reference != null) {
405                 return false;
406             }
407         } else if (!reference.equals(other.reference)) {
408             return false;
409         }
410         if (status != other.status) {
411             return false;
412         }
413         if (units == null) {
414             if (other.units != null) {
415                 return false;
416             }
417         } else if (!units.equals(other.units)) {
418             return false;
419         }
420         return true;
421     }
422
423     @Override
424     public String toString() {
425         StringBuilder builder2 = new StringBuilder();
426         builder2.append("UnknownType [name=");
427         builder2.append(name);
428         builder2.append(", path=");
429         builder2.append(path);
430         builder2.append(", description=");
431         builder2.append(description);
432         builder2.append(", reference=");
433         builder2.append(reference);
434         builder2.append(", lengthStatements=");
435         builder2.append(lengthStatements);
436         builder2.append(", patterns=");
437         builder2.append(patterns);
438         builder2.append(", rangeStatements=");
439         builder2.append(rangeStatements);
440         builder2.append(", extensions=");
441         builder2.append(extensions);
442         builder2.append(", lengthConstraint=");
443         builder2.append(lengthConstraint);
444         builder2.append(", status=");
445         builder2.append(status);
446         builder2.append(", units=");
447         builder2.append(units);
448         builder2.append(", defaultValue=");
449         builder2.append(defaultValue);
450         builder2.append("]");
451         return builder2.toString();
452     }
453
454 }