/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0151_FUSV0151OPDBMapper
*	ソースファイル名：FUSV0151_FUSV0151OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年06月17日
*＜機能概要＞
*	BP（eo光テレビ初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/17	FJ		新規作成
*
**********************************************************************/
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.web.webview.FUW00108SF.FUW00108SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 * @author user
 */
public class FUSV0151_FUSV0151OPDBMapper
{

	/** リスト名 */
	private static final String EZM0171B012CBSMSG1LIST = "EZM0171B012CBSMsg1List";
	/** コード区分 */
	private static final String KEY_CD_DIV = "cd_div";
	/** コード区分名 */
	private static final String KEY_CD_DIV_NM = "cd_div_nm";
	/** コード区分 */
	private static final String KEY_FUNC_CODE = "func_code";
	/** コード区分名 */
	private static final String KEY_CD_SBT_CD = "key_cd_sbt_cd";
	/** コード区分略称 */
	private static final String KEY_STDARDYMD = "key_stdardymd";
	/** 出力マップキー */
	private static final String KEY_OUTPUT_MAP = "FUSV015101SC";

	/**
	 * コンストラクタ
	 */
	public FUSV0151_FUSV0151OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビ入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV015101SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (null == bean)
		{
			return null;
		}

		if (2 != bean.length)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(KEY_FUNC_CODE, func_code);
		// コード種別 → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put(KEY_CD_SBT_CD, bean[0].sendMessageString(FUW00108SFConst.CODE_SBT, X31CWebConst.DATABEAN_GET_VALUE));
		// 基準日 → コード名称管理一意照会マップ.ＫＥＹ＿基準日
		parentMap.put(KEY_STDARDYMD, bean[0].sendMessageString(FUW00108SFConst.STDARDYMD, X31CWebConst.DATABEAN_GET_VALUE));

		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EZM0171B012CBSMSG1LIST, arrayList);

		outputMap.put(KEY_OUTPUT_MAP, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビ入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV015101SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		//----------------------------------------------------------------
		// 手動マッピング
		//----------------------------------------------------------------

		// コード名称管理一覧照会SC 実行結果の設定
		HashMap parentMap = null;
		if (outputMap.containsKey(KEY_OUTPUT_MAP))
		{
			parentMap = (HashMap)outputMap.get(KEY_OUTPUT_MAP);
		}

		ArrayList childList = (ArrayList)parentMap.get(EZM0171B012CBSMSG1LIST);
		;

		if (null == childList)
		{
			return bean;
		}

		if (0 == childList.size())
		{
			return bean;
		}

		// テレビチューナー1機器選択リスト
		X31SDataBeanAccessArray listTvTunerKiki1 = bean[0].getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_1_LIST);
		X31SDataBeanAccess tvTunerKiki1 = listTvTunerKiki1.getDataBean(0);
		// テレビチューナー2機器選択リスト
		X31SDataBeanAccessArray listTvTunerKiki2 = bean[0].getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_2_LIST);
		X31SDataBeanAccess tvTunerKiki2 = listTvTunerKiki2.getDataBean(0);
		// テレビチューナー3機器選択リスト
		X31SDataBeanAccessArray listTvTunerKiki3 = bean[0].getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_3_LIST);
		X31SDataBeanAccess tvTunerKiki3 = listTvTunerKiki3.getDataBean(0);
		// テレビチューナー4機器選択リスト
		X31SDataBeanAccessArray listTvTunerKiki4 = bean[0].getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_4_LIST);
		X31SDataBeanAccess tvTunerKiki4 = listTvTunerKiki4.getDataBean(0);
		// テレビチューナー5機器選択リスト
		X31SDataBeanAccessArray listTvTunerKiki5 = bean[0].getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_5_LIST);
		X31SDataBeanAccess tvTunerKiki5 = listTvTunerKiki5.getDataBean(0);

		if (null != listTvTunerKiki1 && null != parentMap && parentMap.containsKey(EZM0171B012CBSMSG1LIST))
		{

			for (int i = 0; i < childList.size(); i++)
			{

				HashMap childMap = (HashMap)childList.get(i);

				setKikiList(tvTunerKiki1, childMap);
				setKikiList(tvTunerKiki2, childMap);
				setKikiList(tvTunerKiki3, childMap);
				setKikiList(tvTunerKiki4, childMap);
				setKikiList(tvTunerKiki5, childMap);
			}
		}
		//----------------------------------------------------------------

		return bean;
	}

	//----------------------------------------------------------------
	// 手動マッピング用
	//----------------------------------------------------------------

	/**
	 * 機器リストの設定
	 * <br>
	 * @param tvTunerKiki	チューナー機器Bean
	 * @param childMap		コード名称管理一覧照会SC 実行結果
	 */
	@SuppressWarnings("unchecked")
	private void setKikiList(X31SDataBeanAccess tvTunerKiki, HashMap childMap)
	{
		// テレビチューナー１機器選択.チューナーコードリスト ← コード名称管理一意照会マップ.コード名称管理コード区分一覧照会明細.コード区分
		if (null != childMap)
		{
			tvTunerKiki.sendMessageString(FUW00108SFConst.TUNER_CODE_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get(KEY_CD_DIV));
		}
		else
		{
			tvTunerKiki.sendMessageString(FUW00108SFConst.TUNER_CODE_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "");
		}
		// テレビチューナー１機器選択.チューナー名称リスト ← コード名称管理一意照会マップ.コード名称管理コード区分一覧照会明細.コード区分名
		if (null != childMap)
		{
			tvTunerKiki.sendMessageString(FUW00108SFConst.TUNER_NAME_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get(KEY_CD_DIV_NM));
		}
		else
		{
			tvTunerKiki.sendMessageString(FUW00108SFConst.TUNER_NAME_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "");
		}
	}

	//----------------------------------------------------------------
}