/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFURegistProgressCache
*   ソースファイル名：JFURegistProgressCache.java
*   作成者          ：富士通
*   日付            ：2012年09月10日
*＜機能概要＞
*   進捗登録設定用定義ファイル読み込み部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/09/10   FJ）西川    新規作成
*
**********************************************************************/
package eo.web.webview.common;

import eo.common.constant.JFUStrConst;

/**
 * XML形式プロパティファイル読み込み抽象部品です。
 * <br>
 * @author 富士通
 */
public class JFURegistProgressCache extends JFUXMLPropertyCache
{

	/** インスタンス領域 */
	private static final JFURegistProgressCache SINGLETON_INSTANCE = new JFURegistProgressCache();

	/** 個別外部リンクノード(進捗特記事項1) */
	public static final String PRG_TKJK_1_PATH = "KK_T_PRG/SETTING[@screenId='${screenId}']/PRG_TKJK_1[@id='${processId}']/text()";

	/** 個別外部リンクノード(進捗特記事項2) */
	public static final String PRG_TKJK_2_PATH = "KK_T_PRG/SETTING[@screenId='${screenId}']/PRG_TKJK_2[@id='${processId}']/text()";

	/**
	 * アプリケーションプロパティファイルから、定義ファイルのパスを取得しシングルトンでインスタンス化します。
	 */
	private JFURegistProgressCache()
	{
		// アプリケーションプロパティファイルから定義ファイルのパスを取得
		String restFilePath = JCCWebCommon.getApplicationConst("FUREG_PRG_SETTING_FILE_PATH");
		super.setFilePath(restFilePath);
	}

	/**
	 * シングルトンインスタンスを返却します。
	 * <br>
	 * @return JFURegistProgressCacheインスタンス
	 * @throws Exception 読込時に発生する例外
	 */
	public static JFURegistProgressCache getInstance() throws Exception
	{
		JFURegistProgressCache.SINGLETON_INSTANCE.loadProperties();
		return JFURegistProgressCache.SINGLETON_INSTANCE;
	}

	/**
	 * 特記事項の内容を返却します。
	 * <br>
	 * @param xmlPath XMLパス
	 * @param screenId 画面ID
	 * @param processId 処理ID
	 * @param repMsgArray 置換メッセージ配列
	 * @return 進捗登録メッセージ設定
	 * @throws Exception XML解析時に発生する例外
	 */
	public String getPrgAddTkjk(String xmlPath, String screenId, String processId, String[] repMsgArray) throws Exception
	{
		return repMsg(super.getItem((xmlPath.replace("${screenId}", screenId)).replace("${processId}", processId)), repMsgArray);
	}

	/**
	 * メッセージの文字列置換を行います。
	 * <br>
	 * @param msg メッセージ
	 * @param repMsgArray 置換メッセージ配列
	 * @return 置換後メッセージ
	 * @throws Exception XML解析時に発生する例外
	 */
	private String repMsg(String msg, String[] repMsgArray)
	{
		String repMsg = msg;
		if (repMsgArray != null)
		{
			for (int i = 0; i < repMsgArray.length; i++)
			{
				repMsg = repMsg.replace(JFUStrConst.PERCENT + i + JFUStrConst.PERCENT, repMsgArray[i]);
			}
		}
		return repMsg;
	}
}
