View Javadoc

1   package org.seasar.cubby.validator;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   /**
7    * 入力検証を保持するクラス
8    * @author agata
9    */
10  public class DefaultValidationRules implements ValidationRules {
11  
12  	/**
13  	 * 入力検証ルールのリスト
14  	 */
15  	public final List<ValidationRule> rules = new ArrayList<ValidationRule>();
16  
17  	/**
18  	 * メッセージキーのプリフィックス
19  	 */
20  	private final String resourceKeyPrefix;
21  
22  	/**
23  	 * メッセージキーのプリフィックスなしのコンストラクタ
24  	 */
25  	public DefaultValidationRules() {
26  		this(null);
27  	}
28  
29  	/**
30  	 * メッセージキーのプリフィックス付きのコンストラクタ
31  	 * @param resourceKeyPrefix メッセージキーのプリフィックス
32  	 */
33  	public DefaultValidationRules(final String resourceKeyPrefix) {
34  		this.resourceKeyPrefix = resourceKeyPrefix;
35  		initialize();
36  	}
37  	
38  	/**
39  	 * 初期化メソッド。
40  	 * このメソッドをサブクラスでオーバーライドして各項目の入力検証ルールを追加します。
41  	 */
42  	public void initialize() {
43  	}
44  	
45  	/**
46  	 * 入力検証ルールを追加します。
47  	 * @param rule 入力検証ルール
48  	 */
49  	protected void add(final ValidationRule rule) {
50  		rules.add(rule);
51  	}
52  
53  	/**
54  	 * 入力検証ルールを追加します。
55  	 * 項目名のメッセージキーとしてパラメータ名が使用されます。
56  	 * @param paramName パラメータ名
57  	 * @param validators 入力検証ルールリスト
58  	 */
59  	public void add(final String paramName, final Validator... validators) {
60  		add(paramName, paramName, validators);
61  	}
62  	/**
63  	 * 項目名のメッセージキーを指定して入力検証ルールを追加します。
64  	 * @param paramName パラメータ名
65  	 * @param paramNameMessageKey 項目名のメッセージキー
66  	 * @param validators 入力検証ルールリスト
67  	 */
68  	public void add(final String paramName, final String paramNameMessageKey, final Validator... validators) {
69  		add(new PropertyValidationRule(paramName, makePropertyNameKey(paramNameMessageKey), validators));
70  	}
71  
72  	/**
73  	 * メッセージキーを作成します。
74  	 * キーのプリフィックスが指定されていた場合、メッセージキーに付加します。
75  	 * @param messageKey メッセージキー
76  	 * @return 作成後のメッセージキー
77  	 */
78  	private String makePropertyNameKey(final String messageKey) {
79  		if (resourceKeyPrefix == null) {
80  			return messageKey;
81  		} else {
82  			return resourceKeyPrefix + messageKey;
83  		}
84  	}
85  	
86  	/**
87  	 * 入力検証ルールを取得します。
88  	 * @see ValidationRules#getRules()
89  	 */
90  	public List<ValidationRule> getRules() {
91  		return rules;
92  	}
93  
94  }