package com.pgf.mqspring.component; import java.text.MessageFormat; import org.springframework.context.support.ResourceBundleMessageSource; import com.pgf.mqspring.constant.MqSpringMessageId; /** * MessageSource実装クラス *
* メッセージIdに紐づくメッセージを取得する。 * */ public class MqSpringMessageSourceComponent extends ResourceBundleMessageSource { /** メッセージフォーマット */ private static final String MESSAGE_FORMAT = "[{0}] [{1}]:{2}"; /** デフォルトメッセージフォーマット */ private static final String DEFAULT_FORMAT = "{0}の取得に失敗しました。"; /** アプリケーション名 */ private final String appName; /** コンストラクタ */ public MqSpringMessageSourceComponent(String appName) { this.appName = appName; } /** * メッセージ取得 *
* 基底クラス.getMessageを実行し、メッセージを取得する。以下引数。
* ・引数のメッセージID.name()
* ・引数の可変長置換文字列
* ・引数のメッセージID.name()+"の取得に失敗しました。"
* ・基底クラス.getDefaultLocale()
* 以下の形式でメッセージを返却する。
* メッセージが存在する場合
* "[アプリケーション名] ["+引数のメッセージID.name()+"]:"+メッセージ
* メッセージが存在しない場合
* "[アプリケーション名] ["+引数のメッセージID.name()+"]:"+引数のメッセージID.name()+"の取得に失敗しました。"
*
* @param messageId メッセージID
* @param args 可変長置換文字列
* @return メッセージIdに紐づくメッセージ
*/
public String getMessage(MqSpringMessageId messageId, Object... args) {
String rawMessage = super.getMessage(messageId.name(), args, MessageFormat.format(DEFAULT_FORMAT, messageId),
getDefaultLocale());
return MessageFormat.format(MESSAGE_FORMAT, appName, messageId.name(), rawMessage);
}
}