/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCCCommonErrorFileCache
*   ソースファイル名：JCCCommonErrorFileCache.java
*   作成者          ：富士通
*   日付            ：2011年04月19日
*＜機能概要＞
*   共通エラー画面定義ファイルキャッシュ部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/19   FJ）山下    新規作成
*
**********************************************************************/

package eo.web.webview.common;

import com.fujitsu.futurity.common.JCMPropertyCache;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

public class JCCCommonErrorFileCache extends JCMPropertyCache {

	/**
	 * アプリケーションプロパティファイルから、共通エラー画面定義ファイルのパスと文字エンコーディングを取得し、
	 * シングルトンでインスタンス化したクラスに設定します。
	 */
	public static void setPath() {
		// アプリケーションプロパティファイルから共通エラー画面定義ファイルのパスを取得
		String RESTRICTION_FILE_PATH = JCMAPLConstMgr.getString("COMMON_ERROR_FILE_PATH");
		// アプリケーションプロパティファイルから文字エンコード種別を取得
		String RESTRICTION_FILE_ENCODING = JCMAPLConstMgr.getString("COMMON_ERROR_FILE_ENCODING");
		
		// シングルトンでインスタンス化
		JCCCommonErrorFileCache rc = JCCCommonErrorFileCache.getInstance();
		
		// 共通エラー画面定義ファイルのパスをインスタンスに設定
		rc.PATH = RESTRICTION_FILE_PATH;
		// 文字エンコーディングをインスタンスに設定
		rc.ENCODING = RESTRICTION_FILE_ENCODING;
	}
	
	/** 共通エラー画面定義ファイルキャッシュクラスのインスタンス */
	private static JCCCommonErrorFileCache prop = null;
	
	/**
	 * 共通エラー画面定義ファイルキャッシュクラスのインスタンスを取得します。
	 * @return 共通エラー画面定義ファイルキャッシュクラスのインスタンス
	 */
	private static JCCCommonErrorFileCache getInstance() {
		
		if (prop == null) {
			prop = new JCCCommonErrorFileCache();
		}
		
		return prop;
	}
	
	/**
	 * 
	 * setPathメソッドで指定したプロパティファイルから、指定したキーで値を取得します。
	 * 
	 * @param key setPathメソッドで指定したプロパティファイルのキー項目
	 * @return 指定したキーに対応する値
	 * @throws Exception
	 */
	public static String getValue(String key) throws Exception {
		// 親クラスのgetValuePropで返却
		return JCCCommonErrorFileCache.getInstance().getValueProp(key);
	}
	
	/**
	 * 
	 * setPathメソッドで指定した共通エラー画面定義ファイルから<BR>
	 * 指定したキーのメッセージを取得し、<BR>
	 * 指定した置換文字を設定したメッセージを返却します。<BR>
	 * 
	 * @param key 共通エラー画面定義ファイルに定義されているメッセージID
	 * @param replaceWords 置換文字
	 * @return 本文に置換文字を設定したメッセージ
	 * @throws Exception
	 */
	public static String getValue(String key, String[] replaceWords) throws Exception {
		// 親クラスのgetValuePropで取得した本文に置換文字を設定して返却
		return replaceCharacter( JCCCommonErrorFileCache.getInstance().getValueProp(key) , replaceWords );
	}
	
	/**
	 * メッセージに置換文字の設定を行う。
	 * <br>
	 * @param msg		メッセージ
	 * @param rep		置換文字配列
	 * @return			置換後メッセージ
	 */
	private static String replaceCharacter(String msg,String[] rep)
	{
		for(int i=0;i<rep.length;i++)
		{
			msg = msg.replace("%"+(i+1)+"%", rep[i]);
		}
		return msg;
	}
}
