/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0288_FUSV0288OPDBMapper
*	ソースファイル名：FUSV0288_FUSV0288OPDBMapper.java
*	作成者			：富士通
*	日付			：2014年12月01日
*＜機能概要＞
*	BP（eo光ネットオプションサービス契約解約）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v14.00.00   2014/12/01  FJ）谷本    【ANK-1688-00-00】
*   v32.00      2017/04/13  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.FUW11401SF.FUW11401SFConst;
import eo.web.webview.FUW11501SF.FUW11501SFConst;
import eo.web.webview.FUW11601SF.FUW11601SFConst;

/**
 * DataBean-BPマッピングをします。
 *
 * @author 富士通
 */
public class FUSV0289_FUSV0289OPDBMapper
{

	/** bean格納インデックス（メールアドレス用）：サービスフォームBean */
	private static final int BEAN_INDEX_SF_FOR_MLAD = 0;
	/** bean格納インデックス（メールアドレス用）：共有フォームBean.SSO情報 */
	private static final int BEAN_INDEX_SSO_FOR_MLAD = 1;

	/** bean格納インデックス（メールウィルスチェック用）：サービスフォームBean */
	private static final int BEAN_INDEX_SF_FOR_VC = 0;
	/** bean格納インデックス（メールウィルスチェック用）：共有フォームBean.SSO情報 */
	private static final int BEAN_INDEX_SSO_FOR_VC = 1;

	/** bean格納インデックス（Myホームページ容量用）：サービスフォームBean */
	private static final int BEAN_INDEX_SF_FOR_HP = 0;
	/** bean格納インデックス（Myホームページ容量用）：共有フォームBean.SSO情報 */
	private static final int BEAN_INDEX_SSO_FOR_HP = 1;
	/** bean格納インデックス（リモートサポートプラス用）：共有フォームBean.サービス契約情報 */
	private static final int BEAN_INDEX_SV_FOR_HP = 2;
	/** bean格納インデックス（リモートサポートプラス用）：共有フォームBean.オプションサービス契約情報 */
	private static final int BEAN_INDEX_OP_FOR_HP = 3;

	/** bean格納インデックス（リモートサポートプラス用）：サービスフォームBean */
	private static final int BEAN_INDEX_SF_FOR_RS = 0;
	/** bean格納インデックス（リモートサポートプラス用）：共有フォームBean.SSO情報 */
	private static final int BEAN_INDEX_SSO_FOR_RS = 1;
	/** bean格納インデックス（リモートサポートプラス用）：共有フォームBean.オプションサービス契約情報 */
	private static final int BEAN_INDEX_OP_FOR_RS = 2;

	/** bean格納インデックス（リモートサポートプラス用）：サービスフォームBean */
	private static final int BEAN_INDEX_SF_FOR_IPV6 = 0;
	/** bean格納インデックス（リモートサポートプラス用）：共有フォームBean.SSO情報 */
	private static final int BEAN_INDEX_SSO_FOR_IPV6 = 1;
	/** bean格納インデックス（リモートサポートプラス用）：共有フォームBean.オプションサービス契約情報 */
	private static final int BEAN_INDEX_OP_FOR_IPV6 = 2;

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** eo光ネットオプション解約情報取得CC */
	private static final String CC_TITLE_FUSV028901 = "FUSV028901CC";

	/** オプション解約区分：メールアドレスのWEB解約 */
	private static final String OP_DSL_DIV_MLAD = "1";
	/** オプション解約区分：メールウィルスチェックサービスのWEB解約 */
	private static final String OP_DSL_DIV_VC = "2";
	/** オプション解約区分：Myホームページ容量削減のWEB対応 */
	private static final String OP_DSL_DIV_HP = "3";
	/** オプション解約区分：リモートサポートプラスのWEB解約 */
	private static final String OP_DSL_DIV_RS = "4";
	/** オプション解約区分：IPv6サービスのWEB解約 */
	private static final String OP_DSL_DIV_IPV6 = "5";

	/** オプション解約区分 */
	private static final String IN_OP_DSL_DIV = "op_dsl_div";

	/** IN項目:SYSID */
	private static final String IN_PARAM_SYSID = "sysid";
	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_SVC_KEI_NO = "svc_kei_no";
	/** IN項目:オプションサービス契約番号 */
	private static final String IN_PARAM_OP_SVC_KEI_NO = "op_svc_kei_no";
	/** IN項目:サービス契約情報.料金コースコード */
	private static final String IN_PARAM_PCRS_CD = "pcrs_cd";

	/** 項目ID：ID通知書印字用料金プラン名 */
	private static final String ID_TCHISHO_PRT_YO_PPLAN_NM = "id_tchisho_prt_yo_pplan_nm";
	/** 項目ID：業務パラメータ設定値 */
	private static final String WORK_PARAM_SETTE_VALUE = "work_param_sette_value";
	/** 項目ID：サービス提供物初期値 */
	private static final String SVCTK_BUT_SHK_VALUE = "svctk_but_shk_value";
	/** 項目ID：サービス提供物無料値 */
	private static final String SVCTK_BUT_MRYO_VALUE = "svctk_but_mryo_value";

	/** 2017/04/13 ANK-3149-00-00 add start */
	/** 項目ID：セキュリティパック申込有無 */
	private static final String SECPA_MSKM_UMU = "secpa_mskm_umu";
	/** 項目ID：プレミアムパック申込有無 */
	private static final String PREPA_MSKM_UMU = "prepa_mskm_umu";

	/** 2017/04/13 ANK-3149-00-00 add end */


	/**
	 * コンストラクタ
	 */
	public FUSV0289_FUSV0289OPDBMapper()
	{
	}

	/**
	 * 上りマッピング（1.eo光ネットオプションサービス契約解約情報取得CC(メールアドレスのWEB解約)）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV028901CC_MLAD(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプション解約区分（メールアドレス）
		parentMap.put(IN_OP_DSL_DIV, OP_DSL_DIV_MLAD);

		// SYSID
		parentMap.put(IN_PARAM_SYSID, bean[BEAN_INDEX_SSO_FOR_MLAD].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV028901, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング（1.eo光ネットオプションサービス契約解約情報取得CC(メールウィルスチェックサービスのWEB解約)）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV028901CC_VC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプション解約区分（メールウィルスチェックサービス）
		parentMap.put(IN_OP_DSL_DIV, OP_DSL_DIV_VC);

		// SYSID
		parentMap.put(IN_PARAM_SYSID, bean[BEAN_INDEX_SSO_FOR_VC].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV028901, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング（1.eo光ネットオプションサービス契約解約情報取得CC(Myホームページ容量削減のWEB対応)）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV028901CC_HP(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプション解約区分（Myホームページ容量削減のWEB対応）
		parentMap.put(IN_OP_DSL_DIV, OP_DSL_DIV_HP);

		// SSO情報.SYSID
		parentMap.put(IN_PARAM_SYSID, bean[BEAN_INDEX_SSO_FOR_HP].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// SSO情報.サービス契約番号
		parentMap.put(IN_PARAM_SVC_KEI_NO, bean[BEAN_INDEX_SSO_FOR_HP].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21,
				X31CWebConst.DATABEAN_GET_VALUE));

		// オプションサービス契約情報.オプションサービス契約番号
		parentMap.put(IN_PARAM_OP_SVC_KEI_NO, bean[BEAN_INDEX_OP_FOR_HP].sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_28,
				X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約情報.料金コースコード
		parentMap.put(IN_PARAM_PCRS_CD, bean[BEAN_INDEX_SV_FOR_HP].sendMessageString(CommonInfoCFConst.PCRS_CD_23, X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV028901, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング（1.eo光ネットオプションサービス契約解約情報取得CC(リモートサポートプラスのWEB解約)）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV028901CC_RS(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプション解約区分（リモートサポートプラスのWEB解約）
		parentMap.put(IN_OP_DSL_DIV, OP_DSL_DIV_RS);

		// SSO情報.SYSID
		parentMap.put(IN_PARAM_SYSID, bean[BEAN_INDEX_SSO_FOR_RS].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// SSO情報.サービス契約番号
		parentMap.put(IN_PARAM_SVC_KEI_NO, bean[BEAN_INDEX_SSO_FOR_RS].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21,
				X31CWebConst.DATABEAN_GET_VALUE));

		// オプションサービス契約情報.オプションサービス契約番号
		parentMap.put(IN_PARAM_OP_SVC_KEI_NO, bean[BEAN_INDEX_OP_FOR_RS].sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_28,
				X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV028901, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング（1.eo光ネットオプションサービス契約解約情報取得CC(IPv6サービスのWEB解約)）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV028901CC_IPV6(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプション解約区分（IPv6サービスのWEB解約）
		parentMap.put(IN_OP_DSL_DIV, OP_DSL_DIV_IPV6);

		// SSO情報.SYSID
		parentMap.put(IN_PARAM_SYSID, bean[BEAN_INDEX_SSO_FOR_IPV6].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// SSO情報.サービス契約番号
		parentMap.put(IN_PARAM_SVC_KEI_NO, bean[BEAN_INDEX_SSO_FOR_IPV6].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21,
				X31CWebConst.DATABEAN_GET_VALUE));

		// オプションサービス契約情報.オプションサービス契約番号
		parentMap.put(IN_PARAM_OP_SVC_KEI_NO, bean[BEAN_INDEX_OP_FOR_IPV6].sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_28,
				X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV028901, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング（3.Myホームページ容量削減のWEB対応）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV028901CC_HP(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(CC_TITLE_FUSV028901))
		{
			parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV028901);
		}

		if (null != parentMap)
		{
			if (parentMap.containsKey(WORK_PARAM_SETTE_VALUE))
			{
				// MYホームページURLのプロトコル
				bean.sendMessageString(FUW11401SFConst.URL_PROTOCOL, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(WORK_PARAM_SETTE_VALUE));
			}

			if (parentMap.containsKey(SVCTK_BUT_SHK_VALUE))
			{
				// 初期容量
				bean.sendMessageLong(FUW11401SFConst.SHK_CAPA, X31CWebConst.DATABEAN_SET_VALUE, Long.valueOf((String)parentMap
						.get(SVCTK_BUT_SHK_VALUE)));
			}

			if (parentMap.containsKey(SVCTK_BUT_MRYO_VALUE))
			{
				// 無料容量
				bean.sendMessageLong(FUW11401SFConst.MRYO_CAPA, X31CWebConst.DATABEAN_SET_VALUE, Long.valueOf((String)parentMap
						.get(SVCTK_BUT_MRYO_VALUE)));
			}
		}
		return bean;

	}

	/**
	 * 下りマッピング（4.リモートサポートプラスのWEB解約）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV028901CC_RS(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(CC_TITLE_FUSV028901))
		{
			parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV028901);
		}

		if (null != parentMap && parentMap.containsKey(ID_TCHISHO_PRT_YO_PPLAN_NM))
		{
			bean.sendMessageString(FUW11501SFConst.ID_TCHISHO_PRT_YO_PPLAN_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap
					.get(ID_TCHISHO_PRT_YO_PPLAN_NM));
		}

		/** 2017/04/13 ANK-3149-00-00 add start */

		// パック契約フラグに契約無を設定
		bean.sendMessageBoolean(FUW11501SFConst.PACK_KEI_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		if (null != parentMap && parentMap.containsKey(SECPA_MSKM_UMU))
		{
			if (JFUStrConst.CD00002_1.equals(parentMap.get(SECPA_MSKM_UMU)))
			{
				// パック契約フラグに契約有を設定
				bean.sendMessageBoolean(FUW11501SFConst.PACK_KEI_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
		}

		if (null != parentMap && parentMap.containsKey(PREPA_MSKM_UMU))
		{
			if (JFUStrConst.CD00002_1.equals(parentMap.get(PREPA_MSKM_UMU)))
			{
				// パック契約フラグに契約有を設定
				bean.sendMessageBoolean(FUW11501SFConst.PACK_KEI_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
		}
		/** 2017/04/13 ANK-3149-00-00 add end */

		return bean;
	}

	/**
	 * 下りマッピング（5.IPv6サービスのWEB解約）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV028901CC_IPV6(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(CC_TITLE_FUSV028901))
		{
			parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV028901);
		}

		if (null != parentMap && parentMap.containsKey(ID_TCHISHO_PRT_YO_PPLAN_NM))
		{
			bean.sendMessageString(FUW11601SFConst.ID_TCHISHO_PRT_YO_PPLAN_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap
					.get(ID_TCHISHO_PRT_YO_PPLAN_NM));
		}
		return bean;
	}

}