/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCCUploadRestrictionCache
*   ソースファイル名：JCCUploadRestrictionCache.java
*   作成者          ：富士通
*   日付            ：2011年04月13日
*＜機能概要＞
*   業務規制一覧キャッシュ部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v25.00.00    2016/06/12   FJ）大山    新規作成
*
**********************************************************************/
package eo.web.webview.common;

import java.util.HashMap;
import java.util.Iterator;

import com.fujitsu.futurity.common.JCMPropertyCache;
import com.fujitsu.futurity.common.JSYwebLog;

public class JCCRestrictionFileCache extends JCMPropertyCache {

	/**
	 * アプリケーションプロパティファイルから、アップロード定義ファイルのパス
	 * 及び文字エンコード種別を取得し、シングルトンでインスタンス化します。
	 * 
	 * @param
	 * @return なし
	 */	
	public synchronized static void setPath()
	{
    	//アプリケーションプロパティファイルからアップロード定義ファイルのパスと文字エンコード種別を取得
		String restFilePath = JCCWebCommon.getApplicationConst("BUSINESSCONTROL_RESTRICTION_FILE_PATH");
		String restFileEncode = JCCWebCommon.getApplicationConst("BUSINESSCONTROL_RESTRICTION_FILE_ENCODING");

		//シングルトンでインスタンス化
		JCCRestrictionFileCache rc = JCCRestrictionFileCache.getInstance();
		rc.PATH = restFilePath;
		rc.ENCODING = restFileEncode;
	}

	/** インスタンス領域 */
	private static JCCRestrictionFileCache prop = null;

	/**
	 * インスタンス生成メソッド
	 * 
	 * @param
	 * @return prop
	 */	
	private static JCCRestrictionFileCache getInstance()
	{
		if(prop == null)
		{
			prop = new JCCRestrictionFileCache();
		}
		
		return prop;
	}
	
	/**
	 * キーで指定されたアップロード定義ファイル情報を取得します。
	 * 
	 * @param key 定義ファイル設定値に対応するキー
	 * @return キーに紐付けられた定義ファイル内の設定値
	 * @exception Exception
	 */	
	public synchronized static String getValue(String key) throws Exception
	{
		//親クラスのgetValuePropメソッドを呼び出して返却
		return JCCRestrictionFileCache.getInstance().getValueProp(key);
	}

	public synchronized static HashMap<String,Object> getKeyValueList() {
		try {
			JCCRestrictionFileCache.getInstance().loadProperties();
			
			HashMap mapCst = JCCRestrictionFileCache.getInstance().mapConst;
			if(mapCst == null) {
				
				return null;
			} else {
				Iterator keyit = mapCst.keySet().iterator();
				HashMap<String, Object> retMap = new HashMap<String, Object>();
	
				while(keyit.hasNext()) {
					String key = (String)keyit.next();
					
					String mapData = (String)mapCst.get(key);
					
					String[]mapDataList = mapData.split(",");
					HashMap<String , String> childMap = new HashMap<String, String>();
					
					if(mapDataList != null && mapDataList.length != 0) {
	
						// 業務規制一覧照会マップ.業務規制一覧照会明細.規制フラグ ← 業務規制一覧照会明細.規制フラグ
						if(mapDataList.length >= 1 && mapDataList[0] != null) {
							childMap.put("kisei_flg", mapDataList[0]);
						} else {
							childMap.put("kisei_flg", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.業務規制説明 ← 業務規制一覧照会明細.業務規制説明
						if(mapDataList.length >= 2 && mapDataList[1] != null) {
							childMap.put("work_kisei_setmei", mapDataList[1]);
						} else {
							childMap.put("work_kisei_setmei", new String());
						}
						// 業務規制一覧照会マップ.業務規制一覧照会明細.規制開始予定年月日時分秒 ← 業務規制一覧照会明細.規制開始予定年月日時分秒
						if(mapDataList.length >= 3 && mapDataList[2] != null) {
							childMap.put("kisei_sta_rsv_dtm", mapDataList[2]);
						} else {
							childMap.put("kisei_sta_rsv_dtm", new String());
						}
						// 業務規制一覧照会マップ.業務規制一覧照会明細.規制終了予定年月日時分秒 ← 業務規制一覧照会明細.規制終了予定年月日時分秒
						if(mapDataList.length >= 4 && mapDataList[3] != null) {
							childMap.put("kisei_end_rsv_dtm", mapDataList[3]);
						} else {
							childMap.put("kisei_end_rsv_dtm", new String());
						}
	
						// 業務規制一覧照会マップ.業務規制一覧照会明細.画面メッセージＩＤ ← 業務規制一覧照会明細.画面メッセージＩＤ
						if(mapDataList.length >= 5 && mapDataList[4] != null) {
							childMap.put("screen_msg_id", mapDataList[4]);
						} else {
							childMap.put("screen_msg_id", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.ＡＰＩ結果コード ← 業務規制一覧照会明細.ＡＰＩ結果コード
						if(mapDataList.length >= 6 && mapDataList[5] != null) {
							childMap.put("api_rslt_cd", mapDataList[5]);
						} else {
							childMap.put("api_rslt_cd", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.業務規制開始予定時分 ← 業務規制一覧照会明細.業務規制開始予定時分
						if(mapDataList.length >= 7 && mapDataList[6] != null) {
							childMap.put("work_kisei_sta_rsv_hm", mapDataList[6]);
						} else {
							childMap.put("work_kisei_sta_rsv_hm", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.業務規制終了予定時分 ← 業務規制一覧照会明細.業務規制終了予定時分
						if(mapDataList.length >= 8 && mapDataList[7] != null) {
							childMap.put("work_kisei_end_rsv_hm", mapDataList[7]);
						} else {
							childMap.put("work_kisei_end_rsv_hm", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.規制前通知画面メッセージＩＤ ← 業務規制一覧照会明細.規制前通知画面メッセージＩＤ
						if(mapDataList.length >= 9 && mapDataList[8] != null) {
							childMap.put("kisei_bf_tch_screen_msg_id", mapDataList[8]);
						} else {
							childMap.put("kisei_bf_tch_screen_msg_id", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.規制前通知開始前分数 ← 業務規制一覧照会明細.規制前通知開始前分数
						if(mapDataList.length >= 10 && mapDataList[9] != null) {
							childMap.put("kisei_bf_tch_sta_bf_hunsu", mapDataList[9]);
						} else {
							childMap.put("kisei_bf_tch_sta_bf_hunsu", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.登録年月日時分秒 ← 業務規制一覧照会明細.登録年月日時分秒
						if(mapDataList.length >= 11 && mapDataList[10] != null) {
							childMap.put("add_dtm", mapDataList[10]);
						} else {
							childMap.put("add_dtm", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.登録オペレータアカウント ← 業務規制一覧照会明細.登録オペレータアカウント
						if(mapDataList.length >= 12 && mapDataList[11] != null) {
							childMap.put("add_opeacnt", mapDataList[11]);
						} else {
							childMap.put("add_opeacnt", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.更新年月日時分秒 ← 業務規制一覧照会明細.更新年月日時分秒
						if(mapDataList.length >= 13 && mapDataList[12] != null) {
							childMap.put("upd_dtm", mapDataList[12]);
						} else {
							childMap.put("upd_dtm", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.更新オペレータアカウント ← 業務規制一覧照会明細.更新オペレータアカウント
						if(mapDataList.length >= 14 && mapDataList[13] != null) {
							childMap.put("upd_opeacnt", mapDataList[13]);
						} else {
							childMap.put("upd_opeacnt", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.削除年月日時分秒 ← 業務規制一覧照会明細.削除年月日時分秒
						if(mapDataList.length >= 15 && mapDataList[14] != null) {
							childMap.put("del_dtm", mapDataList[14]);
						} else {
							childMap.put("del_dtm", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.削除オペレータアカウント ← 業務規制一覧照会明細.削除オペレータアカウント
						if(mapDataList.length >= 16 && mapDataList[15] != null) {
							childMap.put("del_opeacnt", mapDataList[15]);
						} else {
							childMap.put("del_opeacnt", new String());
						}
						
						// 業務規制一覧照会マップ.業務規制一覧照会明細.無効フラグ ← 業務規制一覧照会明細.無効フラグ
						if(mapDataList.length >= 17 && mapDataList[16] != null) {
							childMap.put("mk_flg", mapDataList[16]);
						} else {
							childMap.put("mk_flg", new String());
						}
						retMap.put(key,childMap);
					}
				}
				return retMap;
			}
		}
		catch (Exception e) 
		{
	    	// 例外発生時は後続処理の結果を使用するためnullを返却
	    	JSYwebLog.println(JSYwebLog.EXECUTION, JCCRestrictionFileCache.class, e, "BPCON0I002", new String[]{"業務規制情報ファイル取得に失敗しました"}, null);
			return null;
		}
	}
}
