/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0306_FUSV0306OPDBMapper
*	ソースファイル名：FUSV0306_FUSV0306OPDBMapper.java
*	作成者			：FJ
*	日付			：2017年04月17日
*＜機能概要＞
*	BP（セキュリティオプション申込(初期表示)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v32.00      2017/04/17  FJ）張本   【ANK-3149-00-00】新セキュリティパック導入
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW12101SF.FUW12101SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0306_FUSV0306OPDBMapper
{

	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** セキュリティーパック表示パターン */
	private static final String SECPA_VIEW_PTN = "secpaViewPtn";
	/** プレミアムパック表示パターン */
	private static final String PREPA_VIEW_PTN = "prepaViewPtn";
	/** ファミリーパック表示パターン */
	private static final String FP_VIEW_PTN = "fpViewPtn";
	/** ウィルスバスター表示パターン */
	private static final String VB_VIEW_PTN = "vbViewPtn";
	/** リモートサポートプラス表示パターン */
	private static final String RMTSPRT_PLUS_VIEW_PTN = "rmtsprtPlusViewPtn";
	/** インターネットサギウォール表示パターン */
	private static final String INETSGWL_VIEW_PTN = "inetsgwlViewPtn";
	/** ノートンファミリープレミア表示パターン */
	private static final String NTFMLPRM_VIEW_PTN = "ntfmlprmViewPtn";
	/** 有害Ｗｅｂフィルター表示パターン */
	private static final String YUGAI_WEB_FLT_VIEW_PTN = "yugaiWebFltViewPtn";
	/** ＦＰ解約ルータ表示パターン */
	private static final String FP_DSL_RT_VIEW_PTN = "fpDslRtViewPtn";
	/** ＦＰ継続ルータ表示パターン */
	private static final String FP_KEIZK_RT_VIEW_PTN = "fpKeizkRtViewPtn";
	/** 多機能ルータＶＡ区分 */
	private static final String TAKINORT_VA_KBN = "takinortVaKbn";
	/** ルータ区分 */
	private static final String RT_KBN = "rtKbn";
	/** セキュリティーパック契約有無 */
	private static final String SECPA_KEI_UM = "secpaKeiUm";
	/** プレミアムパック契約有無 */
	private static final String PREPA_KEI_UM = "prepaKeiUm";
	/** ファミリーパック契約有無 */
	private static final String FAMIPA_KEI_UM = "famipaKeiUm";
	/** セキュリティーパック金額表示 */
	private static final String SECPA_AMNT_DSP = "secpaAmntDsp";
	/** インターネットサギウォール金額表示 */
	private static final String INETSGWL_AMNT_DSP = "inetsgwlAmntDsp";
	/** ノートンファミリープレミア金額表示 */
	private static final String NTFMLPRM_AMNT_DSP = "ntfmlprmAmntDsp";

	/** 料金グループコード */
	private static final String IN_PRC_GRP_CD = "in_prc_grp_cd";
	/** 料金コースコード */
	private static final String IN_PCRS_CD = "in_pcrs_cd";
	/** 料金プランコード */
	private static final String IN_PPLAN_CD = "in_pplan_cd";
	/** インターネットサギウォールセット割引適用金額 */
	private static final String ISW_SET_WRIB_PRC = "isw_set_wrib_prc";

	// ■CC
	/** FUSV030601CC */
	private static final String FUSV030601CC = "FUSV030601CC";
	/** FUSV030602CC */
	private static final String FUSV030602CC = "FUSV030602CC";

	// ■項目キー
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/**
	 * コンストラクタ
	 */
	public FUSV0306_FUSV0306OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セキュリティオプション申込(初期表示)　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code　機能コード
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV030601CC(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>();

		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SVC_KEI_INFO);

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号 → セキュリティパック表示制御マップ.サービス契約番号
		parentMap.put(SVC_KEI_NO, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV030601CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セキュリティオプション申込(初期表示)　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code　機能コード
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV030602CC(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>();

		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SVC_KEI_INFO);

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 料金グループコード → インターネットサギウォールセット割引金額取得マップ.料金グループコード
		parentMap.put(IN_PRC_GRP_CD, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード → インターネットサギウォールセット割引金額取得マップ.料金コースコード
		parentMap.put(IN_PCRS_CD, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PCRS_CD_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金プランコード → インターネットサギウォールセット割引金額取得マップ.料金プランコード
		parentMap.put(IN_PPLAN_CD, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PPLAN_CD_23, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV030602CC, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：セキュリティオプション申込　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @return bean　[0]：セキュリティオプション申込　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV030601CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV030601CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV030601CC);
		}

		// セキュリティパック表示パターン ← セキュリティパック表示制御マップ.セキュリティパック表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.SP_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(SECPA_VIEW_PTN));
		// プレミアムパック表示パターン ← セキュリティパック表示制御マップ.プレミアムパック表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.PP_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(PREPA_VIEW_PTN));
		// ファミリーパック表示パターン ← セキュリティパック表示制御マップ.ファミリーパック表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.FP_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(FP_VIEW_PTN));
		// ウィルスバスター表示パターン ← セキュリティパック表示制御マップ.ウィルスバスター表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.VB_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(VB_VIEW_PTN));
		// リモートサポートプラス表示パターン ← セキュリティパック表示制御マップ.リモートサポートプラス表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.RS_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(RMTSPRT_PLUS_VIEW_PTN));
		// インターネットサギウォール表示パターン ← セキュリティパック表示制御マップ.インターネットサギウォール表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.ISW_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(INETSGWL_VIEW_PTN));
		// ノートンファミリープレミア表示パターン ← セキュリティパック表示制御マップ.ノートンファミリープレミア表示パターン 
		bean[0].sendMessageObject(FUW12101SFConst.NFP_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(NTFMLPRM_VIEW_PTN));
		// 有害Webフィルター表示パターン ← セキュリティパック表示制御マップ.有害Webフィルター表示パターン
		bean[0].sendMessageObject(FUW12101SFConst.UWF_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(YUGAI_WEB_FLT_VIEW_PTN));
		// ＦＰ解約ルーター表示パターン ← セキュリティパック表示制御マップ.ＦＰ解約ルーター表示パターン
		bean[0].sendMessageObject(FUW12101SFConst.FP_CAN_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(FP_DSL_RT_VIEW_PTN));
		// ＦＰ継続ルーター表示パターン ← セキュリティパック表示制御マップ.ＦＰ継続ルーター表示パターン
		bean[0].sendMessageObject(FUW12101SFConst.FP_CON_DSP_PTN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(FP_KEIZK_RT_VIEW_PTN));
		// 多機能ルータＶＡ区分 ← セキュリティパック表示制御マップ.多機能ルータVA区分
		bean[0].sendMessageObject(FUW12101SFConst.TKN_RT_VA_KBN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(TAKINORT_VA_KBN));
		// ルータ区分 ← セキュリティパック表示制御マップ.ルータ区分
		bean[0].sendMessageObject(FUW12101SFConst.RT_KBN, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(RT_KBN));

		// セキュリティパック契約有無 ← セキュリティパック表示制御マップ.セキュリティパック契約有無
		bean[0].sendMessageObject(FUW12101SFConst.SP_KEI_UM, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(SECPA_KEI_UM));
		// プレミアムパック契約有無 ← セキュリティパック表示制御マップ.プレミアムパック契約有無
		bean[0].sendMessageObject(FUW12101SFConst.PP_KEI_UM, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(PREPA_KEI_UM));
		// ファミリーパック契約有無 ← セキュリティパック表示制御マップ.ファミリーパック契約有無
		bean[0].sendMessageObject(FUW12101SFConst.FP_KEI_UM, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(FAMIPA_KEI_UM));

		// セキュリティパック金額表示 ← セキュリティパック表示制御マップ.セキュリティパック金額表示
		bean[0].sendMessageObject(FUW12101SFConst.SP_PRC_DSP, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(SECPA_AMNT_DSP));
		// インターネットサギウォール金額表示 ← セキュリティパック表示制御マップ.インターネットサギウォール金額表示
		bean[0].sendMessageObject(FUW12101SFConst.ISW_PRC_DSP, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(INETSGWL_AMNT_DSP));
		// ノートンファミリープレミア金額表示 ← セキュリティパック表示制御マップ.ノートンファミリープレミア金額表示
		bean[0].sendMessageObject(FUW12101SFConst.NFP_PRC_DSP, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(NTFMLPRM_AMNT_DSP));

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：セキュリティオプション申込　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @return bean　[0]：セキュリティオプション申込　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV030602CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV030602CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV030602CC);
		}

		// インターネットサギウォールセット割引適用金額 ← インターネットサギウォールセット割引金額取得マップ.インターネットサギウォールセット割引適用金額 
		bean[0].sendMessageObject(FUW12101SFConst.ISW_SET_WRIB_PRC, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(ISW_SET_WRIB_PRC) + JFUStrConst.YEN);

		return bean;
	}

}