/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0277_FUSV0277OPDBMapper
*	ソースファイル名：FUSV0277_FUSV0277OPDBMapper.java
*	作成者			：FJ
*	日付			：2013年12月21日
*＜機能概要＞
*	BP（MVNO同時申込）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v8.00.00	2013/12/21	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.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUWebCommon;


/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0277_FUSV0277OPDBMapper
{

	// ■SC
	/** FUSV027701SC */
	private static final String FUSV027701SC = "FUSV027701SC";
	/** FUSV027702SC */
	private static final String FUSV027702SC = "FUSV027702SC";

	// ■明細
	/** お客様一意照会明細 */
	private static final String ECK0011A010CBSMSG1LIST = "ECK0011A010CBSMsg1List";
	/** 連絡先(コンテンツ用メールアドレス)一覧照会明細 */
	private static final String ECK0201B002CBSMSG1LIST = "ECK0201B002CBSMsg1List";

	// ■項目ID
	/** ＫＥＹ＿SYSID */
	private static final String KEY_SYSID = "key_sysid";
	/** 契約者タイプコード */
	private static final String KEISHA_TYPE_CD = "keisha_type_cd";
	/** eoID */
	private static final String EOID = "eoid";
	/** コンテンツお客様名 */
	private static final String CONT_CUST_NM = "cont_cust_nm";
	/** コンテンツお客様カナ名 */
	private static final String CONT_CUST_KANA = "cont_cust_kana";
	/** コンテンツお客様性別コード */
	private static final String CONT_CUST_SEX_CD = "cont_cust_sex_cd";
	/** コンテンツお客様生年月日 */
	private static final String CONT_CUST_BIRTHD = "cont_cust_birthd";
	/** コンテンツお客様生年月日 */
	private static final String CONT_PCD = "cont_pcd";
	/** メールアドレス */
	private static final String MLAD = "mlad";
	/** 会員種別コード */
	private static final String MEMBER_SBT_CD = "member_sbt_cd";

	// ■その他
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/**
	 * コンストラクタ
	 */
	public FUSV0277_FUSV0277OPDBMapper()
	{
	}

	/**
	 * お客様一意照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @param funcCd 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV027701SC(X31SDataBeanAccess bean, HashMap outputMap, String funcCd)
	{

		if(bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ■WEB新規情報
		X31SDataBeanAccess webNewInfoBean = getDataBean(bean, CommonInfoCFConst.WEB_NEW_INFO);

		// 機能コード
		parentMap.put(FUNC_CODE, funcCd);

		// KEY_SYSID
		parentMap.put(KEY_SYSID, webNewInfoBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(ECK0011A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV027701SC, parentMap);

		return parentMap;
	}

	/**
	 * 連絡先(コンテンツ用メールアドレス)一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @param funcCd 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV027702SC(X31SDataBeanAccess bean, HashMap outputMap, String funcCd)
	{

		if(bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ■WEB新規情報
		X31SDataBeanAccess webNewInfoBean = getDataBean(bean, CommonInfoCFConst.WEB_NEW_INFO);

		// 機能コード
		parentMap.put(FUNC_CODE, funcCd);

		// KEY_SYSID
		parentMap.put(KEY_SYSID, webNewInfoBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(ECK0201B002CBSMSG1LIST, arrayList);

		outputMap.put(FUSV027702SC, parentMap);

		return parentMap;
	}

	/**
	 * お客様一意照会の下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @return データBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV027701SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		if(bean == null || (outputMap == null || outputMap.size() == 0))
		{
			return bean;
		}

		HashMap parentMap = null;
		ArrayList childList = null;

		if (outputMap.containsKey(FUSV027701SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV027701SC);
		}
		if (null != parentMap && parentMap.containsKey(ECK0011A010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(ECK0011A010CBSMSG1LIST);
		}

		// ■WEB新規情報
		X31SDataBeanAccess webNewInfoBean = getDataBean(bean, CommonInfoCFConst.WEB_NEW_INFO);
		// ■WEB新規情報.コンテンツ情報
		X31SDataBeanAccess contInfoBean = getDataBean(webNewInfoBean, CommonInfoCFConst.CONT_INFO);
		// ■WEB新規情報.コンテンツ情報
		X31SDataBeanAccess keiInfoBean = getDataBean(webNewInfoBean, CommonInfoCFConst.KEIYAKUSHA_INFO);

		if(childList != null && childList.size() > 0)
		{
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				if(childMap == null || childMap.size() == 0)
				{
					continue;
				}

				// 契約者タイプコード(契約種別)
				if(!JFUWebCommon.isNull((String)childMap.get(KEISHA_TYPE_CD)))
				{
					webNewInfoBean.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(KEISHA_TYPE_CD));
				}
				// eoID
				if(!JFUWebCommon.isNull((String)childMap.get(EOID)))
				{
					webNewInfoBean.sendMessageString(CommonInfoCFConst.EOID_06, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(EOID));
				}
				// コンテンツお客様名
				if(!JFUWebCommon.isNull((String)childMap.get(CONT_CUST_NM)))
				{
					contInfoBean.sendMessageString(CommonInfoCFConst.CONT_CUST_NM_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CONT_CUST_NM));
				}
				// コンテンツお客様カナ名
				if(!JFUWebCommon.isNull((String)childMap.get(CONT_CUST_KANA)))
				{
					contInfoBean.sendMessageString(CommonInfoCFConst.CONT_CUST_KANA_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CONT_CUST_KANA));
				}
				// コンテンツお客様性別コード
				if(!JFUWebCommon.isNull((String)childMap.get(CONT_CUST_SEX_CD)))
				{
					contInfoBean.sendMessageString(CommonInfoCFConst.CONT_CUST_SEX_CD_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CONT_CUST_SEX_CD));
				}
				// コンテンツお客様生年月日
				if(!JFUWebCommon.isNull((String)childMap.get(CONT_CUST_BIRTHD)))
				{
					contInfoBean.sendMessageString(CommonInfoCFConst.CONT_CUST_BIRTHD_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CONT_CUST_BIRTHD));
				}
				// コンテンツ郵便番号
				if(!JFUWebCommon.isNull((String)childMap.get(CONT_PCD)))
				{
					contInfoBean.sendMessageString(CommonInfoCFConst.CONT_PCD_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CONT_PCD));
				}
				// 会員種別コード
				if(!JFUWebCommon.isNull((String)childMap.get(MEMBER_SBT_CD)))
				{
					keiInfoBean.sendMessageString(CommonInfoCFConst.KIIN_SBT_09, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(MEMBER_SBT_CD));
				}
			}
		}

		return bean;
	}

	/**
	 * 連絡先(コンテンツ用メールアドレス)一覧照会の下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @return データBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV027702SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		if(bean == null || (outputMap == null || outputMap.size() == 0))
		{
			return bean;
		}

		HashMap parentMap = null;
		ArrayList childList = null;

		if (outputMap.containsKey(FUSV027702SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV027702SC);
		}
		if (null != parentMap && parentMap.containsKey(ECK0201B002CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(ECK0201B002CBSMSG1LIST);
		}

		// ■WEB新規情報
		X31SDataBeanAccess webNewInfoBean = getDataBean(bean, CommonInfoCFConst.WEB_NEW_INFO);
		// ■WEB新規情報.コンテンツ情報
		X31SDataBeanAccess contInfoBean = getDataBean(webNewInfoBean, CommonInfoCFConst.CONT_INFO);

		if(childList != null && childList.size() > 0)
		{
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				if(childMap == null || childMap.size() == 0)
				{
					continue;
				}

				// コンテンツメールアドレス
				if(!JFUWebCommon.isNull((String)childMap.get(MLAD)))
				{
					contInfoBean.sendMessageString(CommonInfoCFConst.CONT_MLAD_50, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(MLAD));
				}
			}
		}

		return bean;
	}

	/**
	 * 設定されたBeanから指定されたBeanを取得します。
	 * 
	 * <br>
	 * @param inBean 取得元のDataBean
	 * @param beanNm 取得するDataBean名
	 * @return DataBean
	 */
	private static X31SDataBeanAccess getDataBean(X31SDataBeanAccess inBean, String beanNm)
	{
		// 設定されたBeanから指定されたBeanを取得
		X31SDataBeanAccessArray bean = inBean.getDataBeanArray(beanNm);

		// 存在チェック
		if (bean == null || bean.getCount() == 0)
		{
			bean.addDataBean();
		}

		return bean.getDataBean(0);
	}
}