/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0253_FUSV0253OPDBMapper
*	ソースファイル名：FUSV0253_FUSV0253OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年07月31日
*＜機能概要＞
*	BP（訪販担当者情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/07/31	FJ			新規作成
*	v4.01.00	2012/11/09	FJ)大塚		IT1-2012-0001699
*	v5.00.00	2013/07/23	FJ)岡井		【内部障害】表示用キャンペーンコード対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00905SF.FUW00905SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0253_FUSV0253OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public FUSV0253_FUSV0253OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV025301SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31BWebBusinessLogic bl)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 担当者ＩＤ → 代理店一覧照会（ユーザＩＤ）マップ.ＫＥＹ＿ユーザーＩＤ
		parentMap.put("key_user_id", bean[0].sendMessageString("担当者ＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 予約適用年月日 → 代理店一覧照会（ユーザＩＤ）マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", eo.web.webview.common.JCCWebCommon.getOpeDate(bl, null));

		outputMap.put("FUSV025301SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV025302SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 基準年月日 → 割引サービス適用条件一覧照会（その他CP）SCマップ.ＫＥＹ＿基準年月日
		parentMap.put("key_kjnymd", bean[0].sendMessageString("基準年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 割引サービス適用条件種別コード → 割引サービス適用条件一覧照会（その他CP）SCマップ.ＫＥＹ＿割引サービス適用条件種別コード
		parentMap.put("key_wrsv_aply_jkn_sbt_cd", bean[0].sendMessageString("割引サービス適用条件種別コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV025302SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV025303SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 基準年月日 → データ抽出項目設定条件一覧照会（その他CP）SCマップ.ＫＥＹ＿基準年月日
		parentMap.put("key_kjnymd", bean[0].sendMessageString("基準年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 割引サービス適用条件種別コード → データ抽出項目設定条件一覧照会（その他CP）SCマップ.ＫＥＹ＿データ抽出項目設定条件種別コード
		parentMap.put("key_dchskm_sete_jkn_sbt_cd", bean[0].sendMessageString("割引サービス適用条件種別コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV025303SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする 引当棚一意照会
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV025304SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, X31BWebBusinessLogic bl)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 販売種別コード → 引当棚一意照会SCマップ.ＫＥＹ＿販売種別コード  "10"標準（新品）
		parentMap.put("key_hambai_sbt_cd", JFUStrConst.CD00348_10);
		// 運用日付 → 引当棚一意照会SCマップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", eo.web.webview.common.JCCWebCommon.getOpeDate(bl, null));

		outputMap.put("FUSV025304SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング 代理店一覧照会
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV025301SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV025301SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV025301SC");
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap != null && parentMap.containsKey("EKK0061B502CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0061B502CBSMsg1List");

			if (childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);

				// 取扱コード ← 代理店一覧照会（ユーザＩＤ）マップ.代理店一覧照会（ユーザＩＤ）明細.代理店コード
				if (childMap != null)
				{
					bean[0].sendMessageString(FUW00905SFConst.TRAT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("agnt_cd"));
				}
				else
				{
					bean[0].sendMessageString(FUW00905SFConst.TRAT_CD, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV025302SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV025302SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV025302SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV025302SC_other_cmp_list_select_EKK2311B506CBSMsg1List = bean[0].getDataBeanArray("その他キャンペーンリスト（選択リスト用）");
		childList = null;
		if (listFUSV025302SC_other_cmp_list_select_EKK2311B506CBSMsg1List != null && parentMap != null
				&& parentMap.containsKey("EKK2311B506CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK2311B506CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = listFUSV025302SC_other_cmp_list_select_EKK2311B506CBSMsg1List.getDataBean(0);

				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// その他キャンペーンリスト（選択リスト用）.その他キャンペーンコード ← 割引サービス適用条件一覧照会（その他CP）SCマップ.その他キャンペーン一覧明細.割引サービスコード
				if (childMap != null)
				{
					subbean.sendMessageString("その他キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("wrib_svc_cd"));
				}
				else
				{
					subbean.sendMessageString("その他キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// その他キャンペーンリスト（選択リスト用）.その他キャンペーン名称 ← 割引サービス適用条件一覧照会（その他CP）SCマップ.その他キャンペーン一覧明細.割引サービス名
				if (childMap != null)
				{
					subbean.sendMessageString("その他キャンペーン名称", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("wrib_svc_nm"));
				}
				else
				{
					subbean.sendMessageString("その他キャンペーン名称", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// その他キャンペーンリスト（選択リスト用）.その他表示用キャンペーンコード ← 割引サービス適用条件一覧照会（その他CP）SCマップ.その他キャンペーン一覧明細.表示用キャンペーンコード
				if (childMap != null)
				{
					subbean.sendMessageString("その他表示用キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("dsp_campaign_cd"));
				}
				else
				{
					subbean.sendMessageString("その他表示用キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}

			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：メニュー（量販・訪販）
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV025303SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV025303SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV025303SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV025303SC_other_cmp_list_select_EKK2391B501CBSMsg1List = bean[0].getDataBeanArray("その他キャンペーンリスト（選択リスト用）");
		childList = null;
		if (listFUSV025303SC_other_cmp_list_select_EKK2391B501CBSMsg1List != null && parentMap != null
				&& parentMap.containsKey("EKK2391B501CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK2391B501CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = listFUSV025303SC_other_cmp_list_select_EKK2391B501CBSMsg1List.getDataBean(0);

				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// その他キャンペーンリスト（選択リスト用）.その他キャンペーンコード ← データ抽出項目設定条件一覧照会（その他CP）SCマップ.その他キャンペーン一覧明細.データ抽出項目コード
				if (childMap != null)
				{
					subbean.sendMessageString("その他キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("dchskm_cd"));
				}
				else
				{
					subbean.sendMessageString("その他キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// その他キャンペーンリスト（選択リスト用）.その他キャンペーン名称 ← データ抽出項目設定条件一覧照会（その他CP）SCマップ.その他キャンペーン一覧明細.データ抽出項目名
				if (childMap != null)
				{
					subbean.sendMessageString("その他キャンペーン名称", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("dchskm_nm"));
				}
				else
				{
					subbean.sendMessageString("その他キャンペーン名称", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// その他キャンペーンリスト（選択リスト用）.その他表示用キャンペーンコード ← データ抽出項目設定条件一覧照会（その他CP）SCマップ.その他キャンペーン一覧明細.表示用データ抽出項目コード
				if (childMap != null)
				{
					subbean.sendMessageString("その他表示用キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("dsp_dchskm_cd"));
				}
				else
				{
					subbean.sendMessageString("その他表示用キャンペーンコード", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング 引当棚一意照会
	 * @param bean　[0]：メニュー（量販・訪販）[1]：共有フォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV025304SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV025304SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV025304SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccess webNewInfoBean = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		childList = null;
		if (webNewInfoBean != null && parentMap != null && parentMap.containsKey("EDK0451A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EDK0451A010CBSMsg1List");

			X31SDataBeanAccess elseInfoBean = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.ELSE_INFO).getDataBean(0);

			// 一意照会なので、データは必ず0番目
			HashMap childMap = (HashMap)childList.get(0);
			if (elseInfoBean == null)
			{
				return bean;
			}

			// その他情報.棚コード ← 引当棚一意照会SCマップ.棚コード
			if (childMap != null)
			{
				elseInfoBean.sendMessageString(CommonInfoCFConst.SHELF_CD_18, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shelf_cd"));
			}
			else
			{
				elseInfoBean.sendMessageString(CommonInfoCFConst.SHELF_CD_18, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}
		}

		return bean;
	}

}