/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0005_FUSV0005OPDBMapper
*	ソースファイル名：FUSV0005_FUSV0005OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年10月27日
*＜機能概要＞
*	BP（住所情報照会（追加））へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/27	FJ		新規作成
*	v4.00.00	2012/06/13	FJ)池田		PJReliefエラー対応
*	v4.01.00	2012/10/26	FJ)矢野		住所編集部品内容修正による対応
*	v39.00		2018/11/29	FJ)岡井		【ANK-3477-00-00】eoマイページからのお客さま情報変更自動反映
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

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.util.JZMAdOutputEdit;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00102SF.FUW00102SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 * @author 富士通
 */
public class FUSV0005_FUSV0005OPDBMapper
{

	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** プロパティファイル取得文字列（グループID指定）利用場所形態 */
	private static final String SETTING_PATTERN = "DISPSETTING/SETTING[@screenId='FUW00102']/DISPTEXT[@groupid='settingPattern']";

	/** プロパティファイル取得文字列（グループID指定）利用場所形態の並べ替え用*/
	private static final String SETTING_LINE = "DISPSETTING/SETTING[@screenId='FUW00102']/DISPTEXT[@groupid='settingLine']";

	/**
	 * コンストラクタ
	 */
	public FUSV0005_FUSV0005OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate 運用日付
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000501SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		//インスタンス生成スタート

		X31SDataBeanAccess commonInfoBean = bean[0];

		X31SDataBeanAccess web_new_info = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0); //ＷＥＢ新規情報

		//インスタンス生成エンド

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 共有フォームBean.ＷＥＢ新規情報.ｓｙｓＩＤ → お客様一意照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", web_new_info.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		// システム日付（８桁） → お客様一意照会マップ.ＫＥＹ＿予約適用年月日
		String sysdate = opeDate;
		parentMap.put("key_rsv_aply_ymd", sysdate);

		// GENE_ADD_DTM_22
		outputMap.put("FUSV000501SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000502SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}
		X31SDataBeanAccess commonInfoBean = bean[0];

		//インスタンス生成スタート
		//ＷＥＢ新規情報
		X31SDataBeanAccessArray web_new_info = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		web_new_info.addDataBean();
		X31SDataBeanAccess web_new_infobean = web_new_info.getDataBean(0);

		//契約サービス情報
		X31SDataBeanAccessArray constant_service_info = web_new_infobean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		constant_service_info.addDataBean();
		X31SDataBeanAccess constant_service_infobean = constant_service_info.getDataBean(0);
		//インスタンス生成エンド

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 共有フォームBean.契約サービス情報.サービス契約回線内訳番号 → お客様一意照会マップ.ＫＥＹ＿サービス契約回線内訳番号
		parentMap.put("key_svc_kei_kaisen_ucwk_no", constant_service_infobean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_10,
				X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV000502SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000503SC(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);

		// コード種別 → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", "CD00627");
		// 基準日 → コード名称管理一意照会マップ.ＫＥＹ＿基準日
		parentMap.put("key_stdardymd", bean[1].sendMessageString(FUW00102SFConst.STDARDYMD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV000503SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000504SC(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);

		// コード種別 → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", "CD00733");
		// 基準日 → コード名称管理一意照会マップ.ＫＥＹ＿基準日
		parentMap.put("key_stdardymd", bean[1].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV000504SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(独自実装)
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000505SC(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);

		// コード種別 → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", "CD00734");
		// 基準日 → コード名称管理一意照会マップ.ＫＥＹ＿基準日
		parentMap.put("key_stdardymd", bean[1].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV000505SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(契約状態チェック＆住所変更CC)
	 * 
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000506CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		// 共有フォームBean
		X31SDataBeanAccess commonInfoBean = bean[0];
		// ＷＥＢ新規情報
		X31SDataBeanAccess web_new_info = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// 申込区分
		String mskm_kbn = web_new_info.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);

		// 実行判定
		if(!JFUStrConst.MSKM_KBN_ADD.equals(mskm_kbn))
		{
			// 販売タイプが「1：一般コンシューマ」以外、または、申込区分が「2：追加」以外は処理しない
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// SYSID
		parentMap.put("in_sysid", web_new_info.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV000506CC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング(独自実装)
	 * @param bean　[0]：共有フォームビーン　[1]：住所情報入力
	 * @param outputMap
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV000501SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV000501SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV000501SC");
		}

		if (parentMap != null && parentMap.containsKey("ECK0011A010CBSMsg1List"))
		{

			ArrayList childList = (ArrayList)parentMap.get("ECK0011A010CBSMsg1List");

			HashMap childMap = (HashMap)childList.get(0);

			// ご契約者住所・郵便番号（上） ← お客様一意照会マップ.お客様一意照会明細.契約者郵便番号
			if (childMap != null)
			{

				if (((String)childMap.get("keisha_pcd")).length() == 7)
				{
					bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDFRONT, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap
							.get("keisha_pcd")).substring(0, 3));
				}
				else
				{
					bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDFRONT, X31CWebConst.DATABEAN_SET_VALUE, "");
				}

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDFRONT, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}
			// ご契約者住所・郵便番号（下） ← お客様一意照会マップ.お客様一意照会明細.契約者郵便番号
			if (childMap != null)
			{

				if (((String)childMap.get("keisha_pcd")).length() == 7)
				{
					bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDBACK, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap
							.get("keisha_pcd")).substring(3));
				}
				else
				{
					bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDBACK, X31CWebConst.DATABEAN_SET_VALUE, "");
				}

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDBACK, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// 2012/5/7 住所編集出力部品を使用するように修正。
			String[] adOutputEditString = null;

			if (childMap != null)
			{
			//2012/10/26 住所編集部品の修正により処理変更 S.YANO MOD-S
			//	adOutputEditString =
			//			JZMAdOutputEdit.getPtn10((String)childMap.get("keisha_state_nm"), (String)childMap.get("keisha_city_nm"), (String)childMap
			//					.get("keisha_oaztsu_nm"), (String)childMap.get("keisha_azcho_nm"), (String)childMap.get("keisha_bnchigo"),
			//					(String)childMap.get("keisha_adrttm"), (String)childMap.get("keisha_adrrm"));
				adOutputEditString =
					JZMAdOutputEdit.getPtn22((String)childMap.get("keisha_state_nm"), (String)childMap.get("keisha_city_nm"), (String)childMap
							.get("keisha_oaztsu_nm"), (String)childMap.get("keisha_azcho_nm"), (String)childMap.get("keisha_bnchigo"),
							(String)childMap.get("keisha_adrttm"), (String)childMap.get("keisha_adrrm"));
				//2012/10/26 住所編集部品の修正により処理変更 S.YANO MOD-E
			}

			// ご契約者住所・都道府県・市区町村 ← お客様一意照会マップ.お客様一意照会明細.契約者都道府県名 + 契約者市区町村名
			if (childMap != null)
			{

				// bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTPREF, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_state_nm") + (String)childMap.get("keisha_city_nm") );

				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTPREF, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[0]);

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTPREF, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご契約者住所・字 ← お客様一意照会マップ.お客様一意照会明細.契約者大字通称名 + 字丁目名
			if (childMap != null)
			{

				//bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN1, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_oaztsu_nm") + (String)childMap.get("keisha_azcho_nm") );

				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN1, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[1]);

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN1, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご契約者住所・丁目・番地等 ← お客様一意照会マップ.お客様一意照会明細.契約者番地号
			if (childMap != null)
			{

				//bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN2, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_bnchigo"));

				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN2, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[2]);

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN2, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご契約者住所・建物名 ← お客様一意照会マップ.お客様一意照会明細.契約者住所補記・建物名
			if (childMap != null)
			{

				//bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTMANSION, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_adrttm"));

				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTMANSION, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[3]);

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTMANSION, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご契約者住所・部屋番号 ← お客様一意照会マップ.お客様一意照会明細.契約者住所補記・部屋番号
			if (childMap != null)
			{

				//bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTROOM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_adrrm"));

				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTROOM, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[4]);

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTROOM, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご契約者住所・お電話番号 ← お客様一意照会マップ.お客様一意照会明細.契約者電話番号
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELAREA, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_telno"));
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELAREA, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELLOCAL, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELSUBSCRIBER, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		return bean;
	}

	/**
	 * 下りマッピング(独自実装)
	 * @param bean　[0]：住所情報入力
	 * @param outputMap
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV000502SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV000502SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV000502SC");
		}

		ArrayList childList = null;

		if (parentMap != null && parentMap.containsKey("EKK0251A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0251A010CBSMsg1List");

			HashMap childMap = (HashMap)childList.get(0);

			// ご利用場所.お電話番号（市外局番） ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所電話番号
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACETELAREA, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
						.get("kaisen_place_telno"));
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACETELAREA, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所.郵便番号（上） ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所郵便番号
			if (childMap != null)
			{
				if (((String)childMap.get("kaisen_place_pcd")).length() == 7)
				{
					bean[0].sendMessageString(FUW00102SFConst.USEPLACEZIPCDFRONT, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap
							.get("kaisen_place_pcd")).substring(0, 3));
				}
				else
				{
					bean[0].sendMessageString(FUW00102SFConst.USEPLACEZIPCDFRONT, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEZIPCDFRONT, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所.郵便番号（下） ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所郵便番号
			if (childMap != null)
			{
				if (((String)childMap.get("kaisen_place_pcd")).length() == 7)
				{
					bean[0].sendMessageString(FUW00102SFConst.USEPLACEZIPCDBACK, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap
							.get("kaisen_place_pcd")).substring(3));
				}
				else
				{
					bean[0].sendMessageString(FUW00102SFConst.USEPLACEZIPCDBACK, X31CWebConst.DATABEAN_SET_VALUE, "");
				}

			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEZIPCDBACK, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// 2012/6/21 住所編集出力部品を使用するように修正。
			String[] adOutputEditString = null;
			
			if (childMap != null) {
				//2012/10/26 住所編集部品の修正により処理変更 S.YANO MOD-S
				//adOutputEditString = JZMAdOutputEdit.getPtn10(
				//		(String)childMap.get("kaisen_place_state_nm"), 
				//		(String)childMap.get("kaisen_place_city_nm"), 
				//		(String)childMap.get("kaisen_place_oaztsu_nm"), 
				//		(String)childMap.get("kaisen_place_azcho_nm"), 
				//		(String)childMap.get("kaisen_place_bnchigo"), 
				//		(String)childMap.get("kaisen_place_adrttm"), 
				//		(String)childMap.get("kaisen_place_adrrm"));
				adOutputEditString = JZMAdOutputEdit.getPtn22(
						(String)childMap.get("kaisen_place_state_nm"), 
						(String)childMap.get("kaisen_place_city_nm"), 
						(String)childMap.get("kaisen_place_oaztsu_nm"), 
						(String)childMap.get("kaisen_place_azcho_nm"), 
						(String)childMap.get("kaisen_place_bnchigo"), 
						(String)childMap.get("kaisen_place_adrttm"), 
						(String)childMap.get("kaisen_place_adrrm"));
				//2012/10/26 住所編集部品の修正により処理変更 S.YANO MOD-E
			}
			
			// ご利用場所.府県・市区町村 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所都道府県名 + 回線場所市区町村名
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEPREF, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[0]);
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEPREF, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所.字 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所大字通称名 + 回線場所字丁目名
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACETOWN, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[1]);
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACETOWN, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所.丁目・番地等 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所番地号
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACETOWN2, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[2]);
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACETOWN2, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所.建物名 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所住所補記・建物名
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEMANSION, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[3]);
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEMANSION, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所.部屋番号 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所住所補記・部屋番号
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEROOM, X31CWebConst.DATABEAN_SET_VALUE, adOutputEditString[4]);
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.USEPLACEROOM, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// 住所番地 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.回線場所住所確定フラグ
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGPLACEFIXED, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
						.get("kisn_plc_ad_fix_flg"));
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGPLACEFIXED, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// ご利用場所の形態 ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.住所形態コード
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGPATTERN, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ad_form_cd"));
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGPATTERN, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// 竣工予定年月（年） ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.竣工予定年月日
			if (childMap != null)
			{
				if (((String)childMap.get("shunko_rsv_ymd")).length() == 6)
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGCOMPLETIONPLANY, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap
							.get("shunko_rsv_ymd")).substring(0, 4));
				}
				else
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGCOMPLETIONPLANY, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGCOMPLETIONPLANY, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// 竣工予定年月（月） ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.竣工予定年月日
			if (childMap != null)
			{
				if (((String)childMap.get("shunko_rsv_ymd")).length() == 6)
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGCOMPLETIONPLANM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap
							.get("shunko_rsv_ymd")).substring(4));
				}
				else
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGCOMPLETIONPLANM, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGCOMPLETIONPLANM, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}

			// お住まいは何階ですか？ ← サービス契約回線内訳マップ.サービス契約回線内訳一意照会明細.戸建建築階数コード
			if (childMap != null)
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGFLOOR, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
						.get("kodate_kcku_flr_cnt_cd"));
			}
			else
			{
				bean[0].sendMessageString(FUW00102SFConst.SETTINGFLOOR, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング(独自実装)
	 * @param bean bean[0]：住所情報入力
	 * @param outputMap outputMap
	 * @param usePlace_type
	 * @return サービスBean配列
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV000503SC(X31SDataBeanAccess[] bean, HashMap outputMap, String usePlace_type) throws Exception
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV000503SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV000503SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV000503SC_setteingPattern_EZM0171B012CBSMsg1List = bean[0].getDataBeanArray("ご利用場所の形態");
		childList = null;
		if (listFUSV000503SC_setteingPattern_EZM0171B012CBSMsg1List != null && parentMap != null && parentMap.containsKey("EZM0171B012CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0171B012CBSMsg1List");

			// プロパティ情報の取得処理・設定処理

			// 利用場所形態情報取得
			Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(SETTING_PATTERN, QUERY_ATTR_NAME);

			ArrayList<String> setList = new ArrayList<String>();

			for (int k = 0; k < servicenameMap.size(); k++)
			{
				String key = "pattern_" + String.valueOf(k + 1);
				setList.add((String)servicenameMap.get(key));
			}

			// 利用場所形態の並べ替え用情報取得
			Map<String, String> rowMap = JFUWebCommon.getDispItemsAsMap(SETTING_LINE, QUERY_ATTR_NAME);

			HashMap<String, String> lineMap = new HashMap<String, String>();
			ArrayList<String> lineList = new ArrayList<String>();

			for (int k = 0; k < rowMap.size(); k++)
			{
				String key = "pattern_" + String.valueOf(k + 1);

				lineList.add((String)rowMap.get(key));
				// 値をセットする。(取得値 , k ←配列順になるため)
				lineMap.put((String)rowMap.get(key), String.valueOf(k));
			}

			ArrayList sortList = new ArrayList();

			// プロパティファイルの数だけ空配列を作成
			for (int n = 0; n < rowMap.size(); n++)
			{
				sortList.add("");
			}

			for (int j = 0; j < childList.size(); j++)
			{
				HashMap cchildMap = (HashMap)childList.get(j);

				// プロパティファイルの利用場所形態とコード値が一致した場合
				if (setList.contains(((String)cchildMap.get("cd_div"))))
				{
					for (int m = 0; m < lineList.size(); m++)
					{
						// プロパティファイルの利用場所形態の並べ替え用とコード値が一致した場合
						if (lineList.get(m).equals(((String)cchildMap.get("cd_div"))))
						{
							// プロパティファイルの指定した場所にデータをセットする
							sortList.set(Integer.parseInt(lineMap.get(((String)cchildMap.get("cd_div")))), (HashMap)childList.get(j));
						}
					}
				}
			}

			for (int i = 0; i < sortList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;

				if (listFUSV000503SC_setteingPattern_EZM0171B012CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV000503SC_setteingPattern_EZM0171B012CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV000503SC_setteingPattern_EZM0171B012CBSMsg1List.addDataBean();
				}

				HashMap childMap = (HashMap)sortList.get(i);

				if (subbean == null)
				{
					continue;
				}

				// ご利用場所の形態.利用場所形態コードリスト ← コード名称管理コード区分一覧照会マップ1.コード名称管理コード区分一覧照会明細.コード区分
				if (childMap != null)
				{
					subbean.sendMessageString("利用場所形態コードリスト", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div"));
				}
				else
				{
					subbean.sendMessageString("利用場所形態コードリスト", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ご利用場所の形態.利用場所形態名称リスト ← コード名称管理コード区分一覧照会マップ1.コード名称管理コード区分一覧照会明細.コード区分名
				if (childMap != null)
				{
					subbean.sendMessageString("利用場所形態名称リスト", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
				}
				else
				{
					subbean.sendMessageString("利用場所形態名称リスト", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

				// ボタン復元処理
				if (usePlace_type.equals((String)childMap.get("cd_div")))
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGPATTERN_SELECT, X31CWebConst.DATABEAN_SET_VALUE, usePlace_type);
				}
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：住所情報入力
	 * @param outputMap
	 * @param usePlace_floor
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV000504SC(X31SDataBeanAccess[] bean, HashMap outputMap, String usePlace_floor)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV000504SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV000504SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV000504SC_setteingFloor_EZM0171B012CBSMsg1List = bean[0].getDataBeanArray("お住まいは何階ですか？");
		childList = null;
		if (listFUSV000504SC_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 (listFUSV000504SC_setteingFloor_EZM0171B012CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV000504SC_setteingFloor_EZM0171B012CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV000504SC_setteingFloor_EZM0171B012CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// お住まいは何階ですか？.集合住宅居住階コードリスト ← コード名称管理コード区分一覧照会マップ2.コード名称管理コード区分一覧照会明細.コード区分
				if (childMap != null)
				{
					subbean.sendMessageString("集合住宅居住階コードリスト", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div"));
				}
				else
				{
					subbean.sendMessageString("集合住宅居住階コードリスト", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お住まいは何階ですか？.集合住宅居住階名称リスト ← コード名称管理コード区分一覧照会マップ2.コード名称管理コード区分一覧照会明細.コード区分名
				if (childMap != null)
				{
					subbean.sendMessageString("集合住宅居住階名称リスト", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
				}
				else
				{
					subbean.sendMessageString("集合住宅居住階名称リスト", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

				// ボタン復元処理
				if (usePlace_floor.equals((String)childMap.get("cd_div")))
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGFLOOR_SELECT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
				}
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：住所情報入力
	 * @param outputMap
	 * @param usePlace_bnchiKakutei
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV000505SC(X31SDataBeanAccess[] bean, HashMap outputMap, String usePlace_bnchiKakutei)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("FUSV000505SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV000505SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV000505SC_setteingPlaceFixed_EZM0171B012CBSMsg1List = bean[0].getDataBeanArray("住所番地");
		childList = null;
		if (listFUSV000505SC_setteingPlaceFixed_EZM0171B012CBSMsg1List != null && parentMap != null
				&& parentMap.containsKey("EZM0171B012CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0171B012CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV000505SC_setteingPlaceFixed_EZM0171B012CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV000505SC_setteingPlaceFixed_EZM0171B012CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV000505SC_setteingPlaceFixed_EZM0171B012CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 住所番地.住所番地決定有無コードリスト ← コード名称管理コード区分一覧照会マップ3.コード名称管理コード区分一覧照会明細.コード区分
				if (childMap != null)
				{
					subbean.sendMessageString("住所番地決定有無コードリスト", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div"));
				}
				else
				{
					subbean.sendMessageString("住所番地決定有無コードリスト", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 住所番地.住所番地決定有無名称リスト ← コード名称管理コード区分一覧照会マップ3.コード名称管理コード区分一覧照会明細.コード区分名
				if (childMap != null)
				{
					subbean.sendMessageString("住所番地決定有無名称リスト", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cd_div_nm"));
				}
				else
				{
					subbean.sendMessageString("住所番地決定有無名称リスト", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ボタン復元処理
				if (usePlace_bnchiKakutei.equals((String)childMap.get("cd_div")))
				{
					bean[0].sendMessageString(FUW00102SFConst.SETTINGPLACEFIXED_SELECT, X31CWebConst.DATABEAN_SET_VALUE, usePlace_bnchiKakutei);
				}
			}
		}
		return bean;
	}

}