/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKSV0480_KKSV0480OPDBMapper
 *	ソースファイル名：KKSV0480_KKSV0480OPDBMapper.java
 *	作成者			：Fujitsu
 *	日付			：2012年02月21日
 *＜機能概要＞
 *	BP（面開発案件情報一覧取得処理）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2012/02/21	Fujitsu		新規作成
 *	v4.00.00	2012/11/21	FJ）赤穂	【IT1-2012-0002041】対応
*
 **********************************************************************/
package eo.web.webview.mapping;

import java.text.NumberFormat;
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.web.webview.KKW05901SF.KKW05901SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 * 
 */
public class KKSV0480_KKSV0480OPDBMapper 
{

	/**
	 * コンストラクタ
	 */
	public KKSV0480_KKSV0480OPDBMapper()
	{
	}


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：面開発案件情報一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV048001CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) 
	{
		if(bean == null)
		{
			return null;
		}

		if(bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		String kana2 = null;
		String kanji2 = null;

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ページング情報の設定
		parentMap.put("search_type", String.valueOf("1"));
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW05901_ROW_PER_PAGE"));
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW05901_MAX_SHOW_CNT"));

		// カナ項目１の選択肢の値を空文字で設定
		parentMap.put("key_anken_kana", ""); // 案件カナ名
		parentMap.put("key_tntsha_kana", ""); // 担当者カナ名
		// カナ項目１の取得
		String value_kana = getSelectValue(bean[0].getDataBeanArray(KKW05901SFConst.KANA_KMK_1));

		// カナ項目１が選択されている場合
		if(!"".equals(value_kana))
		{
			kana2 = bean[0].sendMessageString(KKW05901SFConst.KANA_KMK_2, X31CWebConst.DATABEAN_GET_VALUE);

			if(("案件カナ名").equals(value_kana))
			{
				parentMap.put("key_anken_kana", kana2);	// 案件カナ名
			}
			else if(("担当者カナ名").equals(value_kana))
			{
				parentMap.put("key_tntsha_kana", kana2); // 担当者カナ名
			}
		}

		// 漢字項目１の選択肢の値を空文字で設定
		parentMap.put("key_anken_nm", ""); // 案件名
		parentMap.put("key_developer_nm", ""); // ディベロッパー名
		parentMap.put("key_bukken_nm", ""); // 物件名
		parentMap.put("key_donyu_tntsha_user_nm", ""); // 導入担当者名
		parentMap.put("key_follow_tntsha_user_nm", ""); // フォロー担当者名
		parentMap.put("key_tntsha_nm", ""); // 担当者名
		// 漢字項目１の取得
		String value_kanji = getSelectValue(bean[0].getDataBeanArray(KKW05901SFConst.KANJI_KMK_1));

		// 漢字項目１が選択されている場合
		if(!"".equals(value_kanji))
		{
			kanji2 = bean[0].sendMessageString(KKW05901SFConst.KANJI_KMK_2, X31CWebConst.DATABEAN_GET_VALUE);

			if(("案件名").equals(value_kanji))
			{
				parentMap.put("key_anken_nm", kanji2);	// 案件名
			}
			else if(("ディベロッパー名").equals(value_kanji))
			{
				parentMap.put("key_developer_nm", kanji2); // ディベロッパー名
			}
			else if(("物件名").equals(value_kanji))
			{
				parentMap.put("key_bukken_nm", kanji2); // 物件名
			}
			else if(("導入担当者名").equals(value_kanji))
			{
				parentMap.put("key_donyu_tntsha_user_nm", kanji2); // 導入担当者名
			}
			else if(("フォロー担当者名").equals(value_kanji))
			{
				parentMap.put("key_follow_tntsha_user_nm", kanji2); // フォロー担当者名
			}
			else if(("担当者名").equals(value_kanji))
			{
				parentMap.put("key_tntsha_nm", kanji2); // 担当者名
			}
		}

		// 検索フラグ → 面開発案件情報一覧取得CCマップ.検索フラグ
		parentMap.put("searchFlg", bean[0].sendMessageString("検索フラグ", X31CWebConst.DATABEAN_GET_VALUE));
		// 面開発案件番号 → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿面開発案件番号
		parentMap.put("key_menkaihat_anken_no", bean[0].sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_GET_VALUE));
		// キャンペーンコード → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿表示用キャンペーンコード
		parentMap.put("key_dsp_campaign_cd", bean[0].sendMessageString("キャンペーンコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 住所(都道府県) → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿面開発案件都道府県名
		// コードタイプ名称には、要素番号が含まれているため、コードタイプコードに「府県名」を格納しているためコードタイプコードより設定
		X31SDataBeanAccess subBean = bean[0].getDataBeanArray("住所（都道府県）").getDataBean(0);
		parentMap.put("key_menkaihat_anken_state_nm", subBean.sendMessageString("コードタイプコード", X31CWebConst.DATABEAN_GET_VALUE));
		
		
		// 住所（市区町村） → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿面開発案件市区町村名
		parentMap.put("key_menkaihat_anken_city_nm", bean[0].sendMessageString("住所（市区町村）", X31CWebConst.DATABEAN_GET_VALUE));
		// 住所（大字通称） → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿面開発案件大字通称名
		parentMap.put("key_menkaihat_anken_oaztsu_nm", bean[0].sendMessageString("住所（大字通称）", X31CWebConst.DATABEAN_GET_VALUE));
		// 住所（字町名） → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿面開発案件字丁目名
		parentMap.put("key_menkaihat_anken_azcho_nm", bean[0].sendMessageString("住所（字町名）", X31CWebConst.DATABEAN_GET_VALUE));
		// 住所（番地・号） → 面開発案件情報一覧取得CCマップ.ＫＥＹ＿面開発案件番地号
		parentMap.put("key_menkaihat_anken_bnchigo", bean[0].sendMessageString("住所（番地・号）", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV048001CC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：面開発案件情報一覧照会
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV048001CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV048001CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV048001CC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listKKSV048001CC_mnkht_anken_info_list_EKK0271B001CBSMsg1List = bean[0].getDataBeanArray("面開発案件情報リスト");
		childList = null;
		if(listKKSV048001CC_mnkht_anken_info_list_EKK0271B001CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0271B001CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0271B001CBSMsg1List");

			for(int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if((listKKSV048001CC_mnkht_anken_info_list_EKK0271B001CBSMsg1List.getCount() - 1) >= i)
				{
					subbean = listKKSV048001CC_mnkht_anken_info_list_EKK0271B001CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listKKSV048001CC_mnkht_anken_info_list_EKK0271B001CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) 
				{
					continue;
				}

				// 面開発案件情報リスト.仮登録済みの設定
				String kari_cnt = (String)childMap.get("kari_add_zumi_cnt");
				if(!"0".equals(kari_cnt))
				{
					subbean.sendMessageString("仮登録済み", X31CWebConst.DATABEAN_SET_VALUE, "済");
				}
				else
				{
					subbean.sendMessageString("仮登録済み", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.面開発案件番号 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.面開発案件番号
				if (childMap != null)
				{
					subbean.sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("menkaihat_anken_no"));
				}
				else
				{
					subbean.sendMessageString("面開発案件番号", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.案件名 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.案件名
				if (childMap != null)
				{
					subbean.sendMessageString("案件名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("anken_nm"));
				}
				else
				{
					subbean.sendMessageString("案件名", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.ディベロッパ名 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.ディベロッパー名
				if (childMap != null)
				{
					subbean.sendMessageString("ディベロッパ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("developer_nm"));
				}
				else
				{
					subbean.sendMessageString("ディベロッパ名", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.物件名 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.物件名
				if (childMap != null)
				{
					subbean.sendMessageString("物件名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bukken_nm"));
				}
				else
				{
					subbean.sendMessageString("物件名", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.分譲戸数 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.分譲戸数
				if (childMap != null)
				{
					String value = (String)childMap.get("bunjo_kosu");			
					if(!"".equals(value))
					{
						long bunjoValue = Long.valueOf(value);
						NumberFormat bunjoObject = NumberFormat.getNumberInstance();			
						subbean.sendMessageString("分譲戸数", X31CWebConst.DATABEAN_SET_VALUE, bunjoObject.format(bunjoValue));
					}
				}
				else
				{
					subbean.sendMessageString("分譲戸数", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.導入担当者 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.導入担当者ユーザー名
				if (childMap != null)
				{
					subbean.sendMessageString("導入担当者", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("donyu_tntsha_user_nm"));
				}
				else
				{
					subbean.sendMessageString("導入担当者", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.フォロー担当者 ← 面開発案件情報一覧取得CCマップ.面開発担当者一覧照会（面開発案件番号）明細.フォロー担当者ユーザー名
				if (childMap != null)
				{
					subbean.sendMessageString("フォロー担当者", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("follow_tntsha_user_nm"));
				}
				else
				{
					subbean.sendMessageString("フォロー担当者", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				// 面開発案件情報リスト.住所（表示用）用に項目を連結
				if (childMap != null)
				{
					String state_nm = (String)childMap.get("menkaihat_anken_state_nm"); // 面開発案件都道府県名
					String city_nm = (String)childMap.get("menkaihat_anken_city_nm"); // 面開発案件市区町村名
					String oaztsu_nm = (String)childMap.get("menkaihat_anken_oaztsu_nm"); // 面開発案件大字通称名
					String azcho_nm = (String)childMap.get("menkaihat_anken_azcho_nm"); // 面開発案件字丁目名
					String bnchigo = (String)childMap.get("menkaihat_anken_bnchigo"); // 面開発案件番地号
					String ad = (state_nm + city_nm + oaztsu_nm + azcho_nm + bnchigo);
					subbean.sendMessageString("住所（表示用）", X31CWebConst.DATABEAN_SET_VALUE, ad);
				}
				else
				{
					subbean.sendMessageString("住所（表示用）", X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				//背景色の設定
				if((i % 2) == 0)
				{
					subbean.sendMessageString("背景色", X31CWebConst.DATABEAN_SET_VALUE, "odd");
				}
				else
				{
					subbean.sendMessageString("背景色", X31CWebConst.DATABEAN_SET_VALUE, "even");
				}
			}
		}
		return bean;
	}

	/**
	 * コンボボックスで選択された名称を返却します。<br>
	 * @param comboBean
	 * @return String
	 */
	private String getSelectValue(X31SDataBeanAccessArray comboBean)
	{
		String value = "";
		X31SDataBeanAccess subbean = comboBean.getDataBean(0);
		String index = subbean.sendMessageString(KKW05901SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		if((null != index) && (!"".equals(index)))
		{
			String index_value = subbean.sendMessageString(KKW05901SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));	
			String[] valueList = index_value.split("\\.");
			if((null != valueList) && (valueList.length > 1))
			{
				value = valueList[1];
			}
		}
		return value;
	}
}
