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 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;
14 public final class BaseConstraints {
16 private BaseConstraints() {
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);
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);
29 public static PatternConstraint patternConstraint(final String pattern, final String description,
30 final String reference) {
31 return new PatternConstraintImpl(pattern, description, reference);
34 private static final class LengthConstraintImpl implements LengthConstraint {
36 private final Number min;
37 private final Number max;
39 private final String description;
40 private final String reference;
42 private final String errorAppTag;
43 private final String errorMessage;
45 public LengthConstraintImpl(Number min, Number max, final String description, final String reference) {
49 this.description = description;
50 this.reference = reference;
52 this.errorAppTag = "length-out-of-specified-bounds";
53 this.errorMessage = "The argument is out of bounds <" + min + ", " + max + ">";
57 public String getDescription() {
62 public String getErrorAppTag() {
67 public String getErrorMessage() {
72 public String getReference() {
77 public Number getMin() {
82 public Number getMax() {
87 public int hashCode() {
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());
100 public boolean equals(final Object obj) {
107 if (getClass() != obj.getClass()) {
110 final LengthConstraintImpl other = (LengthConstraintImpl) obj;
111 if (description == null) {
112 if (other.description != null) {
115 } else if (!description.equals(other.description)) {
118 if (errorAppTag == null) {
119 if (other.errorAppTag != null) {
122 } else if (!errorAppTag.equals(other.errorAppTag)) {
125 if (errorMessage == null) {
126 if (other.errorMessage != null) {
129 } else if (!errorMessage.equals(other.errorMessage)) {
132 if (max != other.max) {
135 if (min != other.min) {
138 if (reference == null) {
139 if (other.reference != null) {
142 } else if (!reference.equals(other.reference)) {
149 public String toString() {
150 StringBuilder builder = new StringBuilder();
151 builder.append("LengthConstraintImpl [min=");
153 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);
164 return builder.toString();
168 private static final class RangeConstraintImpl implements RangeConstraint {
169 private final Number min;
170 private final Number max;
172 private final String description;
173 private final String reference;
175 private final String errorAppTag;
176 private final String errorMessage;
178 public RangeConstraintImpl(Number min, Number max, String description, String reference) {
182 this.description = description;
183 this.reference = reference;
185 this.errorAppTag = "range-out-of-specified-bounds";
186 this.errorMessage = "The argument is out of bounds <" + min + ", " + max + ">";
190 public String getDescription() {
195 public String getErrorAppTag() {
200 public String getErrorMessage() {
205 public String getReference() {
210 public Number getMin() {
215 public Number getMax() {
220 public int hashCode() {
221 final int prime = 31;
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());
233 public boolean equals(final Object obj) {
240 if (getClass() != obj.getClass()) {
243 final RangeConstraintImpl other = (RangeConstraintImpl) obj;
244 if (description == null) {
245 if (other.description != null) {
248 } else if (!description.equals(other.description)) {
251 if (errorAppTag == null) {
252 if (other.errorAppTag != null) {
255 } else if (!errorAppTag.equals(other.errorAppTag)) {
258 if (errorMessage == null) {
259 if (other.errorMessage != null) {
262 } else if (!errorMessage.equals(other.errorMessage)) {
266 if (other.max != null) {
269 } else if (!max.equals(other.max)) {
273 if (other.min != null) {
276 } else if (!min.equals(other.min)) {
279 if (reference == null) {
280 if (other.reference != null) {
283 } else if (!reference.equals(other.reference)) {
290 public String toString() {
291 final StringBuilder builder = new StringBuilder();
292 builder.append("RangeConstraintImpl [min=");
294 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);
305 return builder.toString();
309 private static final class PatternConstraintImpl implements PatternConstraint {
311 private final String regex;
312 private final String description;
313 private final String reference;
315 private final String errorAppTag;
316 private final String errorMessage;
318 public PatternConstraintImpl(final String regex, final String description, final String reference) {
321 this.description = description;
322 this.reference = reference;
324 errorAppTag = "invalid-regular-expression";
325 // TODO: add erro message
330 public String getDescription() {
335 public String getErrorAppTag() {
340 public String getErrorMessage() {
345 public String getReference() {
350 public String getRegularExpression() {
355 public int hashCode() {
356 final int prime = 31;
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());
367 public boolean equals(final Object obj) {
374 if (getClass() != obj.getClass()) {
377 final PatternConstraintImpl other = (PatternConstraintImpl) obj;
378 if (description == null) {
379 if (other.description != null) {
382 } else if (!description.equals(other.description)) {
385 if (errorAppTag == null) {
386 if (other.errorAppTag != null) {
389 } else if (!errorAppTag.equals(other.errorAppTag)) {
392 if (errorMessage == null) {
393 if (other.errorMessage != null) {
396 } else if (!errorMessage.equals(other.errorMessage)) {
399 if (reference == null) {
400 if (other.reference != null) {
403 } else if (!reference.equals(other.reference)) {
407 if (other.regex != null) {
410 } else if (!regex.equals(other.regex)) {
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);
430 return builder.toString();