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