/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCrsChgPrgAdd
*	ソースファイル名	：JBSbatKKCrsChgPrgAdd.java
*	作成者				：富士通　
*	作成日				：2011年12月13日
*＜機能概要＞
*　コース変更進捗登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/10/19	FJ)古内		【】進捗登録のＪＯＢから切り出し
*	v20.00.00	2015/10/15	FJ)金本		【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM550;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.common.constant.JCNStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.log.JBSbatLogUtil;
import eo.framework.util.JBSbatStringUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCrsChgSmtVLAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";
	
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";
	
	/** SQL定義キー(KK_SELECT_192)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_192 = "KK_SELECT_192";

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_192 = null;
	
	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** テーブルアクセスクラス(共通部品)*/
	private JBSbatSQLAccess stmt = null;
	
	// ++++++++++ v20.00.00 削除開始 ++++++++++
	// /** eo光ネット料金プラン体系識別コード(定額制)*/
	// private static final String TEIGAKUSEI_CD = "0";
	//
	// /** eo光ネット料金プラン体系識別コード(従量制)*/
	// private static final String JYURYOSEI_CD = "1";
	// ++++++++++ v20.00.00 削除終了 ++++++++++
	
	/**
	 *  入力ファイル格納先パス
	 */
	private String in_file_path = "";
	
	/** CCタイトル(スマートバリュー異動情報登録) */
	private static final String CC_TITLE_SMTVL_IDO_IF_ADD = "KKSV073202CC";
	
	private HashMap<String, String> crsUpdshijishoAddMap = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_192 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 共通部品用
		stmt = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		
		// フリー項目から格納先を取得します
		in_file_path = commonItem.getFreeItem();

		// 取得出来なかった場合、エラーとします。
		if (0 == in_file_path.length())
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, 
					new String[]{"フリー項目：コース変更指示書登録情報対象ファイル格納パス名なし"});
		}
		
		// コース変更指示書登録情報対象ファイル読み込み
		crsUpdshijishoAddMap = readFile(in_file_path);
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		String svcKeiNo = inMap.getString(JBSbatKKIFM550.SVC_KEI_NO);			// 確定抽出サービス契約番号（コース変更確定割引サービス情報ファイル）
		
		String idoDiv = inMap.getString(JBSbatKKIFM550.IDO_DIV);				// 確定抽出異動区分（コース変更確定割引サービス情報ファイル）
		
		// ログレベルがデバッグモードの場合
		if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("サービス契約番号：" +  svcKeiNo);
			super.logPrint.printDebugLog("異動区分：" +  idoDiv);
		}
		
		// ****************************************************
		//  スマートバリュー呼出判定処理
		// ****************************************************
		// コース変更指示書登録情報対象ファイル読み込み
		 // 入力リストサイズが０バイトの場合、処理対象外
		if (null == crsUpdshijishoAddMap || 0 == crsUpdshijishoAddMap.size())
		{
			super.logPrint.printDebugLog("execute_END");
			return null;
		}
		// コース変更指示書登録対象外の場合は、処理対象外
		if (!crsUpdshijishoAddMap.containsKey(svcKeiNo))
		{
			super.logPrint.printDebugLog("execute_END");
			return null;
		}
		String geneAddDtm = crsUpdshijishoAddMap.get(svcKeiNo);	// コース変更指示書登録情報ファイルの世代登録年月日時分秒を設定
		
		// ログレベルがデバッグモードの場合
		if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("世代登録年月日時分秒（geneAddDtm_217）：" +  geneAddDtm);
		}
		
		// サービス契約番号にデータが有る且つ、世代登録年月日時分秒にデータがあるかつ、対象契約識別コードが"01"(サービス契約)の場合
		if (!isEmpty(svcKeiNo) && !isEmpty(geneAddDtm))
		{
			// SQL実行結果取得用mapを生成（サービス契約スキーマ旧情報取得）
			// サービス契約旧情報検索実行
			JBSbatCommonDBInterface svcKeiMap_192 = selectSvcKei192(svcKeiNo, geneAddDtm);
			
			//変更後のEO光ネット料金プラン
			String newPlan = "";
			//変更前のEO光ネット料金プラン
			String oldPlan = "";
			
			// サービス契約検索結果マップにデータが有る場合
			if (null != svcKeiMap_192)
			{
				// サービス契約．料金コースコード（旧）取得
				String oldPcrsCd = JBSbatStringUtil.Rtrim(svcKeiMap_192.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
				
				// サービス契約．料金プランコード（旧）取得
				String oldPlancd = JBSbatStringUtil.Rtrim(svcKeiMap_192.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD));
				
				//変更前のEO光ネット料金プラン体系識別コードを取得
				JBSbatCommonDBInterface oldPlanMap = executeKK_M_PPLAN_PKSELECT(new String[]{oldPcrsCd, oldPlancd});
				if(oldPlanMap != null)
				{
					oldPlan = JBSbatStringUtil.Rtrim(oldPlanMap.getString(JBSbatKK_M_PPLAN.EOHNT_PPLAN_TIKI_SKCD));
				}
				
				// ログレベルがデバッグモードの場合
				if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
				{
					super.logPrint.printDebugLog("料金コースコード（旧）：" +  oldPcrsCd);
					super.logPrint.printDebugLog("料金プランコード（旧）：" +  oldPlancd);
					super.logPrint.printDebugLog("変更前のEO光ネット料金プラン体系識別コード：" +  oldPlan);
				}
			}
			
			// サービス契約のPK検索を行います
			JBSbatCommonDBInterface svcKei_map = executeKK_T_SVC_KEI_PKSELECT(new String[]{svcKeiNo, geneAddDtm});
			
			// サービス契約のPK検索結果なしの場合、エラーとし処理中断します
			if (null == svcKei_map)
			{
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, 
						new String[]{"サービス契約", "サービス契約番号：" + svcKeiNo});
			}
			// サービス契約．料金コースコード（新）取得
			String newPcrsCd = JBSbatStringUtil.Rtrim(svcKei_map.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
			
			// サービス契約．料金プランコード（新）取得
			String newPlanCd = JBSbatStringUtil.Rtrim(svcKei_map.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD));
			
			//変更後のEO光ネット料金プラン体系識別コードを取得
			String[] param = new String[]{newPcrsCd, newPlanCd};
			JBSbatCommonDBInterface newPlanMap = executeKK_M_PPLAN_PKSELECT(param);
			if(newPlanMap != null)
			{
				newPlan = JBSbatStringUtil.Rtrim(newPlanMap.getString(JBSbatKK_M_PPLAN.EOHNT_PPLAN_TIKI_SKCD));
			}
			// ログレベルがデバッグモードの場合
			if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("料金コースコード（新）：" +  newPcrsCd);
				super.logPrint.printDebugLog("料金プランコード（新）：" +  newPlanCd);
				super.logPrint.printDebugLog("変更後のEO光ネット料金プラン体系識別コード：" +  newPlan);
			}
			
			if(!isEmpty(oldPlan) && !isEmpty(newPlan))
			{
				//変更前後のEO光ネット料金プラン体系識別コードが変更があった場合はスマートバリュー登録対象
				if(!oldPlan.equals(newPlan)){
					String smtvlIdoDtlCd = "";
					// ++++++++++ v20.00.00 変更開始 ++++++++++
					// if(JYURYOSEI_CD.equals(oldPlan) && TEIGAKUSEI_CD.equals(newPlan))
					// {
					// 	smtvlIdoDtlCd = "00";
					// 	
					// } else if(TEIGAKUSEI_CD.equals(oldPlan) && JYURYOSEI_CD.equals(newPlan))
					// {
					// 	smtvlIdoDtlCd = "01";
					// }
					// 変更前後のEO光ネット料金プラン体系識別コードが変更があった場合はスマートバリュー登録サービスを呼出す
					//
					//if ("00".equals(smtvlIdoDtlCd) || "01".equals(smtvlIdoDtlCd))
					if(JBSbatKKConst.CD01421_PPLAN_TIKI_SKCD_1.equals(oldPlan) && JBSbatKKConst.CD01421_PPLAN_TIKI_SKCD_0.equals(newPlan))
					{
						smtvlIdoDtlCd = JBSbatKKConst.CD01445_SMTVL_IDO_DTL_CD_00;
						
					} else if(JBSbatKKConst.CD01421_PPLAN_TIKI_SKCD_0.equals(oldPlan) && JBSbatKKConst.CD01421_PPLAN_TIKI_SKCD_1.equals(newPlan))
					{
						smtvlIdoDtlCd = JBSbatKKConst.CD01445_SMTVL_IDO_DTL_CD_01;
					}
					if (JBSbatKKConst.CD01445_SMTVL_IDO_DTL_CD_00.equals(smtvlIdoDtlCd) || JBSbatKKConst.CD01445_SMTVL_IDO_DTL_CD_01.equals(smtvlIdoDtlCd))
					// ++++++++++ v20.00.00 変更終了 ++++++++++
					{
						// サービスに渡す業務データを格納するMAP
						HashMap<Object, Object> inputSmtvlIdoInfMap = new HashMap<Object, Object>();
						// サービス契約番号
						inputSmtvlIdoInfMap.put("svc_kei_no", svcKeiNo);
						// 異動区分
						inputSmtvlIdoInfMap.put("ido_div", idoDiv);
						// 進捗ステータス
						inputSmtvlIdoInfMap.put("prg_stat", inMap.getString(JBSbatKKIFM550.PRG_STAT));
						// 機能コード
						inputSmtvlIdoInfMap.put("func_code", "1");
						// スマートバリュー異動詳細コード
						inputSmtvlIdoInfMap.put("smtvl_ido_dtl_cd", smtvlIdoDtlCd);
						// 進捗年月日時分秒
						inputSmtvlIdoInfMap.put("prg_dtm", inMap.getString(JBSbatKKIFM550.PRG_DTM));
						
						// スマートバリュー異動情報登録情報設定
						inputMap.put(CC_TITLE_SMTVL_IDO_IF_ADD, inputSmtvlIdoInfMap);
						
						// サービスの処理結果が格納されるMAP
						HashMap<Object, Object> outputMap = invokeService(inputMap);
						
						// 部品からのリターンコードを取得します。
						String returnCode = (String)outputMap.get("RETURN_CODE");
						super.logPrint.printDebugLog("★RETURN_CODE：" + returnCode);
						
						// サービスインターフェースよりエラーが返却された場合
						if(!"0000".equals(returnCode))
						{			
							// 「サービスインターフェイスエラーの場合は、下記のログ出力する。
							super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
									new String[]{"スマートバリュー登録においてエラーが発生(リターンコード):" + returnCode + " 入力電文：" + inputMap.toString()});
							
							//エラーフラグ設定
							super.commonItem.setErrFlg(true);
							
							//出力情報を返却
							return new JBSbatOutputItem() ;
						}
					}
				}
			}
		}
		
		super.logPrint.printDebugLog("execute_END");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * サービスの呼出（KKSV0732）
	 * 排他エラーが発生した場合、最大３回リトライを実施する。
	 * 
	 * @param inputMap
	 * @return
	 * @throws Exception
	 */
	public HashMap<Object, Object> invokeService(HashMap<String, Object> inputMap) throws Exception
	{
		// サービスの処理結果が格納されるMAP
		HashMap<Object, Object> outputMap = null;
		
		// 排他エラーは、最大３回リトライする。
		int counter = 0;
		while (counter < 3)
		{
			// ユースケースIDを格納するMAP
			HashMap<Object, Object>  paramMap = new HashMap<Object, Object>();
			paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV0732");
			paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV0732OP");
			
			outputMap = new HashMap<Object, Object>();
			
			// サービス呼び出し
			JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
			
			// 部品からのリターンコードを取得します。
			String returnCode = (String)outputMap.get("RETURN_CODE");
			super.logPrint.printDebugLog("★RETURN_CODE：" + returnCode);
			if("0000".equals(returnCode))
			{
				break;
			}
			else
			{
				if (false)
				{
					// 排他エラーのため、３秒ウェイトした後に再実行する。
					super.logPrint.printDebugLog("排他エラーが発生したため、３秒後にリトライする。");
					Thread.sleep(3000);
					// 排他エラー
					counter++;
				}
				else
				{
					break;
				}
			}
		}
		return outputMap;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI.close();
		db_KK_T_SVC_KEI_192.close();
		db_KK_M_PPLAN.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		// 共通部品用
		stmt.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_SVC_KEI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SVC_KEI_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_SVC_KEI.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_192)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	世代登録年月日時分秒
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_192(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_192.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_192);
	}


	/**
	 * サービス契約テーブルの検索を行います。(KK_SELECT_192)
	 * <br>
	 * @param svcKeiNo_217  サービス契約番号
	 * @param geneAddDtm_217    世代年月日時分秒
	 * 
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト。
	 * @throws Exception 
	 */
	private JBSbatCommonDBInterface selectSvcKei192(String svcKeiNo_217, String geneAddDtm_217) throws Exception
	{
		// サービス契約を検索して住所変更新設情報を取得します。
		// サービス契約情報検索条件項目を設定します。
		Object[] paramList = new Object[3];
		
		paramList[0] = svcKeiNo_217;		// サービス契約番号
		paramList[1] = geneAddDtm_217;		// 世代登録年月日自分秒
		paramList[2] = super.opeDate;		// 運用日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		super.logPrint.printDebugLog("paramList[2]：" + paramList[2]);
		
		// サービス契約情報検索処理を実行します。
		executeKK_T_SVC_KEI_KK_SELECT_192(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_SVC_KEI_192.selectNext();
		
		return outDbMap;
	}
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	PCRS_CD
	 *			PPLAN_CD
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_M_PPLAN_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("PCRS_CD", whereParam[0]);
		whereMap.setValue("PPLAN_CD", whereParam[1]);
		
		// DBアクセスを実行します
		return db_KK_M_PPLAN.selectByPrimaryKeys(whereMap);
	}

	/**                                                                                                     
	 * 文字列がnullか判定する
	 * <br>
	 * @param arg0 判定する文字列
	 * @return 文字列がNullか空文字のときtrue
	 */
	private static boolean isEmpty(String arg0) 
	{
		if (null == arg0 || "".equals(arg0)) 
		{
			return true;
		}
		return false;
	}
	
	/**
	 * ファイル読み込み処理を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で読込ファイルディレクトリ(フルパス)を設定します。<br>
	 *
	 * 2.引数を元にファイル読込を行い、行をListへ格納します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param strFileDir    入力ディレクトリ(フルパス)。
	 * @return resultList   返却用List
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private static HashMap<String, String> readFile(String strFileDir) throws Exception
	{
		HashMap<String, String> resultMap = new  HashMap<String, String>();
		
		// 外部出力ファイルパス
		JBSbatInputFileUtil inFile = new JBSbatInputFileUtil(strFileDir);
		inFile.setEncode(JKKBatConst.SJIS);						// 文字コード
		inFile.setLine(JCNStrConst.S_LINE_SEPARAOR_LF);			// 改行コード
		inFile.createReader();
		
		try
		{
			while (true)
			{
				String line = inFile.readLine();
				if (null == line)
				{
					inFile.close();
					break;
				}
				String[] data = line.split(",", -1);
				if (data != null)
				{
					resultMap.put(data[0], data[1]);
				}
			}
			
			return resultMap;
		}
		catch (IOException e)
		{
			throw new JBSbatBusinessException("EKKB0020CE", new String[]{strFileDir});
		}
		finally
		{
			inFile.close();
		}
	}
	
}
