/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0174_FUSV0174OPDBMapper
*	ソースファイル名：FUSV0174_FUSV0174OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年10月27日
*＜機能概要＞
*	BP（住所検索）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/27	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.common.constant.JFUStrConst;
import eo.web.webview.FUW09902SF.FUW09902SFConst;
import eo.web.webview.FUW09906SF.FUW09906SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0174_FUSV0174OPDBMapper {
	/** 府県リストマップ */
	private static final String MSKMUCWKMAP = "MskmUcwkMap";
	
	/** Mapキー：コード名称管理コード区分一覧照会明細 */
	private static final String MAP_KEY_CBSMSGLIST = "EZM0171B012CBSMsg1List";

	/** Mapキー：コード区分 */
	private static final String MAP_KEY_CD_DIV = "cd_div";

	/** Mapキー：コード区分名 */
	private static final String MAP_KEY_CD_DIV_NM = "cd_div_nm";

	/** Mapキー：初期表示コード */
	private static final String MAP_KEY_SHK_DSP_CD = "shk_dsp_cd";

	/** 選択値 */
	private static final String CHOICE = "選択値";

	/** 初期表示選択値 */
	private static final String SHK_DSP_CD_1 = "1";
	
	/**
	 * コンストラクタ
	 */
	public FUSV0174_FUSV0174OPDBMapper(){
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：住所検索
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV017401SC(X31SDataBeanAccess bean, HashMap dataMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 検索処理実行フラグ
		parentMap.put("state_search_flg", "1");

		dataMap.put("FUSV017401SC", parentMap);
						
		return dataMap;
	}

	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：住所検索
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV017402SC(X31SDataBeanAccess bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 検索郵便番号 → 住所検索情報一覧照会.ＫＥＹ＿郵便番号
		parentMap.put("key_pcd", bean.sendMessageString("検索郵便番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 検索都道府県 → 住所検索情報一覧照会.ＫＥＹ＿都道府県名
		parentMap.put("key_state_nm", bean.sendMessageString("検索都道府県", X31CWebConst.DATABEAN_GET_VALUE));
		// 市区町村・字・丁目 → 住所検索情報一覧照会.ＫＥＹ＿市区町村・字・丁目
		parentMap.put("key_city_aza_chome_nm", bean.sendMessageString("市区町村・字・丁目", X31CWebConst.DATABEAN_GET_VALUE));

		// 検索処理パターン
		parentMap.put("search_type", String.valueOf("1"));
		// 最大検索件数
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("FUW09902_MAX_SHOW_CNT"));
		// 表示件数
		parentMap.put("display_num", JCCWebCommon.getSearchConst("FUW09902_ROW_PER_PAGE"));
		
		// 検索処理実行フラグ
		parentMap.put("address_search_flg", "1");
		
		outputMap.put("FUSV017402SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：エリア検索
	 * @param outputMap
	 * @param func_code　機能コード
 	 * @param unyoDay　運用日付
	 */
	@SuppressWarnings("unchecked")
	public HashMap setMskmUcwkMap(X31SDataBeanAccess bean, HashMap outputMap, String func_code, String unyoDay)
	{

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// コード種別 → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", JFUStrConst.CD_SBT_CD00691);
		// 基準日 → コード名称管理一意照会マップ.ＫＥＹ＿基準日
		parentMap.put("key_stdardymd", unyoDay);

		outputMap.put("MskmUcwkMap", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：住所検索
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV017401SC(X31SDataBeanAccess bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("FUSV017401SC")){
			parentMap = (HashMap)outputMap.get("FUSV017401SC");
		}

		ArrayList childList = null;
		

		//X31SDataBeanAccessArray listFUSV017401SC_state_list_EZM0081B060CBSMsg1List = bean[0].getDataBeanArray("都道府県情報一覧");
		childList = null;
		if(parentMap.containsKey("EZM0081B060CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EZM0081B060CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				//if(listFUSV017401SC_state_list_EZM0081B060CBSMsg1List.getCount() -1 >= i){
				//	subbean = listFUSV017401SC_state_list_EZM0081B060CBSMsg1List.getDataBean(i);
				//}else{
				//	subbean = listFUSV017401SC_state_list_EZM0081B060CBSMsg1List.addDataBean();
				//}
				HashMap childMap = (HashMap)childList.get(i);
			
				// 都道府県情報一覧.府県名称リスト ← 都道府県情報一覧照会.都道府県名一覧.都道府県名
				bean.sendMessageString(FUW09902SFConst.FUKEN_NAME_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("state_nm"));
				// 都道府県情報一覧.府県コードリスト ← 都道府県情報一覧照会.都道府県名一覧.都道府県コード
				bean.sendMessageString(FUW09902SFConst.FUKEN_CODE_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("state_cd"));
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：住所検索
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV017402SC(X31SDataBeanAccess bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("FUSV017402SC")){
			parentMap = (HashMap)outputMap.get("FUSV017402SC");
		}

		ArrayList childList = null;
		

		//X31SDataBeanAccessArray listFUSV017402SC_ad_list_EZM0081B080CBSMsg1List = bean[0].getDataBeanArray("住所情報一覧");
		childList = null;
		if(parentMap.containsKey("EZM0081B080CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EZM0081B080CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				//if(listFUSV017402SC_ad_list_EZM0081B080CBSMsg1List.getCount() -1 >= i){
				//	subbean = listFUSV017402SC_ad_list_EZM0081B080CBSMsg1List.getDataBean(i);
				//}else{
				//	subbean = listFUSV017402SC_ad_list_EZM0081B080CBSMsg1List.addDataBean();
				//}
				HashMap childMap = (HashMap)childList.get(i);
			
				// 住所情報一覧.住所コード ← 住所検索情報一覧照会.住所情報一覧.住所コード
				bean.sendMessageString("住所コード",X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("ad_cd"));
				// 住所情報一覧.郵便番号 ← 住所検索情報一覧照会.住所情報一覧.郵便番号
				bean.sendMessageString("郵便番号",X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcd"));
				// 住所情報一覧.都道府県名 ← 住所検索情報一覧照会.住所情報一覧.都道府県名
				bean.sendMessageString("都道府県名",X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("state_nm"));
				// 住所情報一覧.市区町村名 ← 住所検索情報一覧照会.住所情報一覧.市区町村名
				bean.sendMessageString("市区町村名",X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("city_nm"));
				// 住所情報一覧.大字通称名 ← 住所検索情報一覧照会.住所情報一覧.大字通称名
				bean.sendMessageString("大字通称名",X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("oaztsu_nm"));
				// 住所情報一覧.字丁目名 ← 住所検索情報一覧照会.住所情報一覧.字丁目名
				bean.sendMessageString("字丁目名",X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("azcho_nm"));
				int no = i + 1;
				// 
				bean.sendMessageString(FUW09902SFConst.L_NO_02, X31CWebConst.DATABEAN_ADD_VALUE, Integer.toString(no));
				// 背景色
				bean.sendMessageString(FUW09902SFConst.L_COLOR_02, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("ad_cd"));
				
				// 選択
				//bean.sendMessageString(FUW09902SFConst.L_CHOICE_02, X31CWebConst.DATABEAN_ADD_VALUE, Integer.toString(no));
			}
		}
		
		// 行番号
		bean.sendMessageString(FUW09902SFConst.ROW_NUM, X31CWebConst.DATABEAN_SET_VALUE, "0");

		return bean;
	}

	/**
	 * 下りマッピング(独自実装)
	 * @param bean bean[0]：エリア検索
	 * @param outputMap outputMap
	 * @return サービスBean配列
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getMskmUcwkMap(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(MSKMUCWKMAP))
		{
			parentMap = (HashMap)outputMap.get(MSKMUCWKMAP);
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap.containsKey(MAP_KEY_CBSMSGLIST))
		{
			childList = (ArrayList)parentMap.get(MAP_KEY_CBSMSGLIST);
			
			// 都道府県情報一覧.府県名称リスト ← 都道府県情報一覧照会.都道府県名一覧.都道府県名
			bean.sendMessageString(FUW09902SFConst.FUKEN_NAME_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "");
			// 都道府県情報一覧.府県コードリスト ← 都道府県情報一覧照会.都道府県名一覧.都道府県コード
			bean.sendMessageString(FUW09902SFConst.FUKEN_CODE_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "");
			
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
			
				// 都道府県情報一覧.府県名称リスト ← 都道府県情報一覧照会.都道府県名一覧.都道府県名
				bean.sendMessageString("府県名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get(MAP_KEY_CD_DIV_NM));
				// 都道府県情報一覧.府県コードリスト ← 都道府県情報一覧照会.都道府県名一覧.都道府県コード
				bean.sendMessageString(FUW09902SFConst.FUKEN_CODE_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get(MAP_KEY_CD_DIV));
			}
			
		}
		
		return bean;
	}
}