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 public class RangeValidator extends BaseValidator {
8
9 private final long min;
10
11 private final long max;
12
13 public RangeValidator(final long min, final long max) {
14 this(min, max, "valid.range");
15 }
16
17 public RangeValidator(final long min, final long max,
18 final String messageKey) {
19 this.min = min;
20 this.max = max;
21 this.setMessageKey(messageKey);
22 }
23
24 public String validate(final ValidationContext ctx) {
25 final Object value = ctx.getValue();
26 if (value instanceof String) {
27 String str = (String) value;
28 if (StringUtil.isEmpty(str)) {
29 return null;
30 }
31 try {
32 long longValue = Long.parseLong(str);
33 if (longValue >= min && longValue <= max) {
34 return null;
35 }
36 } catch (NumberFormatException e) {
37 }
38 } else if (value == null) {
39 return null;
40 }
41 return getMessage(getPropertyMessage(ctx.getName()), min, max);
42 }
43 }