All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.core.validation.ValidationUtil Maven / Gradle / Ivy

The newest version!
package nablarch.core.validation;

import java.lang.annotation.Annotation;
import java.util.Collections;
import java.util.Map;

import nablarch.core.message.Message;
import nablarch.core.message.MessageUtil;
import nablarch.core.message.StringResource;
import nablarch.core.repository.SystemRepository;
import nablarch.core.util.annotation.Published;


/**
 * バリデーションの実行時に使用するユーティリティクラス。
* 全てのメソッドは{@link SystemRepository}から"validationManager"という名前で取得した{@link ValidationManager}に処理を委譲する。 * * @author Koichi Asano * */ public final class ValidationUtil { /** * 隠蔽コンストラクタ。 */ private ValidationUtil() { } /** * {@link SystemRepository}に定義されている{@link ValidationManager}の名称。 */ private static final String VALIDATION_MANAGER_NAME = "validationManager"; /** * {@link SystemRepository}から{@link ValidationManager}を取得する。 * @return {@link SystemRepository}から取得した{@link ValidationManager} * @throws IllegalStateException {@link ValidationManager}を取得できなかった場合 */ private static ValidationManager getManager() { ValidationManager validationManager = SystemRepository.get(VALIDATION_MANAGER_NAME); if (validationManager == null) { throw new IllegalStateException("can't get ValidationManager instance from System Repository." + "check configuration. key=[" + VALIDATION_MANAGER_NAME + "]"); } return validationManager; } /** * バリデーション対象のプロパティを指定してバリデーションを行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param context バリデーションコンテキスト * @param propertyNames バリデーション対象とするプロパティ名の配列 */ @Published public static void validate(ValidationContext context, String[] propertyNames) { getManager().validate(context, propertyNames); } /** * 対象のプロパティについて、指定したアノテーションクラスに従ったバリデーションを行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param context バリデーションコンテキスト * @param propertyName バリデーション対象とするプロパティ名 * @param annotation バリデーション用のアノテーションクラス * @param params バリデーション用のアノテーションパラメータ */ @Published(tag = "architect") public static void validate(ValidationContext context, String propertyName, Class annotation, Map params) { getManager().validate(context, propertyName, annotation, params); } /** * 対象のプロパティについて、指定したアノテーションクラスに従ったバリデーションを行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param context バリデーションコンテキスト * @param propertyName バリデーション対象とするプロパティ名 * @param annotation バリデーション用のアノテーションクラス */ @Published(tag = "architect") @SuppressWarnings("unchecked") public static void validate(ValidationContext context, String propertyName, Class annotation) { getManager().validate(context, propertyName, annotation, Collections.EMPTY_MAP); } /** * バリデーション対象としないプロパティを指定してバリデーションを行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param context バリデーションコンテキスト * @param propertyNames バリデーション対象としないプロパティ名の配列 */ @Published public static void validateWithout(ValidationContext context, String[] propertyNames) { getManager().validateWithout(context, propertyNames); } /** * すべてのプロパティについてバリデーションを行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param context バリデーションコンテキスト */ @Published public static void validateAll(ValidationContext context) { validateWithout(context, new String[0]); } /** * リクエストのバリデーションと変換を行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param targetClass バリデーション対象のフォームクラス * @param params バリデーション対象のデータ * @param validateFor targetClassのバリデーション対象メソッドに付与した{@link ValidateFor}の値 * @return バリデーション結果の入ったバリデーションコンテキスト * */ @Published public static ValidationContext validateAndConvertRequest( Class targetClass, Map params, String validateFor) { ValidationContext result = getManager().validateAndConvert("", targetClass, params, validateFor); return result; } /** * リクエストのバリデーションと変換を行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param targetClass バリデーション対象のフォームクラス * @param request リクエスト * @param validateFor targetClassのバリデーション対象メソッドに付与した{@link ValidateFor}の値 * @return バリデーション結果の入ったバリデーションコンテキスト */ @Published public static ValidationContext validateAndConvertRequest( Class targetClass, Validatable request, String validateFor) { return validateAndConvertRequest("", targetClass, request.getParamMap(), validateFor); } /** * リクエストのバリデーションと変換を行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param prefix リクエストパラメータ名のプレフィクス * @param targetClass バリデーション対象のフォームクラス * @param params バリデーション対象のデータ * @param validateFor targetClassのバリデーション対象メソッドに付与した{@link ValidateFor}の値 * @return バリデーション結果の入ったバリデーションコンテキスト * */ @Published public static ValidationContext validateAndConvertRequest( String prefix, Class targetClass, Map params, String validateFor) { ValidationContext result = getManager().validateAndConvert(prefix, targetClass, params, validateFor); return result; } /** * リクエストのバリデーションと変換を行う。 *

* バリデーション結果は{@link ValidationContext}に保持される。 * * @param バリデーション結果で取得できる型 * @param prefix リクエストパラメータ名のプレフィクス * @param targetClass バリデーション対象のフォームクラス * @param request リクエスト * @param validateFor targetClassのバリデーション対象メソッドに付与した{@link ValidateFor}の値 * @return バリデーション結果の入ったバリデーションコンテキスト */ @Published public static ValidationContext validateAndConvertRequest( String prefix, Class targetClass, Validatable request, String validateFor) { return validateAndConvertRequest(prefix, targetClass, request.getParamMap(), validateFor); } /** * 特定のプロパティに対するバリデーションエラーメッセージを作成する。 * * @param fullPropertyName プレフィクスを含むプロパティ名 * @param messageId エラーメッセージのメッセージID * @param options メッセージフォーマットのテンプレート文字列に埋め込む値 * @return 特定のプロパティに対するバリデーションエラーメッセージ */ @Published public static Message createMessageForProperty(String fullPropertyName, String messageId, Object... options) { StringResource resource = MessageUtil.getStringResource(messageId); return new ValidationResultMessage(fullPropertyName, resource, options); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy