1 package org.seasar.cubby.validator.validators;
2
3 import org.seasar.cubby.validator.BaseValidator;
4 import org.seasar.cubby.validator.ValidationContext;
5 import org.seasar.framework.util.StringUtil;
6
7
8
9
10
11
12 public class RangeValidator extends BaseValidator {
13
14
15
16
17 private final long min;
18
19
20
21
22 private final long max;
23
24
25
26
27
28
29 public RangeValidator(final long min, final long max) {
30 this(min, max, "valid.range");
31 }
32
33
34
35
36
37
38
39 public RangeValidator(final long min, final long max,
40 final String messageKey) {
41 this.min = min;
42 this.max = max;
43 this.setMessageKey(messageKey);
44 }
45
46 public String validate(final ValidationContext ctx) {
47 final Object value = ctx.getValue();
48 if (value instanceof String) {
49 String str = (String) value;
50 if (StringUtil.isEmpty(str)) {
51 return null;
52 }
53 try {
54 long longValue = Long.parseLong(str);
55 if (longValue >= min && longValue <= max) {
56 return null;
57 }
58 } catch (NumberFormatException e) {
59 }
60 } else if (value == null) {
61 return null;
62 }
63 return getMessage(getPropertyMessage(ctx.getName()), min, max);
64 }
65 }