/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0214_FUSV0214OPDBMapper
*	ソースファイル名：FUSV0214_FUSV0214OPDBMapper.java
*	作成者			：富士通
*	日付			：2012年04月05日
*＜機能概要＞
*	BP（登録証初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00		2012/04/05	FJ)文元 	【案件番号：ANK-0024-01-00】新規作成
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW10601SF.FUW10601SFConst;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0214_FUSV0214OPDBMapper
{
	/** 業務パラメータ管理一意照会 DNS設定（POPサーバー名） */
	private static final String FUSV021401SC = "FUSV021401SC";
	/** 業務パラメータ管理一意照会 DNS設定（DNS設定（SMTP認証サーバ用)) */
	private static final String FUSV021402SC = "FUSV021402SC";
	/** 業務パラメータ管理一意照会 DNS設定（サーバー名(FTPサーバー名)) */
	private static final String FUSV021403SC = "FUSV021403SC";
	/** 業務パラメータ管理一意照会 DNS設定（URL(PMP)) */
	private static final String FUSV021404SC = "FUSV021404SC";
	/** 業務パラメータ管理一意照会 DNS設定（ポート番号(SMTPサーバー)) */
	private static final String FUSV021405SC = "FUSV021405SC";
	/** 通知書一覧照会（サービス契約情報付与）SC */
	private static final String FUSV021406SC = "FUSV021406SC";
	/** 通知書一覧照会（コード名称管理一覧照会）SC */
	private static final String FUSV021407SC = "FUSV021407SC";
	/** CC */
	private static final String FUSV021401CC = "FUSV021401CC";

	/** 業務パラメータ管理一意照会明細 */
	private static final String EZM0321A010CBSMSG1LIST = "EZM0321A010CBSMsg1List";
	/** ＩＤ通知書一覧照会明細 */
	private static final String EKK0561B004CBSMSG1LIST = "EKK0561B004CBSMsg1List";
	/** コード名称管理一覧照会明細 */
	private static final String EZM0171B010CBSMSG1LIST = "EZM0171B010CBSMsg1List";
	/** サービス契約一覧照会（SYSID）明細 */
	private static final String EKK0081B002CBSMSG1LIST = "EKK0081B002CBSMsg1List";

	/** 業務パラメータ設定値 */
	private static final String WORK_PARAM_SETTE_VALUE = "work_param_sette_value";

	/** キーＳＹＳＩＤ */
	private static final String SYS_ID = "key_sysid";
	/** キー検索処理パターン */
	private static final String SEARCH_TYPE = "search_type";
	/** キー最大検索件数 */
	private static final String MAX_SEARCH_NUM = "max_search_num";
	/** キー表示件数 */
	private static final String DISPLAY_NUM = "display_num";
	/** キー表示ページ番号 */
	private static final String DISPLAY_PAGE_NUM = "display_page_num";
	/** キーコード種別コード */
	private static final String KEY_CD_SBT_CD = "key_cd_sbt_cd";
	/** コード種別コード 「CD01337」(電話番号通知コード) */
	private static final String CD_SBT_CD01337 = "CD01337";
	/** 表示ページ番号 設定値 */
	private static final String TOROKUSHO_PAGE_NUM = "1";

	/**
	 * 上りマッピングをします。(業務パラメータ管理一意照会)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021401SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		outputMap.put(FUSV021401SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(業務パラメータ管理一意照会)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021402SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		outputMap.put(FUSV021402SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(業務パラメータ管理一意照会)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021403SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		outputMap.put(FUSV021403SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(業務パラメータ管理一意照会)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021404SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		outputMap.put(FUSV021404SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(業務パラメータ管理一意照会)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021405SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		outputMap.put(FUSV021405SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(通知書一覧照会（サービス契約情報付与）SC)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021406SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		// ＳＹＳＩＤ
		parentMap.put(SYS_ID, bean[1].sendMessageString(CommonInfoCFConst.SYSID_22, X31CWebConst.DATABEAN_GET_VALUE));

		// 検索処理パターン"1"
		parentMap.put(SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_IKT);

		// 最大検索件数
		parentMap.put(MAX_SEARCH_NUM, JFUStrConst.TOROKUSHO_MAX_NUM);

		// 表示件数
		parentMap.put(DISPLAY_NUM, JFUStrConst.TOROKUSHO_DISP_MAX_NUM);

		// 表示ページ番号
		parentMap.put(DISPLAY_PAGE_NUM, TOROKUSHO_PAGE_NUM);

		outputMap.put(FUSV021406SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(コード名称管理一覧照会SC)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021407SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);

		// キーコード種別コード
		parentMap.put(KEY_CD_SBT_CD, CD_SBT_CD01337);

		outputMap.put(FUSV021407SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(通知書一覧照会（サービス契約情報付与）SC)
	 *
	 * <br>
	 * @param bean　[0]：登録証照会　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV021401CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ＳＹＳＩＤ
		parentMap.put(SYS_ID, bean[1].sendMessageString(CommonInfoCFConst.SYSID_22, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV021401CC, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピングをします。(業務パラメータ管理一意照会マップ)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV021401SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		return getEZM0321A010WorkParamSette(bean, outputMap, FUSV021401SC, FUW10601SFConst.POP_SERVER);
	}

	/**
	 * 下りマッピングをします。(業務パラメータ管理一意照会マップ)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV021402SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		return getEZM0321A010WorkParamSette(bean, outputMap, FUSV021402SC, FUW10601SFConst.DNS_NINSHO_SMTP);
	}

	/**
	 * 下りマッピングをします。(業務パラメータ管理一意照会マップ)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV021403SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		return getEZM0321A010WorkParamSette(bean, outputMap, FUSV021403SC, FUW10601SFConst.NM_FTP);
	}

	/**
	 * 下りマッピングをします。(業務パラメータ管理一意照会マップ)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV021404SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		return getEZM0321A010WorkParamSette(bean, outputMap, FUSV021404SC, FUW10601SFConst.URL_PMP);
	}

	/**
	 * 下りマッピングをします。(業務パラメータ管理一意照会マップ)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess getFUSV021405SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		return getEZM0321A010WorkParamSette(bean, outputMap, FUSV021405SC, FUW10601SFConst.SERVER_PORT_SMTP);
	}

	/**
	 * 下りマッピングをします。(通知書一覧照会（サービス契約情報付与）SC)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV021406SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV021406SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV021406SC);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV021406SC_tchisho_list_EKK0561B004CBSMsg1List = bean.getDataBeanArray(FUW10601SFConst.TCHISHO_LIST);

		childList = null;

		if (listFUSV021406SC_tchisho_list_EKK0561B004CBSMsg1List != null && parentMap != null && parentMap.containsKey(EKK0561B004CBSMSG1LIST))
		{

			childList = (ArrayList)parentMap.get(EKK0561B004CBSMSG1LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV021406SC_tchisho_list_EKK0561B004CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV021406SC_tchisho_list_EKK0561B004CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV021406SC_tchisho_list_EKK0561B004CBSMsg1List.addDataBean();
				}

				HashMap childMap = (HashMap)childList.get(i);

				if (subbean == null)
				{
					continue;
				}

				if (childMap == null)
				{
					continue;
				}

				// 通知書一覧.通知書ステータス ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書ステータス
				subbean.sendMessageString(FUW10601SFConst.TCHISHO_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_stat"));
				// 通知書一覧.通知書番号 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書番号
				subbean.sendMessageString(FUW10601SFConst.TCHISHO_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_no"));
				// 通知書一覧.通知書コード ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書コード
				subbean.sendMessageString(FUW10601SFConst.TCHISHO_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_cd"));
				// 通知書一覧.通知書コード名称 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書コード名称
				subbean.sendMessageString(FUW10601SFConst.TCHISHO_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_cd_nm"));
				// 通知書一覧.通知書コード略称 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書コード略称
				subbean.sendMessageString(FUW10601SFConst.TCHISHO_CD_ALI_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_cd_ali"));
				// 通知書一覧.通知書コード表示順序 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書コード表示順序
				subbean.sendMessageString(FUW10601SFConst.TCHISHO_CD_DSP_JUN_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
						.get("tchisho_cd_dsp_jun"));
				// 通知書一覧.サービス契約番号(最小) ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.サービス契約番号(最小)
				subbean.sendMessageString(FUW10601SFConst.SVC_KEI_NO_MIN_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_no_min"));
				// 通知書一覧.サービス開始年月日(最小) ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.サービス開始年月日(最小)
				subbean.sendMessageString(FUW10601SFConst.SVC_STA_YMD_MIN_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
						.get("svc_sta_ymd_min"));
				// 通知書一覧.整理番号 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.整理番号
				subbean.sendMessageString(FUW10601SFConst.SEIRI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiri_no"));
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV021407SC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV021407SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV021407SC);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listKKSV002703SC_umu_list_EZM0171B010CBSMsg1List = bean.getDataBeanArray(FUW10601SFConst.UMU_LIST);

		childList = null;

		if (listKKSV002703SC_umu_list_EZM0171B010CBSMsg1List != null && parentMap != null && parentMap.containsKey(EZM0171B010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0171B010CBSMSG1LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;

				if (listKKSV002703SC_umu_list_EZM0171B010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listKKSV002703SC_umu_list_EZM0171B010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listKKSV002703SC_umu_list_EZM0171B010CBSMsg1List.addDataBean();
				}

				HashMap childMap = (HashMap)childList.get(i);

				if (subbean == null)
				{
					continue;
				}

				if (childMap == null)
				{
					continue;
				}

				// 有無一覧.コード区分 ← 有無情報マップ.コード区分リスト.コード区分
				subbean.sendMessageString(FUW10601SFConst.CD_DIV_08, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div"));

				// 有無一覧.コード区分名 ← 有無情報マップ.コード区分リスト.コード区分名
				subbean.sendMessageString(FUW10601SFConst.CD_DIV_NM_08, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング用部品
	 * EZM0321A010のwork_param_sette_value項目をbeanのbeanItem項目にString型で設定します。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param sc
	 * @param beanItem
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	private X31SDataBeanAccess getEZM0321A010WorkParamSette(X31SDataBeanAccess bean, HashMap<String, Object> outputMap, String sc, String beanItem)
	{
		HashMap<String, Object> parentMap = null;
		if (outputMap.containsKey(sc))
		{
			parentMap = (HashMap<String, Object>)outputMap.get(sc);
		}

		if (null != parentMap && parentMap.containsKey(EZM0321A010CBSMSG1LIST))
		{
			ArrayList<HashMap<String, Object>> childList = (ArrayList<HashMap<String, Object>>)parentMap.get(EZM0321A010CBSMSG1LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap<String, Object> childMap = childList.get(i);

				if (childMap.containsKey(WORK_PARAM_SETTE_VALUE))
				{
					// 引数beanItemの項目 ←
					// 業務パラメータ管理一意照会.業務パラメータ管理一意照会明細.業務パラメータ名
					bean.sendMessageString(beanItem, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(WORK_PARAM_SETTE_VALUE));
				}
			}
		}
		return bean;
	}

	/**
	 * 下りマッピングをします。(登録証照会を行うCC)
	 *
	 * <br>
	 * @param bean 登録証照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV021401CC(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV021401CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV021401CC);
		}

		X31SDataBeanAccessArray tchishoList = bean.getDataBeanArray(FUW10601SFConst.TCHISHO_LIST);
		// クリア
		tchishoList.clearArray();
		
		ArrayList childList = (ArrayList)parentMap.get("combList");

		for (int i = 0; i < childList.size(); i++)
		{
			HashMap childMap = (HashMap)childList.get(i);
			X31SDataBeanAccess subbean = tchishoList.addDataBean();

//			// 通知書一覧.通知書ステータス ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書ステータス
//			subbean.sendMessageString(FUW10601SFConst.TCHISHO_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_stat"));
//			// 通知書一覧.通知書番号 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書番号
//			subbean.sendMessageString(FUW10601SFConst.TCHISHO_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_no"));
			// 通知書一覧.通知書コード ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書コード
			subbean.sendMessageString(FUW10601SFConst.TCHISHO_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_cd"));
			// 通知書一覧.通知書コード略称 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.通知書コード略称
			subbean.sendMessageString(FUW10601SFConst.TCHISHO_CD_ALI_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tchisho_cd_ali"));
			// 通知書一覧.整理番号 ← ID通知証フロント用一覧照会マップ.ID通知書一覧照会明細.整理番号
			subbean.sendMessageString(FUW10601SFConst.SEIRI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiri_no"));
			// 通知書一覧.キー情報 ←
			subbean.sendMessageString(FUW10601SFConst.KEY_LIST_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("key_list"));
		}

		return bean;
	}

}
