/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0219_FUSV0219OPDBMapper
*	ソースファイル名：FUSV0219_FUSV0219OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年08月27日
*＜機能概要＞
*	BP（割引サービス情報取得(WiMAX白ロム)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/08/27	FJ		    新規作成
*   v1.01.00    2012/11/01  FJ)大塚     IT1-2012-0001882対応
*   v5.00.00    2013/10/18  FJ)谷本     【OM-2013-0003440】白ロム申込をデータ抽出項目設定からする対応
*
**********************************************************************/
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.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0219_FUSV0219OPDBMapper
{

	/** APLConst.propertiesから料金コースコードを取得するためのキー */
	private static final String KEY_UQ_SVC_KEI_PCRS_CD = "UQ_SVC_KEI_PCRS_CD"; // IT1-2012-0001882
	/** APLConst.propertiesから料金コースコードを取得するためのキー */
	private static final String KEY_UQ_PCRS_CD = "UQ_PCRS_CD";
	/** APLConst.propertiesから料金プランコードを取得するためのキー */
	private static final String KEY_UQ_PPLAN_CD = "UQ_PPLAN_CD";

	/**
	 * コンストラクタ
	 */
	public FUSV0219_FUSV0219OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス申込リダイレクト
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV021901SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 割引サービス適用条件値 → 割引キャンペーンコード一覧照会（WiMAX白ロム）マップ.ＫＥＹ＿割引サービス適用条件値1
		parentMap.put("key_wrsv_aply_jkn_value_1", bean[0].sendMessageString("割引サービス適用条件値", X31CWebConst.DATABEAN_GET_VALUE));
		// 申込年月日時分 → 割引キャンペーンコード一覧照会（WiMAX白ロム）マップ.ＫＥＹ＿申込年月日時分
		parentMap.put("key_mskm_ymd", bean[0].sendMessageString("申込年月日時分", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV021901SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス申込リダイレクト
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param macAddress MACアドレス
	 * @param bl 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV021902SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String macAddress, X31BWebBusinessLogic bl)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＭＡＣアドレス → ＭＡＣアドレス使用状況一覧照会.ＫＥＹ＿ＭＡＣアドレス
		parentMap.put("key_macad", macAddress);
		// IT1-2012-0001882 2012/11/01 Otsuka start 
		//  ＭＡＣアドレス使用状況一覧照会.ＫＥＹ＿サービス契約＿料金コースコード
		parentMap.put("key_svc_kei_pcrs_cd", JFUWebCommon.getApplicationConst(KEY_UQ_SVC_KEI_PCRS_CD));
		// IT1-2012-0001882 2012/11/01 Otsuka end
		//  ＭＡＣアドレス使用状況一覧照会.ＫＥＹ＿料金コースコード
		parentMap.put("key_pcrs_cd", JFUWebCommon.getApplicationConst(KEY_UQ_PCRS_CD));
		// 基準日 → ＭＡＣアドレス使用状況一覧照会.ＫＥＹ＿料金プランコード
		parentMap.put("key_pplan_cd", JFUWebCommon.getApplicationConst(KEY_UQ_PPLAN_CD));
		//  ＭＡＣアドレス使用状況一覧照会.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", JFUWebCommon.getOpeDate(bl, null));

		outputMap.put("FUSV021902SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービス申込リダイレクト
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV021903SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 割引サービス適用条件値 → データ抽出項目設定条件一覧照会（その他CP）.ＫＥＹ＿データ抽出項目設定条件値1
		parentMap.put("key_dchskm_sete_jkn_value_1", bean[0].sendMessageString("割引サービス適用条件値", X31CWebConst.DATABEAN_GET_VALUE));
		// 申込年月日時分 → データ抽出項目設定条件一覧照会（その他CP）.ＫＥＹ＿基準年月日
		parentMap.put("key_kjnymd", bean[0].sendMessageString("申込年月日時分", X31CWebConst.DATABEAN_GET_VALUE).substring(0, 8));

		outputMap.put("FUSV021903SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：サービス申込リダイレクト
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV021901SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV021901SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV021901SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV021901SC_wrib_cmp_wimax_white_list_EKK2311B503CBSMsg1List =
				bean[0].getDataBeanArray("割引キャンペーンコード一覧照会明細（ＷｉＭＡＸ白ロム）");
		childList = null;
		if (listFUSV021901SC_wrib_cmp_wimax_white_list_EKK2311B503CBSMsg1List != null && parentMap != null
				&& parentMap.containsKey("EKK2311B503CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK2311B503CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV021901SC_wrib_cmp_wimax_white_list_EKK2311B503CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV021901SC_wrib_cmp_wimax_white_list_EKK2311B503CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV021901SC_wrib_cmp_wimax_white_list_EKK2311B503CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 割引キャンペーンコード一覧照会明細（ＷｉＭＡＸ白ロム）.割引サービスコード ← 割引キャンペーンコード一覧照会（WiMAX白ロム）マップ.割引キャンペーンコード一覧照会明細.割引サービスコード
				if (childMap != null)
				{
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
				}
				else
				{
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 割引キャンペーンコード一覧照会明細（ＷｉＭＡＸ白ロム）.割引サービス名 ← 割引キャンペーンコード一覧照会（WiMAX白ロム）マップ.割引キャンペーンコード一覧照会明細.割引サービス名
				if (childMap != null)
				{
					subbean.sendMessageString("割引サービス名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_nm"));
				}
				else
				{
					subbean.sendMessageString("割引サービス名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 割引キャンペーンコード一覧照会明細（ＷｉＭＡＸ白ロム）.受付開始年月日時分 ← 割引キャンペーンコード一覧照会（WiMAX白ロム）マップ.割引キャンペーンコード一覧照会明細.受付開始年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString("受付開始年月日時分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_sta_ymdhm"));
				}
				else
				{
					subbean.sendMessageString("受付開始年月日時分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 割引キャンペーンコード一覧照会明細（ＷｉＭＡＸ白ロム）.受付終了年月日時分 ← 割引キャンペーンコード一覧照会（WiMAX白ロム）マップ.割引キャンペーンコード一覧照会明細.受付終了年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString("受付終了年月日時分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_end_ymdhm"));
				}
				else
				{
					subbean.sendMessageString("受付終了年月日時分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：サービス申込リダイレクト
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV021903SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV021903SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV021903SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray dataList =
				bean[0].getDataBeanArray("割引キャンペーンコード一覧照会明細（ＷｉＭＡＸ白ロム）");
		childList = null;
		if (dataList != null && parentMap != null
				&& parentMap.containsKey("EKK2391B501CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK2391B501CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (dataList.getCount() - 1 >= i)
				{
					subbean = dataList.getDataBean(i);
				}
				else
				{
					subbean = dataList.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// データ抽出項目コード
				if (childMap != null)
				{
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_cd"));
				}
				else
				{
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// データ抽出項目名
				if (childMap != null)
				{
					subbean.sendMessageString("割引サービス名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_nm"));
				}
				else
				{
					subbean.sendMessageString("割引サービス名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 受付開始年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString("受付開始年月日時分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_sta_ymdhm"));
				}
				else
				{
					subbean.sendMessageString("受付開始年月日時分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 受付終了年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString("受付終了年月日時分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_end_ymdhm"));
				}
				else
				{
					subbean.sendMessageString("受付終了年月日時分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

}