/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：JKKIdoRsvUtil
 *   モジュール名    ：JKKIdoRsvUtil
 *   ソースファイル名：JKKIdoRsvUtil.java
 *   作成者          ：富士通
 *   日付            ：2011年12月14日
 *＜機能概要＞
 *   異動予約に関する共通部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/12/14   FJ          新規作成
 *   v18.00.00   2015/08/11   FJ) 阪口   【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）※koptWebBからkoptWebAへコピー
*
 **********************************************************************/

package eo.web.webview.commonOneStop;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;


/**
 * 
 * 異動予約関連部品です。<p>
 * <BR>
 * @author  FJ
 */
public class JKKIdoRsvUtil
{

	/**
	 * <dd>メソッド名	：異動予約適用年月日設定（setIdoRsvAplyYmd）
	 * <dd>メソッド説明	：異動予約一覧照会結果より、未反映データがあれば、利用開始日または利用終了日に設定します。
	 * 
	 * @param bean データBeanアクセスクラス
	 * @param list 異動予約一覧照会結果
	 * @param use_staymd 利用開始日設定キー
	 * @param use_endymd 利用終了日設定キー
	 */
	@SuppressWarnings("unchecked")
	public static void setIdoRsvAplyYmd(X31SDataBeanAccess bean, ArrayList list,
			String use_staymd, String use_endymd)
	{
		
		// データBeanアクセスクラスがNULLかどうか判定します
		if (bean == null)
		{
			// NULL、空の場合処理を終了します
			return ;
		}
		
		// 異動予約一覧照会結果がNULLか判定します
		if(list == null)
		{
			// NULLの場合処理を終了します
			return ;
		}
		// 利用開始日設定キーがNULLか空文字かどうか判定します
		if (use_staymd == null || "".equals(use_staymd))
		{
			//NULL、空文字の場合処理を終了します
			return ;
		}
		
		// 利用終了日設定キーがNULLか空文字かどうか判定します
		if (use_endymd == null || "".equals(use_endymd))
		{
			//NULL、空文字の場合処理を終了します
			return ;
		}

		String wk_ido_rsv_dtl_cd = "";		// 退避用異動予約詳細コード
		String wk_rsv_aply_ymd = "";		// 退避用予約適用年月日
		String wk_upd_dtm = "";				// 退避用更新年月日時分秒

		for (int i = 0; i < list.size(); i++)
		{
			HashMap<String, Object> childMap = (HashMap<String, Object>)list.get(i);

			String ido_rsv_stat_cd = (String)childMap.get("ido_rsv_stat_cd");		// 異動予約状態コード
			String upd_dtm = (String)childMap.get("upd_dtm");						// 更新年月日時分秒
			
			// 異動予約状態コードが「未反映」の場合
			if (JKKCommonConst.IDO_RSV_STAT_CD_MI.equals(ido_rsv_stat_cd))
			{
				// 更新年月日時分秒が退避用更新年月日時分秒より大きい場合に採用
				if (wk_upd_dtm.compareTo(upd_dtm) < 0)
				{
					wk_ido_rsv_dtl_cd = (String)childMap.get("ido_rsv_dtl_cd");
					wk_rsv_aply_ymd = (String)childMap.get("rsv_aply_ymd");
					wk_upd_dtm = (String)childMap.get("upd_dtm");
				}
			}
		}

		// 予約データがあれば
		if (!"".equals(wk_rsv_aply_ymd))
		{
			// 異動予約詳細コードが「オプション開始」の場合
			if (JKKCommonConst.IDO_RSV_DTL_CD_START.equals(wk_ido_rsv_dtl_cd))
			{
				// 利用開始日
				bean.sendMessageString(use_staymd, X31CWebConst.DATABEAN_SET_VALUE, wk_rsv_aply_ymd);
			}
			
			// 異動予約詳細コードが「オプション解約」の場合
			else if (JKKCommonConst.IDO_RSV_DTL_CD_DSL.equals(wk_ido_rsv_dtl_cd))
			{
				// 利用終了日
				bean.sendMessageString(use_endymd, X31CWebConst.DATABEAN_SET_VALUE, wk_rsv_aply_ymd);
			}
		}
	}
}
