/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：JKKGetIdoRsvCancelMsg
 *   モジュール名    ：JKKGetIdoRsvCancelMsg
 *   ソースファイル名：JKKGetIdoRsvCancelMsg.java
 *   作成者          ：富士通
 *   日付            ：2011年12月14日
 *＜機能概要＞
 *   異動予約取消メッセージに関する共通部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2013/05/31   FJ          新規作成
 *
 **********************************************************************/

package eo.web.webview.common;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;

import eo.common.constant.JPCOnlineMessageConstant;


/**
 * 
 * 異動予約取消メッセージ取得部品です。<br>
 * <br>
 * @author  FJ
 */
public class JKKGetIdoRsvCancelMsg
{
	/** 異動区分名称を表示する対象 */
	private static final String[][] DSP_IDO_DIV_NM =
	{
		{JKKCommonConst.IDO_DIV_VALUE_00003, JKKCommonConst.IDO_RSV_DTL_CD_START},
		{JKKCommonConst.IDO_DIV_VALUE_00003, JKKCommonConst.IDO_RSV_DTL_CD_HKTGI},
		{JKKCommonConst.IDO_DIV_VALUE_00003, JKKCommonConst.IDO_RSV_DTL_CD_DSL}
	};

	/** 異動予約期日到来済・未反映情報取得明細 */
	private static final String EKK1681C011CBSMSG1LIST = "EKK1681C011CBSMsg1List";

	/** 異動区分 */
	private static final String IDO_DIV = "ido_div";

	/** 異動区分名称 */
	private static final String IDO_DIV_NM = "ido_div_nm";

	/** 異動予約詳細コード */
	private static final String IDO_RSV_DTL_CD = "ido_rsv_dtl_cd";

	/** 異動予約詳細コード名称 */
	private static final String IDO_RSV_DTL_CD_NM = "ido_rsv_dtl_cd_nm";

	/**
	 * 異動予約取消メッセージを出力します。<br>
	 * <br>
	 * @param	myLogic		ロジッククラス
	 * @param	outputMap	下り情報Map
	 * @param	outMapKey	下り情報Mapキー
	 */
	public void getIdoRsvCancelMsg(
			X31BWebBusinessLogic myLogic,
			HashMap<String, Object> outputMap,
			String outMapKey
	)
	{
		// 下り情報Mapが、NULLかどうか判定します。
		if(outputMap == null)
		{
			// NULLの場合、処理を終了します。
			return ;
		}
		// 下り情報Map取得キーが、NULL、もしくは空文字かどうか判定します。
		if (outMapKey == null || "".equals(outMapKey))
		{
			// NULL、空文字の場合、処理を終了します。
			return ;
		}

		// 下り情報マップから、対象の情報を取得します。
		HashMap<String, Object> parentMap = (HashMap)outputMap.get(outMapKey);

		if(parentMap == null) 
		{
			// NULLの場合、処理を終了します。
			return ;
		}

		// 「異動予約期日到来済・未反映情報取得」の情報を取得します。
		ArrayList childList = (ArrayList)parentMap.get(EKK1681C011CBSMSG1LIST);

		// 「異動予約期日到来済・未反映情報取得」情報が、NULL、もしくは空かどうか判定します。
		if (childList == null || 0 == childList.size())
		{
			// NULL、空の場合、処理を終了します。
			return ;
		}

		for (int i = 0; i < childList.size(); i++)
		{
			// 
			HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(i);

			// 異動区分取得
			String wkIdoDiv      = (String)childMap.get(IDO_DIV);
			// 異動予約詳細コード取得
			String wkIdoRsvDtlCd = (String)childMap.get(IDO_RSV_DTL_CD);

			// 置換文字列キー取得
			String replaceStrKey = getReplaceStrKey(wkIdoDiv, wkIdoRsvDtlCd);

			// 置換文字列取得
			String replaceStr = (String)childMap.get(replaceStrKey);

			// メッセージ出力
			JCCWebCommon.setMessageInfo(myLogic, JPCOnlineMessageConstant.EKBD650_KW, new String[]{ replaceStr });
		}
	}

	/**
	 * 置換文字列にセットする項目のキーを返却します。<br>
	 * <br>
	 * @param	wkIdoDiv		異動区分
	 * @param	wkIdoRsvDtlCd	異動予約詳細コード
	 * @return	String			キー
	 */
	private String getReplaceStrKey(String wkIdoDiv, String wkIdoRsvDtlCd)
	{
		// 置換文字列キーセット＜異動予約詳細コード名称＞
		String replaceStrKey = IDO_RSV_DTL_CD_NM;

		// 異動区分名称を出力する対象
		for (int j = 0; j < DSP_IDO_DIV_NM.length; j++)
		{
			if (DSP_IDO_DIV_NM[j][0].equals(wkIdoDiv) && DSP_IDO_DIV_NM[j][1].equals(wkIdoRsvDtlCd))
			{
				// 置換文字列キーセット＜異動区分名称＞
				replaceStrKey = IDO_DIV_NM;
				break;
			}
		}

		return replaceStrKey;
	}
}
