View Javadoc

1   /*
2    * Copyright 2004-2009 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.seasar.cubby.action;
17  
18  import org.seasar.cubby.util.Messages;
19  
20  /**
21   * メッセージ情報です。
22   * 
23   * @author baba
24   */
25  public class MessageInfo {
26  
27  	/** {@link Messages} からメッセージを取得するためのキー。 */
28  	private String key;
29  
30  	/** メッセージの置換パターンを置き換えるオブジェクトからなる配列。 */
31  	private Object[] arguments;
32  
33  	/**
34  	 * {@link Messages} からメッセージを取得するためのキーを取得します。
35  	 * 
36  	 * @return キー
37  	 */
38  	public String getKey() {
39  		return key;
40  	}
41  
42  	/**
43  	 * {@link Messages} からメッセージを取得するためのキーを設定します。
44  	 * 
45  	 * @param key
46  	 *            キー
47  	 */
48  	public void setKey(final String key) {
49  		this.key = key;
50  	}
51  
52  	/**
53  	 * メッセージの置換パターンを置き換えるオブジェクトからなる配列を取得します。
54  	 * 
55  	 * @return 置換文字列の配列
56  	 */
57  	public Object[] getArguments() {
58  		if (arguments == null) {
59  			return null;
60  		}
61  		return arguments.clone();
62  	}
63  
64  	/**
65  	 * メッセージの置換パターンを置き換えるオブジェクトからなる配列を取得します。
66  	 * 
67  	 * @param arguments
68  	 *            置換文字列
69  	 */
70  	public void setArguments(final Object... arguments) {
71  		final Object[] copyArguments = new Object[arguments.length];
72  		System.arraycopy(arguments, 0, copyArguments, 0, arguments.length);
73  		this.arguments = copyArguments;
74  	}
75  
76  	/**
77  	 * メッセージ文字列に変換します。
78  	 * 
79  	 * @param fieldNameKey
80  	 *            フィールド名のリソースキー
81  	 * @return メッセージ文字列
82  	 */
83  	public String toMessage(final String fieldNameKey) {
84  		final Object[] args;
85  		if (fieldNameKey != null) {
86  			if (this.arguments != null) {
87  				args = new Object[this.arguments.length + 1];
88  				final String paramNameText = Messages.getText(fieldNameKey);
89  				args[0] = paramNameText;
90  				System.arraycopy(this.arguments, 0, args, 1,
91  						this.arguments.length);
92  			} else {
93  				args = new Object[] { Messages.getText(fieldNameKey) };
94  			}
95  		} else {
96  			args = this.arguments;
97  		}
98  		return Messages.getText(key, args);
99  	}
100 
101 }