Coverage Report - org.seasar.cubby.validator.validators.RangeValidator
 
Classes in this File Line Coverage Branch Coverage Complexity
RangeValidator
100%
7/7
N/A
3.667
 
 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  
  * @author agata
 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  
          * @param min ?小?
 27  
          * @param max ?大値
 28  
          */
 29  
         public RangeValidator(final long min, final long max) {
 30  3
                 this(min, max, "valid.range");
 31  3
         }
 32  
 
 33  
         /**
 34  
          * エラーメ?セージキーを指定するコンストラクタ
 35  
          * @param min ?小?
 36  
          * @param max ?大値
 37  
          * @param messageKey エラーメ?セージキー
 38  
          */
 39  
         public RangeValidator(final long min, final long max,
 40  3
                         final String messageKey) {
 41  3
                 this.min = min;
 42  3
                 this.max = max;
 43  3
                 this.setMessageKey(messageKey);
 44  3
         }
 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  
 }