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