/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JUFMskmDmenXmlCache
*   ソースファイル名：JUFMskmDmenXmlCache.java
*   作成者          ：富士通
*   日付            ：2012年06月20日
*＜機能概要＞
*   申込断面XMLファイルキャッシュ部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00       2012/06/20   FJ)西川     新規作成
*   v10.00      2014/08/13   FJ)西川    【OM-2014-0002713】フロント、バックヤード申込の競合不具合
*
**********************************************************************/

package eo.common.util;

import com.fujitsu.futurity.common.JCMPropertyCache;

/**
 * 申込断面XMLファイルキャッシュ部品です。
 * <br>
 * @author 富士通
 */
public class JFUMskmDmenXmlCache extends JCMPropertyCache
{

	/** 申込断面XMLエンコード文字 */
	public static final String MSKM_DMEN_XML_ENCODING = "UTF-8";

	/** ファイル内容を格納する文字列バッファ */
	private StringBuffer strFileBuf = new StringBuffer();

	/** フロントとバックヤード用の申込断面XMLファイルキャッシュオブジェクトを生成 */
	private static JFUMskmDmenXmlCache[] prop = { new JFUMskmDmenXmlCache(), new JFUMskmDmenXmlCache() };

	/**
	 * 定義ファイルのパスを設定します。
	 * <br>
	 * @param path ファイルのパス
	 * @param sbtIdx	申込断面XML種別番号（0:フロント、1:バックヤード）
	 *
	 */
	public static synchronized void setPath(String path, int sbtIdx)
	{
		// シングルトンでインスタンス化
		JFUMskmDmenXmlCache rc = JFUMskmDmenXmlCache.getInstance(sbtIdx);

		rc.PATH = path;
		rc.ENCODING = MSKM_DMEN_XML_ENCODING;
	}

	/**
	 * 本クラスのシングルトンインスタンスを取得します。
	 *
	 * @param sbtIdx	申込断面XML種別番号（0:フロント、1:バックヤード）
	 * @return JUFMskmDmenXmlCache シングルトンインスタンス
	 */
	private static JFUMskmDmenXmlCache getInstance(int sbtIdx)
	{
		return prop[sbtIdx];
	}

	/**
	 * 定義情報（1行）の文字列をファイル内容文字列に格納します。
	 * <br>
	 * @param strLine 定義情報（1行）の文字列
	 * @throws Exception すべての例外
	 */
	@SuppressWarnings("unchecked")
	@Override
	protected void analysisLineData(String strLine) throws Exception
	{
		if (super.mapConst.isEmpty())
		{
			// 文字列バッファの初期化
			strFileBuf = new StringBuffer();
		}

		strFileBuf.append(strLine);
		super.mapConst.put(this.getClass().getSimpleName(), strFileBuf.toString());
	}

	/**
	 * ファイル内容文字列を返却します。
	 *
	 * @param sbtIdx	申込断面XML種別番号（0:フロント、1:バックヤード）
	 * @return String     ファイル内容文字列
	 * @throws Exception プロパティファイルの読み込み時に発生する例外
	 */
	public static synchronized String getFileString(int sbtIdx) throws Exception
	{
		// 申込断面XMLファイルの読み込み
		prop[sbtIdx].loadProperties();
		// ファイル内容文字列を返却
		return JFUMskmDmenXmlCache.getInstance(sbtIdx).strFileBuf.toString();
	}
}
