jp.sourceforge.masasa.architecture.framework.validation.validator

## インタフェース IValidator

- 既知の実装クラスのリスト:
    ValidateByte, ValidateCreditCard, ValidateDate, ValidateDouble, ValidateDoubleRange, ValidateEmail, ValidateFloat, ValidateFloatRange, ValidateInteger, ValidateIntRange, ValidateLong, ValidateMask, ValidateMaxLength, ValidateMinLength, ValidateRequired, ValidateRequiredIf, ValidateShort, ValidateUrl

      public interface IValidator

  バリデーション機能のインタフェースを提供します.

  相関チェックなどで`lineObject`からフィールド値を取得する場合の実装例.
  1. `IValidator`を実装するクラス内で、 `MethodAccessUtil.doInvoke(Object, String)`を使い、相関対象の値を取得する.
     - 第一引数 : invoke対象のオブジェクト.
     - 第二引数 : invoke対象のフィールド名.
     ヒント．第二引数はアノテーションで渡せるようにすると良い.

          @Target(ElementType.FIELD)
          @Retention(RetentionPolicy.RUNTIME)
          @ValidateResolver(CheckRulesEnum.XXXCheck)
          public @interface CheckXXX {
              // 相関フィールドを返却する.
              String[] correlationFields();
          }

  2. `IValidator`を実装するクラス内で、相関チェックを行う.

          // targetValueがアノテーションで渡されるどのフィールド値よりも小さいことをチェックする例.
          public boolean validate(final Annotation anno, final String targetValue, final Object lineObject) {
              CheckXXX resolver = (CheckXXX) anno;
              if (!resolver.verifyWhenNull() && targetValue == null) { return true; }
              String[] fieldNames = resolver.correlationFields();
              String compareValue = null;
              for (int i = 0; i < fieldNames.length(); i++) {
                  compareValue = MethodAccessUtil.doInvoke(lineObject, fieldNames[i]);
                  if (targetValue.compareTo(compareValue) > 0) { return false; }
              }
              return true;
          }

  作成者:
    masasa.

- - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `boolean` | `validate(Annotation anno, String targetValue, Object lineObject)` バリデーションを実行します.

- - ### メソッドの詳細

    - #### validate

          boolean validate(Annotation anno,
                         String targetValue,
                         Object lineObject)

      バリデーションを実行します.
      パラメータ:
        `anno` - バリデーションに対応するアノテーション.
        `targetValue` - 検証値.
        `lineObject` - Beanが所属するオブジェクト.
      戻り値:
        バリデーション結果.
        - `true`:エラーなし.
        - `false`:エラーあり.