/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0292_FUSV0292OPDBMapper
*	ソースファイル名：FUSV0292_FUSV0292OPDBMapper.java
*	作成者			：FJ
*	日付			：2015年06月02日
*＜機能概要＞
*	BP（引越しナビ住所変更申込照会(電気)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v16.0.0		2015/06/02	FJ)横山		ANK-2480-00-00_新電力対応　新規作成
*	v17.0.0		2015/09/10	FJ)岡井		ANK-2480-00-00_新電力対応　eo電気サービス契約一覧照会(サービス契約グループ設定番号)CC削除
*   v47.00      2020/01/08  FJ)西川     ANK-3628-00-00_マンションタイプ引越しNaviのフォロー対応
*	v56.00      2021/12/21  FJ)新谷     ANK-4086-00-00_住変Webのeo電気オール電化対応化
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

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.FUW10401SF.FUW10401SFConst;

/**
 * DataBean-BPマッピングをします。
 *
 * @author 富士通
 */
public class FUSV0292_FUSV0292OPDBMapper
{

	/** サービスフォームBean */
	private static final int BEAN_SF_1 = 1;

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** コード名称管理一意照会SC（電話区分） */
	private static final String SC_TITLE_FUSV029201 = "FUSV029201SC";
	/** コード名称管理一意照会SC（時間帯） */
	private static final String SC_TITLE_FUSV029202 = "FUSV029202SC";
	/** コード名称管理一意照会SC（料金プラン） */
	private static final String SC_TITLE_FUSV029203 = "FUSV029203SC";
	/** コード名称管理一意照会SC（電気のご契約先） */
	private static final String SC_TITLE_FUSV029204 = "FUSV029204SC";
	/** コード名称管理一意照会SC（電気のご契約種別） */
	private static final String SC_TITLE_FUSV029205 = "FUSV029205SC";
	/** コード名称管理一意照会SC（オール電化機器） */
	private static final String SC_TITLE_FUSV029206 = "FUSV029206SC";

	// マップキー
	/** コード区分 */
	private static final String CD_DIV = "cd_div";
	/** コード区分名 */
	private static final String CD_DIV_NM = "cd_div_nm";
	/** コード名称管理コード区分一覧照会明細 */
	private static final String EZM0171B012_LIST = "EZM0171B012CBSMsg1List";
	/** ＫＥＹ＿コード種別コード */
	private static final String KEY_CD_SBT_CD = "key_cd_sbt_cd";
	/** ＫＥＹ＿基準日 */
	private static final String KEY_STDARDYMD = "key_stdardymd";

	/** リストの追加項目 */
	/** 選択値：選択してください（表示名） */
	private static final String SELECT_DISP = "選択してください";
	/** 選択値：選択してください（値） */
	private static final String SELECT_DISP_VALUE = "000";
	/** 現在の電気のご契約先の初期値 (99：現在電気のご契約なし) */
	private static final String SELECT_01 = "99";

	/**
	 * コンストラクタ
	 */
	public FUSV0292_FUSV0292OPDBMapper()
	{
	}

	/**
	 * コード名称管理一意照会SC（電話区分）の上りマッピング処理です。
	 * @param bean サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kjnymd　基準日
	 * @return HashMap
	 */
	public HashMap setFUSV029201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, JFUStrConst.CD01670); // "CD01670":eo電気住所変更連絡先電話番号コード
		// ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[BEAN_SF_1].sendMessageString(FUW10401SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV029201, parentMap);

		return outputMap;
	}

	/**
	 * コード名称管理一意照会SC（時間帯）の上りマッピング処理です。
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kjnymd　基準日
	 * @return HashMap
	 */
	public HashMap setFUSV029202SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, JFUStrConst.CD01671); // "CD01671":eo電気住所変更時間帯聴き取りコード
		// ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[BEAN_SF_1].sendMessageString(FUW10401SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV029202, parentMap);

		return outputMap;
	}

	/**
	 * コード名称管理一意照会SC（料金プラン）の上りマッピング処理です。
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kjnymd　基準日
	 * @return HashMap
	 */
	public HashMap setFUSV029203SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, JFUStrConst.CD01734); // "CD01734":ｅｏ電気料金プラン名コード
		// ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[BEAN_SF_1].sendMessageString(FUW10401SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV029203, parentMap);

		return outputMap;
	}

	/**
	 * コード名称管理一意照会SC（電気のご契約先）の上りマッピング処理です。
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kjnymd　基準日
	 * @return HashMap
	 */
	public HashMap setFUSV029204SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, JFUStrConst.CD01735); // "CD01735":電気契約先会社コード
		// ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[BEAN_SF_1].sendMessageString(FUW10401SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV029204, parentMap);

		return outputMap;
	}

	/**
	 * コード名称管理一意照会SC（電気のご契約種別）の上りマッピング処理です。
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kjnymd　基準日
	 * @return HashMap
	 */
	public HashMap setFUSV029205SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, JFUStrConst.CD01736); // "CD01736":電気契約種別コード
		// ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[BEAN_SF_1].sendMessageString(FUW10401SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV029205, parentMap);

		return outputMap;
	}

	/**
	 * コード名称管理一意照会SC（オール電化機器）の上りマッピング処理です。
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kjnymd　基準日
	 * @return HashMap
	 */
	public HashMap setFUSV029206SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, JFUStrConst.CD01779); // "CD01779":オール電化機器コード
		// ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[BEAN_SF_1].sendMessageString(FUW10401SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV029206, parentMap);

		return outputMap;
	}

	/**
	 * コード名称管理一意照会SC（電話区分）の下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV029201SC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(SC_TITLE_FUSV029201))
		{
			parentMap = (HashMap)outputMap.get(SC_TITLE_FUSV029201);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray cd_list = bean.getDataBeanArray(FUW10401SFConst.ELEC_TEL_CD_LIST);
		// 「選択値:選択してください」を先頭に追加
		cd_list.clearArray();
		X31SDataBeanAccess listDataType = cd_list.addDataBean();
		listDataType.sendMessageString(FUW10401SFConst.ELEC_TEL_CD_30, X31CWebConst.DATABEAN_SET_VALUE, SELECT_DISP_VALUE);
		listDataType.sendMessageString(FUW10401SFConst.ELEC_TEL_NM_30, X31CWebConst.DATABEAN_SET_VALUE, SELECT_DISP);

		if (parentMap != null && parentMap.containsKey(EZM0171B012_LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B012_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = cd_list.addDataBean();

				HashMap childMap = (HashMap)childList.get(i);

				subbean.sendMessageString(FUW10401SFConst.ELEC_TEL_CD_30, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV));
				subbean.sendMessageString(FUW10401SFConst.ELEC_TEL_NM_30, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV_NM));
			}
		}
		return bean;
	}

	/**
	 * コード名称管理一意照会SC（時間帯）の下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV029202SC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(SC_TITLE_FUSV029202))
		{
			parentMap = (HashMap)outputMap.get(SC_TITLE_FUSV029202);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray cd_list = bean.getDataBeanArray(FUW10401SFConst.ELEC_TIME_CD_LIST);
		cd_list.clearArray();
		// 「選択値:選択してください」を先頭に追加
		X31SDataBeanAccess listDataType = cd_list.addDataBean();
		listDataType.sendMessageString(FUW10401SFConst.ELEC_TIME_CD_31, X31CWebConst.DATABEAN_SET_VALUE, SELECT_DISP_VALUE);
		listDataType.sendMessageString(FUW10401SFConst.ELEC_TIME_NM_31, X31CWebConst.DATABEAN_SET_VALUE, SELECT_DISP);

		if (parentMap != null && parentMap.containsKey(EZM0171B012_LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B012_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = cd_list.addDataBean();

				HashMap childMap = (HashMap)childList.get(i);

				subbean.sendMessageString(FUW10401SFConst.ELEC_TIME_CD_31, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV));
				subbean.sendMessageString(FUW10401SFConst.ELEC_TIME_NM_31, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV_NM));
			}
		}
		return bean;
	}

	/**
	 * コード名称管理一意照会SC（料金プラン）の下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV029203SC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(SC_TITLE_FUSV029203))
		{
			parentMap = (HashMap)outputMap.get(SC_TITLE_FUSV029203);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray cd_list = bean.getDataBeanArray(FUW10401SFConst.ELEC_PRC_PLAN_LIST);
		cd_list.clearArray();

		if (parentMap != null && parentMap.containsKey(EZM0171B012_LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B012_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = cd_list.addDataBean();

				HashMap childMap = (HashMap)childList.get(i);

				String choiceNum = String.valueOf(Integer.valueOf(i)+1);

				subbean.sendMessageString(FUW10401SFConst.ELEC_PRC_PLAN_CHOICE_46, X31CWebConst.DATABEAN_SET_VALUE, choiceNum);
				subbean.sendMessageString(FUW10401SFConst.ELEC_PRC_PLAN_CD_46, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV));
				subbean.sendMessageString(FUW10401SFConst.ELEC_PRC_PLAN_NM_46, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV_NM));
			}
		}
		return bean;
	}

	/**
	 * コード名称管理一意照会SC（電気のご契約先）の下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV029204SC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(SC_TITLE_FUSV029204))
		{
			parentMap = (HashMap)outputMap.get(SC_TITLE_FUSV029204);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray cd_list = bean.getDataBeanArray(FUW10401SFConst.USE_ELEC_KEI_COMP_LIST);
		cd_list.clearArray();

		if (parentMap != null && parentMap.containsKey(EZM0171B012_LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B012_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = cd_list.addDataBean();

				HashMap childMap = (HashMap)childList.get(i);

				String choiceNum = String.valueOf(Integer.valueOf(i)+1);

				subbean.sendMessageString(FUW10401SFConst.USE_ELEC_KEI_COMP_CHOICE_48, X31CWebConst.DATABEAN_SET_VALUE, choiceNum);
				subbean.sendMessageString(FUW10401SFConst.USE_ELEC_KEI_COMP_CD_48, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV));
				subbean.sendMessageString(FUW10401SFConst.USE_ELEC_KEI_COMP_NM_48, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV_NM));
			}
		}
		//初期値を設定
		bean.sendMessageString(FUW10401SFConst.INP_USE_ELEC_KEI_COMP, X31CWebConst.DATABEAN_SET_VALUE, SELECT_01);

		return bean;
	}

	/**
	 * コード名称管理一意照会SC（電気のご契約種別）の下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV029205SC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(SC_TITLE_FUSV029205))
		{
			parentMap = (HashMap)outputMap.get(SC_TITLE_FUSV029205);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray cd_list = bean.getDataBeanArray(FUW10401SFConst.USE_ELEC_KSBT_LIST);
		cd_list.clearArray();

		if (parentMap != null && parentMap.containsKey(EZM0171B012_LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B012_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = cd_list.addDataBean();

				HashMap childMap = (HashMap)childList.get(i);

				String choiceNum = String.valueOf(Integer.valueOf(i)+1);

				subbean.sendMessageString(FUW10401SFConst.USE_ELEC_KSBT_CHOICE_49, X31CWebConst.DATABEAN_SET_VALUE, choiceNum);
				subbean.sendMessageString(FUW10401SFConst.USE_ELEC_KSBT_CD_49, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV));
				subbean.sendMessageString(FUW10401SFConst.USE_ELEC_KSBT_NM_49, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV_NM));
			}
		}
		return bean;
	}

	/**
	 * コード名称管理一意照会SC（オール電化機器）の下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV029206SC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(SC_TITLE_FUSV029206))
		{
			parentMap = (HashMap)outputMap.get(SC_TITLE_FUSV029206);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray cd_list = bean.getDataBeanArray(FUW10401SFConst.ALLDENKA_KIKI_LIST);
		cd_list.clearArray();

		if (parentMap != null && parentMap.containsKey(EZM0171B012_LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B012_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = cd_list.addDataBean();

				HashMap childMap = (HashMap)childList.get(i);

				String choiceNum = String.valueOf(i+1);

				subbean.sendMessageString(FUW10401SFConst.ALLDENKA_KIKI_CHOICE_50, X31CWebConst.DATABEAN_SET_VALUE, choiceNum);
				subbean.sendMessageString(FUW10401SFConst.ALLDENKA_KIKI_CD_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV));
				subbean.sendMessageString(FUW10401SFConst.ALLDENKA_KIKI_NM_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CD_DIV_NM));
			}
		}
		return bean;
	}

}