/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0287_FUSV0287OPDBMapper
*	ソースファイル名：FUSV0287_FUSV0287OPDBMapper.java
*	作成者			：富士通
*	日付			：2014年09月03日
*＜機能概要＞
*	BP（住所検索(住所表示)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン  修正日      修正者      修正内容
*	v10.00      2014/09/03  FJ)岡井     【ANK-2251-00-00】フロントS店頭販売支援サイトのマンション検索改善
*
**********************************************************************/
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 eo.common.constant.JFUStrConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * <p>
 * <BR>
 * @author 富士通
 */

@SuppressWarnings("unchecked")
public class FUSV0287_FUSV0287OPDBMapper
{
	// ■SC
	/** FUSV028701SC */
	private static final String FUSV028701SC = "FUSV028701SC";

	// ■SC項目
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** KEY_郵便番号 */
	private static final String KEY_PCD = "key_pcd";
	/** 都道府県名 */
	private static final String STATE_NM = "state_nm";
	/** 市区町村名 */
	private static final String CITY_NM = "city_nm";
	/** 大字通称名 */
	private static final String OAZTSU_NM = "oaztsu_nm";
	/** 字丁目名 */
	private static final String AZCHO_NM = "azcho_nm";

	// ■SC明細
	/** 住所検索情報一覧照会明細 */
	private static final String EZM0081B080CBSMSG1LIST = "EZM0081B080CBSMsg1List";

	// ■Bean項目(日本語名)
	/** 検索用郵便番号（上） */
	private static final String BEAN_SEARCH_PCD_1 = "検索用郵便番号（上）";
	/** 検索用郵便番号（下） */
	private static final String BEAN_SEARCH_PCD_2 = "検索用郵便番号（下）";
	/** 都道府県名 */
	private static final String BEAN_STATE_NM = "都道府県名（検索結果）";
	/** 市区町村名 */
	private static final String BEAN_CITY_NM = "市区町村名（検索結果）";
	/** 大字通称名 */
	private static final String BEAN_OAZTSU_NM = "大字通称名（検索結果）";
	/** 字丁目名 */
	private static final String BEAN_AZCHO_NM = "字丁目名（検索結果）";

	// ■その他
	/** DATABEAN_GET_VALUE */
	private static final String GET = X31CWebConst.DATABEAN_GET_VALUE;
	/** DATABEAN_SET_VALUE */
	private static final String SET = X31CWebConst.DATABEAN_SET_VALUE;

	/**
	 * コンストラクタです。
	 */
	public FUSV0287_FUSV0287OPDBMapper()
	{
	}

	/**
	 * 住所検索情報一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param funcCd 機能コード
	 * @return マッピング結果
	 */
	public HashMap<String, Object> setFUSV028701SC(X31SDataBeanAccess[] bean, HashMap outputMap, String funcCd)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, funcCd);

		// 郵便番号取得
		String pcd1 = bean[0].sendMessageString(BEAN_SEARCH_PCD_1, GET);
		String pcd2 = bean[0].sendMessageString(BEAN_SEARCH_PCD_2, GET);

		// KEY_郵便番号
		parentMap.put(KEY_PCD, pcd1 + pcd2);

		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EZM0081B080CBSMSG1LIST, arrayList);

		outputMap.put(FUSV028701SC, parentMap);

		return outputMap;
	}

	/**
	 * 住所検索情報一覧照会の下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap 結果マップ
	 * @return データBean
	 */
	public X31SDataBeanAccess getFUSV028701SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV028701SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV028701SC);
		}

		if (parentMap != null && parentMap.size() > 0 && parentMap.containsKey(EZM0081B080CBSMSG1LIST))
		{
			// 検索結果全件取得
			ArrayList childList = (ArrayList)parentMap.get(EZM0081B080CBSMSG1LIST);
			if(childList == null || childList.size() == 0)
			{
				// 結果が存在しない場合、空を設定し処理を終了する
				setNoResult(bean);
				return bean;
			}

			// 検索結果の0番目を取得
			HashMap childMap = (HashMap)childList.get(0);
			if(childMap == null || childMap.size() == 0)
			{
				// 結果が存在しない場合、空を設定し処理を終了する
				setNoResult(bean);
				return bean;
			}

			// 都道府県名
			bean.sendMessageString(BEAN_STATE_NM, SET, getValue(childMap, STATE_NM));
			// 市区町村名
			bean.sendMessageString(BEAN_CITY_NM, SET, getValue(childMap, CITY_NM));
			// 大字通称名
			bean.sendMessageString(BEAN_OAZTSU_NM, SET, getValue(childMap, OAZTSU_NM));
			// 字丁目名
			bean.sendMessageString(BEAN_AZCHO_NM, SET, getValue(childMap, AZCHO_NM));
		}

		return bean;
	}

	/**
	 * 検索結果無しの場合の処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 */
	private void setNoResult(X31SDataBeanAccess bean)
	{
		// 都道府県名
		bean.sendMessageString(BEAN_STATE_NM, SET, JFUStrConst.EMPTY);
		// 市区町村名
		bean.sendMessageString(BEAN_CITY_NM, SET, JFUStrConst.EMPTY);
		// 大字通称名
		bean.sendMessageString(BEAN_OAZTSU_NM, SET, JFUStrConst.EMPTY);
		// 字丁目名
		bean.sendMessageString(BEAN_AZCHO_NM, SET, JFUStrConst.EMPTY);
	}

	/**
	 * サービス実行結果から値を取得します。
	 * 
	 * <br>
	 * @param outPutMap 結果マップ
	 * @param itemNm 項目名
	 * @return 値
	 */
	private String getValue(HashMap outPutMap, String itemNm)
	{
		String result = JFUStrConst.EMPTY;

		if(outPutMap.containsKey(itemNm) && !JFUWebCommon.isNull((String)outPutMap.get(itemNm)))
		{
			result = (String)outPutMap.get(itemNm);
		}

		return result;
	}
}