/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0299_FUSV0299OPDBMapper
*	ソースファイル名：FUSV0299_FUSV0299OPDBMapper.java
*	作成者			：富士通
*	日付			：2016年09月21日
*＜機能概要＞
*	BP（メール到達確認結果）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v27.00		2016/09/21	FJ)岡井		【ANK-2987-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 com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00163SF.FUW00163SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0299_FUSV0299OPDBMapper
{

	// ■SC＆CC
	/** FUSV029901CC */
	private static final String FUSV029901CC = "FUSV029901CC";

	// ■項目キー
	/** Webアクセス認証キー */
	private static final String IN_WEB_ACCSS_NSKEY = "in_web_accss_nskey";
	/** 処理結果区分 */
	private static final String SHORI_RSLT_KBN = "shori_rslt_kbn";

	// ■その他
	/** 文言表示区分 3：既にオプトイン情報が存在する */
	private static final String MNGN_DSP_KBN_3 = "3";

	/**
	 * コンストラクタ
	 */
	public FUSV0299_FUSV0299OPDBMapper()
	{
	}

	/**
	 * オプトインメール情報チェック登録CCの上りマッピングをします。
	 *
	 * <br>
	 * @param bean [0]：共有フォームビーン [1]：サービスフォームBean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap 結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV029901CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ＷＥＢ新規情報
		X31SDataBeanAccess webNewBean = getBean(bean[0], CommonInfoCFConst.WEB_NEW_INFO);
		// リダイレクト情報
		X31SDataBeanAccess redirectBean = getBean(webNewBean, CommonInfoCFConst.REDIRECT_INFO);

		// Webアクセス認証キー
		parentMap.put(IN_WEB_ACCSS_NSKEY, redirectBean.sendMessageString(CommonInfoCFConst.WEB_ACCSS_NSKEY_17, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV029901CC, parentMap);

		return outputMap;
	}

	/**
	 * オプトインメール情報チェック登録CCの下りマッピングをします。
	 * 
	 * @param bean bean [0]：共有フォームビーン [1]：サービスフォームBean
	 * @param outputMap 結果
	 * @return X31SDataBeanAccess
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV029901CC(X31SDataBeanAccess[] bean, HashMap outputMap) throws Exception
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV029901CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV029901CC);
		}

		if (parentMap == null || parentMap.size() == 0)
		{
			// 情報が取得できていない場合
			bean[1].sendMessageString(FUW00163SFConst.MNGN_DSP_KBN, X31CWebConst.DATABEAN_SET_VALUE, MNGN_DSP_KBN_3);
			return bean;
		}

		// 処理結果区分
		if (parentMap.containsKey(SHORI_RSLT_KBN) && !JFUWebCommon.isNull(parentMap.get(SHORI_RSLT_KBN)))
		{
			// 処理結果区分が設定されている場合
			bean[1].sendMessageString(FUW00163SFConst.MNGN_DSP_KBN, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(SHORI_RSLT_KBN));
		}
		else
		{
			// 処理結果区分が設定されていない場合
			bean[1].sendMessageString(FUW00163SFConst.MNGN_DSP_KBN, X31CWebConst.DATABEAN_SET_VALUE, MNGN_DSP_KBN_3);
		}

		return bean;
	}

	/**
	 * 指定されたBeanを取得します。
	 * 
	 * <br>
	 * @param oyaBean 親Bean
	 * @param beanNm Bean名
	 * @return bean
	 */
	private X31SDataBeanAccess getBean(X31SDataBeanAccess oyaBean, String beanNm)
	{
		X31SDataBeanAccessArray beanArray = oyaBean.getDataBeanArray(beanNm);
		if (beanArray.getCount() <= 0)
		{
			beanArray.addDataBean();
		}
		X31SDataBeanAccess bean = beanArray.getDataBean(0);

		return bean;
	}
}