Merge "changed builder generator"
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / BaseConstraints.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.yangtools.yang.model.util;
9
10 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
11 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
12 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
13
14 public final class BaseConstraints {
15
16     private BaseConstraints() {
17     }
18
19     public static LengthConstraint lengthConstraint(final Number min, final Number max, final String description,
20             final String reference) {
21         return new LengthConstraintImpl(min, max, description, reference);
22     }
23
24     public static RangeConstraint rangeConstraint(final Number min, final Number max, final String description,
25             final String reference) {
26         return new RangeConstraintImpl(min, max, description, reference);
27     }
28
29     public static PatternConstraint patternConstraint(final String pattern, final String description,
30             final String reference) {
31         return new PatternConstraintImpl(pattern, description, reference);
32     }
33
34     private static final class LengthConstraintImpl implements LengthConstraint {
35
36         private final Number min;
37         private final Number max;
38
39         private final String description;
40         private final String reference;
41
42         private final String errorAppTag;
43         private final String errorMessage;
44
45         public LengthConstraintImpl(Number min, Number max, final String description, final String reference) {
46             super();
47             this.min = min;
48             this.max = max;
49             this.description = description;
50             this.reference = reference;
51
52             this.errorAppTag = "length-out-of-specified-bounds";
53             this.errorMessage = "The argument is out of bounds <" + min + ", " + max + ">";
54         }
55
56         @Override
57         public String getDescription() {
58             return description;
59         }
60
61         @Override
62         public String getErrorAppTag() {
63             return errorAppTag;
64         }
65
66         @Override
67         public String getErrorMessage() {
68             return errorMessage;
69         }
70
71         @Override
72         public String getReference() {
73             return reference;
74         }
75
76         @Override
77         public Number getMin() {
78             return min;
79         }
80
81         @Override
82         public Number getMax() {
83             return max;
84         }
85
86         @Override
87         public int hashCode() {
88             final int prime = 31;
89             int result = 1;
90             result = prime * result + ((description == null) ? 0 : description.hashCode());
91             result = prime * result + ((errorAppTag == null) ? 0 : errorAppTag.hashCode());
92             result = prime * result + ((errorMessage == null) ? 0 : errorMessage.hashCode());
93             result = prime * result + ((max == null) ? 0 : max.hashCode());
94             result = prime * result + ((min == null) ? 0 : min.hashCode());
95             result = prime * result + ((reference == null) ? 0 : reference.hashCode());
96             return result;
97         }
98
99         @Override
100         public boolean equals(final Object obj) {
101             if (this == obj) {
102                 return true;
103             }
104             if (obj == null) {
105                 return false;
106             }
107             if (getClass() != obj.getClass()) {
108                 return false;
109             }
110             final LengthConstraintImpl other = (LengthConstraintImpl) obj;
111             if (description == null) {
112                 if (other.description != null) {
113                     return false;
114                 }
115             } else if (!description.equals(other.description)) {
116                 return false;
117             }
118             if (errorAppTag == null) {
119                 if (other.errorAppTag != null) {
120                     return false;
121                 }
122             } else if (!errorAppTag.equals(other.errorAppTag)) {
123                 return false;
124             }
125             if (errorMessage == null) {
126                 if (other.errorMessage != null) {
127                     return false;
128                 }
129             } else if (!errorMessage.equals(other.errorMessage)) {
130                 return false;
131             }
132             if (max != other.max) {
133                 return false;
134             }
135             if (min != other.min) {
136                 return false;
137             }
138             if (reference == null) {
139                 if (other.reference != null) {
140                     return false;
141                 }
142             } else if (!reference.equals(other.reference)) {
143                 return false;
144             }
145             return true;
146         }
147
148         @Override
149         public String toString() {
150             StringBuilder builder = new StringBuilder();
151             builder.append("LengthConstraintImpl [min=");
152             builder.append(min);
153             builder.append(", max=");
154             builder.append(max);
155             builder.append(", description=");
156             builder.append(description);
157             builder.append(", errorAppTag=");
158             builder.append(errorAppTag);
159             builder.append(", reference=");
160             builder.append(reference);
161             builder.append(", errorMessage=");
162             builder.append(errorMessage);
163             builder.append("]");
164             return builder.toString();
165         }
166     }
167
168     private static final class RangeConstraintImpl implements RangeConstraint {
169         private final Number min;
170         private final Number max;
171
172         private final String description;
173         private final String reference;
174
175         private final String errorAppTag;
176         private final String errorMessage;
177
178         public RangeConstraintImpl(Number min, Number max, String description, String reference) {
179             super();
180             this.min = min;
181             this.max = max;
182             this.description = description;
183             this.reference = reference;
184
185             this.errorAppTag = "range-out-of-specified-bounds";
186             this.errorMessage = "The argument is out of bounds <" + min + ", " + max + ">";
187         }
188
189         @Override
190         public String getDescription() {
191             return description;
192         }
193
194         @Override
195         public String getErrorAppTag() {
196             return errorAppTag;
197         }
198
199         @Override
200         public String getErrorMessage() {
201             return errorMessage;
202         }
203
204         @Override
205         public String getReference() {
206             return reference;
207         }
208
209         @Override
210         public Number getMin() {
211             return min;
212         }
213
214         @Override
215         public Number getMax() {
216             return max;
217         }
218
219         @Override
220         public int hashCode() {
221             final int prime = 31;
222             int result = 1;
223             result = prime * result + ((description == null) ? 0 : description.hashCode());
224             result = prime * result + ((errorAppTag == null) ? 0 : errorAppTag.hashCode());
225             result = prime * result + ((errorMessage == null) ? 0 : errorMessage.hashCode());
226             result = prime * result + ((max == null) ? 0 : max.hashCode());
227             result = prime * result + ((min == null) ? 0 : min.hashCode());
228             result = prime * result + ((reference == null) ? 0 : reference.hashCode());
229             return result;
230         }
231
232         @Override
233         public boolean equals(final Object obj) {
234             if (this == obj) {
235                 return true;
236             }
237             if (obj == null) {
238                 return false;
239             }
240             if (getClass() != obj.getClass()) {
241                 return false;
242             }
243             final RangeConstraintImpl other = (RangeConstraintImpl) obj;
244             if (description == null) {
245                 if (other.description != null) {
246                     return false;
247                 }
248             } else if (!description.equals(other.description)) {
249                 return false;
250             }
251             if (errorAppTag == null) {
252                 if (other.errorAppTag != null) {
253                     return false;
254                 }
255             } else if (!errorAppTag.equals(other.errorAppTag)) {
256                 return false;
257             }
258             if (errorMessage == null) {
259                 if (other.errorMessage != null) {
260                     return false;
261                 }
262             } else if (!errorMessage.equals(other.errorMessage)) {
263                 return false;
264             }
265             if (max == null) {
266                 if (other.max != null) {
267                     return false;
268                 }
269             } else if (!max.equals(other.max)) {
270                 return false;
271             }
272             if (min == null) {
273                 if (other.min != null) {
274                     return false;
275                 }
276             } else if (!min.equals(other.min)) {
277                 return false;
278             }
279             if (reference == null) {
280                 if (other.reference != null) {
281                     return false;
282                 }
283             } else if (!reference.equals(other.reference)) {
284                 return false;
285             }
286             return true;
287         }
288
289         @Override
290         public String toString() {
291             final StringBuilder builder = new StringBuilder();
292             builder.append("RangeConstraintImpl [min=");
293             builder.append(min);
294             builder.append(", max=");
295             builder.append(max);
296             builder.append(", description=");
297             builder.append(description);
298             builder.append(", reference=");
299             builder.append(reference);
300             builder.append(", errorAppTag=");
301             builder.append(errorAppTag);
302             builder.append(", errorMessage=");
303             builder.append(errorMessage);
304             builder.append("]");
305             return builder.toString();
306         }
307     }
308
309     private static final class PatternConstraintImpl implements PatternConstraint {
310
311         private final String regex;
312         private final String description;
313         private final String reference;
314
315         private final String errorAppTag;
316         private final String errorMessage;
317
318         public PatternConstraintImpl(final String regex, final String description, final String reference) {
319             super();
320             this.regex = regex;
321             this.description = description;
322             this.reference = reference;
323
324             errorAppTag = "invalid-regular-expression";
325             // TODO: add erro message
326             errorMessage = "";
327         }
328
329         @Override
330         public String getDescription() {
331             return description;
332         }
333
334         @Override
335         public String getErrorAppTag() {
336             return errorAppTag;
337         }
338
339         @Override
340         public String getErrorMessage() {
341             return errorMessage;
342         }
343
344         @Override
345         public String getReference() {
346             return reference;
347         }
348
349         @Override
350         public String getRegularExpression() {
351             return regex;
352         }
353
354         @Override
355         public int hashCode() {
356             final int prime = 31;
357             int result = 1;
358             result = prime * result + ((description == null) ? 0 : description.hashCode());
359             result = prime * result + ((errorAppTag == null) ? 0 : errorAppTag.hashCode());
360             result = prime * result + ((errorMessage == null) ? 0 : errorMessage.hashCode());
361             result = prime * result + ((reference == null) ? 0 : reference.hashCode());
362             result = prime * result + ((regex == null) ? 0 : regex.hashCode());
363             return result;
364         }
365
366         @Override
367         public boolean equals(final Object obj) {
368             if (this == obj) {
369                 return true;
370             }
371             if (obj == null) {
372                 return false;
373             }
374             if (getClass() != obj.getClass()) {
375                 return false;
376             }
377             final PatternConstraintImpl other = (PatternConstraintImpl) obj;
378             if (description == null) {
379                 if (other.description != null) {
380                     return false;
381                 }
382             } else if (!description.equals(other.description)) {
383                 return false;
384             }
385             if (errorAppTag == null) {
386                 if (other.errorAppTag != null) {
387                     return false;
388                 }
389             } else if (!errorAppTag.equals(other.errorAppTag)) {
390                 return false;
391             }
392             if (errorMessage == null) {
393                 if (other.errorMessage != null) {
394                     return false;
395                 }
396             } else if (!errorMessage.equals(other.errorMessage)) {
397                 return false;
398             }
399             if (reference == null) {
400                 if (other.reference != null) {
401                     return false;
402                 }
403             } else if (!reference.equals(other.reference)) {
404                 return false;
405             }
406             if (regex == null) {
407                 if (other.regex != null) {
408                     return false;
409                 }
410             } else if (!regex.equals(other.regex)) {
411                 return false;
412             }
413             return true;
414         }
415
416         @Override
417         public String toString() {
418             StringBuilder builder = new StringBuilder();
419             builder.append("PatternConstraintImpl [regex=");
420             builder.append(regex);
421             builder.append(", description=");
422             builder.append(description);
423             builder.append(", reference=");
424             builder.append(reference);
425             builder.append(", errorAppTag=");
426             builder.append(errorAppTag);
427             builder.append(", errorMessage=");
428             builder.append(errorMessage);
429             builder.append("]");
430             return builder.toString();
431         }
432     }
433 }