/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0202_FUSV0202OPDBMapper
*	ソースファイル名：FUSV0202_FUSV0202OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年01月25日
*＜機能概要＞
*	BP（エリアリクエスト入力（初期表示））へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/01/25	FJ			新規作成
*	v35.00		2017/10/13	FJ)岡井		【ANK-3225-00-00】未成年mineoマスタユーザのeo申込について
*
**********************************************************************/
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.common.constant.JFUStrConst;
import eo.web.webview.FUW00921SF.FUW00921SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0202_FUSV0202OPDBMapper {
	
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";
	
	/** プロパティファイル取得文字列（グループID指定）利用場所形態 */
	private static final String settingPattern = "DISPSETTING/SETTING[@screenId='FUW00302']/DISPTEXT[@groupid='settingPattern']";
	
	/** プロパティファイル取得文字列（グループID指定）利用場所形態の並べ替え用*/
	private static final String settingLine = "DISPSETTING/SETTING[@screenId='FUW00302']/DISPTEXT[@groupid='settingLine']";
	
	/** コード名称管理コード区分一覧照会明細 */
	private static final String EZM0171B012CBSMSG1LIST = "EZM0171B012CBSMsg1List";
	/** コード区分 */
	private static final String CD_DIV = "cd_div";
	/** コード区分名 */
	private static final String CD_DIV_NM = "cd_div_nm";

	/**
	 * コンストラクタ
	 */
	public FUSV0202_FUSV0202OPDBMapper(){
	}
	
	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：ご契約者情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV020201SC(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>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		outputMap.put("FUSV020201SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：ご契約者情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV020202SC(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>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		outputMap.put("FUSV020202SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ご契約者情報入力
	 * @param outputMap
	 * @param confDoc ご本人様確認書類
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV020201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String confDoc){

		HashMap parentMap = null;
		if(outputMap.containsKey("FUSV020201SC")){
			parentMap = (HashMap)outputMap.get("FUSV020201SC");
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listFUSV020201SC_setteingFloor_EZM0171B012CBSMsg1List = bean[0].getDataBeanArray("ご本人様確認書類");
		childList = null;
		if(listFUSV020201SC_setteingFloor_EZM0171B012CBSMsg1List != null && parentMap != null && parentMap.containsKey("EZM0171B012CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EZM0171B012CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listFUSV020201SC_setteingFloor_EZM0171B012CBSMsg1List.getCount() -1 >= i){
					subbean = listFUSV020201SC_setteingFloor_EZM0171B012CBSMsg1List.getDataBean(i);
				}else{
					subbean = listFUSV020201SC_setteingFloor_EZM0171B012CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// ご本人様確認書類.ご本人様確認書類コードリスト ← コード名称管理コード区分一覧照会マップ.コード名称管理コード区分一覧照会明細.コード区分
				if (childMap != null) {
					subbean.sendMessageString(FUW00921SFConst.CONFIRM_DOCUMENT_CD_LIST_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div"));
				} else {
					subbean.sendMessageString(FUW00921SFConst.CONFIRM_DOCUMENT_CD_LIST_01, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ご本人様確認書類.ご本人様確認書類名称リスト ← コード名称管理コード区分一覧照会マップ.コード名称管理コード区分一覧照会明細.コード区分名
				if (childMap != null) {
					subbean.sendMessageString(FUW00921SFConst.CONFIRM_DOCUMENT_NM_LIST_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
				} else {
					subbean.sendMessageString(FUW00921SFConst.CONFIRM_DOCUMENT_NM_LIST_01, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// ボタン復元処理
				if(confDoc.equals((String)childMap.get("cd_div")))
				{
					bean[0].sendMessageString(FUW00921SFConst.CONFIRM_DOCUMENT_SELECT, X31CWebConst.DATABEAN_SET_VALUE, confDoc);
				}
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean データBean配列
	 * @param outputMap サービス結果
	 * @return X31SDataBeanAccess データBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV020202SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV020202SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV020202SC");
		}

		long defaultVal = 0;
		String shinkenshaZokugaraCd = bean[0].sendMessageString(FUW00921SFConst.SHINKENSHA_ZOKUGARA_CD, X31CWebConst.DATABEAN_GET_VALUE);

		X31SDataBeanAccessArray beanArray = bean[0].getDataBeanArray(FUW00921SFConst.SHINKENSHA_ZOKUGARA_LIST);
		beanArray.clearArray();
		beanArray.addDataBean();
		X31SDataBeanAccess targetList = beanArray.getDataBean(0);

		// 値
		targetList.sendMessageString(FUW00921SFConst.TRUE_VALUE_05, X31CWebConst.DATABEAN_ADD_VALUE, JFUStrConst.EMPTY);
		// ラベル
		targetList.sendMessageString(FUW00921SFConst.LABEL_VALUE_05, X31CWebConst.DATABEAN_ADD_VALUE, JFUStrConst.EMPTY);

		if (parentMap.containsKey(EZM0171B012CBSMSG1LIST))
		{
			ArrayList childList = (ArrayList)parentMap.get(EZM0171B012CBSMSG1LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				String cdDiv = (String)childMap.get(CD_DIV);
				String cdDivNm = (String)childMap.get(CD_DIV_NM);

				if (JFUWebCommon.isNull(cdDiv) || JFUWebCommon.isNull(cdDivNm))
				{
					// 値、または、名称が取得できない場合は飛ばす
					continue;
				}

				if (!JFUWebCommon.isNull(shinkenshaZokugaraCd) && cdDiv.equals(shinkenshaZokugaraCd))
				{
					// 続柄コードが既に選択済の場合
					defaultVal = i + 1;
				}

				// 値
				targetList.sendMessageString(FUW00921SFConst.TRUE_VALUE_05, X31CWebConst.DATABEAN_ADD_VALUE, cdDiv);
				// ラベル
				targetList.sendMessageString(FUW00921SFConst.LABEL_VALUE_05, X31CWebConst.DATABEAN_ADD_VALUE, cdDivNm);
			}
		}

		// 初期選択値を設定
		targetList.sendMessageLong(FUW00921SFConst.SEL_INDEX_05, X31CWebConst.DATABEAN_SET_VALUE, 0, defaultVal);

		return bean;
	}
}