/*********************************************************************
*	All Right reserved,Copyright (c) Fujitsu, 2010
**********************************************************************
*＜プログラム内容＞
*	システム名		：Futurity
*	モジュール名	：JACPrcMessageGetUtil
*	ソースファイル名：JACPrcMessageGetUtil.java
*	作成者			：富士通
*	日付			：2012年08月06日
*＜機能概要＞
*	ログ出力制御クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/08/06	富士通 藤井 新規作成
*
**********************************************************************/

package eo.business.common;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Locale;
import java.util.ResourceBundle;


public class JACPrcMessageGetUtil {
	/**
	 * メッセージMap
	 */
	private static HashMap<String, String> msgMap = null;
	
	/**
	 * コンストラクタ
	 * プロパティファイルの内容をHashMapに格納する。
	 * @throws Exception
	 */
	public JACPrcMessageGetUtil() throws Exception
	{
		msgMap = new HashMap<String, String>();
		
		// 料金メッセージ一覧プロパティファイルの絶対パスを取得する。
		// 絶対パス取得方法を、業パラ（AC_BATMSG）から、以下の方式に変更
		ResourceBundle prop = ResourceBundle.getBundle("ACBatMsgIcrn", Locale.JAPAN);
		Enumeration<String> keys = prop.getKeys();
		
		String keyStr = null;
		
		while (keys.hasMoreElements()) {
			keyStr = keys.nextElement();
			msgMap.put(keyStr, prop.getString(keyStr));
		}
	}
	
	
	/**
	 * メッセージ取得処理(置換文字列あり)
	 * 
	 * メッセージを取得する。
	 * @param msgid 
	 * 		   メッセージID
	 * @param repChar
	 * 		   置換文字列(配列で複数指定可能)
	 * @return msg
	 * 		   メッセージ内容
	 */
	public String getMessage(String msgid, String[] repChar)
	{
		//メッセージを取得
		String msg =  getMessage(msgid);

		//置換文字なしの場合はメッセージをそのまま返却
		if(repChar==null || repChar.length==0)
		{
			return msg;
		}
		//以下を置換文字列の桁数だけ繰り返す。
		for(int i=0;i<repChar.length;i++)
		{
			if(repChar[i] == null)
			{
				repChar[i] = "";
			}
			msg = msg.replace("%"+(i+1)+"%", repChar[i]);
		}
		return msg;
	}
	
	/**
	 * メッセージ取得処理(置換文字列なし)
	 * 
	 * メッセージを取得する。
	 * @param msgid
	 * 		   メッセージID
	 * @return msg
	 * 		   メッセージ内容
	 */

	public String getMessage(String msgid	)
	{
		//メッセージを取得
		String msg = (String)msgMap.get(msgid);
		if(msg == null)
		{
			return "メッセージ未登録("+msgid+")";
		}
		return msg;
	}
}
