/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CKSV0044_CKSV0044OPDBMapper
*	ソースファイル名：CKSV0044_CKSV0044OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年03月02日
*＜機能概要＞
*	BP（グループメンバ一覧取得処理）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/02	Fujitsu		新規作成
*	v4.00.00	2012/12/28	FJ）野口   【IT1-2013-0000021】対応
*	v4.01.00	2013/01/24	FJ）野口   【IT1-2013-0000138】対応
*	v4.01.01	2013/02/09	FJ）庭山	【ST4-2012-0000309】対応
*	v4.01.02	2013/03/14	FJ）庭山	【IT1-2013-0000400】対応
**********************************************************************/
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.util.JZMCommonUtil;
import eo.web.webview.CKW02505SF.CKW02505SFConst;
import eo.web.webview.KKW05901SF.KKW05901SFConst;
import eo.web.webview.common.JCCWebCommon;


/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 * 
 */
public class CKSV0044_CKSV0044OPDBMapper
{
	/** ＩＤ項目(SYSID) */
	private static final String ID_SYSID = "01";
	/** ＩＤ項目(eoID) */
	private static final String ID_EOID = "02";
	
	/** 住所項目(連絡先住所) */
	private static final String AD_RRKS = "1";
	/** 住所項目(代表連絡先住所) */
	private static final String AD_DIHY_RRKS = "2";
	
	/** 電話番号項目(契約者電話番号) */
	private static final String TEL_KEISHA = "1";
	/** 電話番号項目(移動体電話番号) */
	private static final String TEL_MOBILE = "2";
	/** 電話番号項目(親権者電話番号) */
	private static final String TEL_SKSHA = "3";
	/** 電話番号項目(eo電話番号) */
	private static final String TEL_EO = "4";
	/** 電話番号項目(コンテンツ電話番号) */
	private static final String TEL_CONT = "5";
	/** 電話番号項目(上記の全電話番号) */
	private static final String TEL_ALL = "6";
	/** 電話番号項目(送付先電話番号) */
	private static final String TEL_SFSK = "8";
	/** 電話番号項目(050電話番号) */
	private static final String TEL_050 = "9";
	/** 電話番号項目(eo-netフォン電話番号) */
	private static final String TEL_EONET = "10";
	
	/**
	 * コンストラクタ
	 */
	public CKSV0044_CKSV0044OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：グループメンバ選択
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV004401CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}

		String id_kmk_value = null;
		String telNo_value = null;
		String ad_pcd_value = null;
		String ad_cd_value = null;
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// ページング情報の設定
		parentMap.put("search_type", String.valueOf("1"));
		parentMap.put("display_num", JCCWebCommon.getSearchConst("CKW02505_ROW_PER_PAGE"));
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("CKW02505_MAX_SHOW_CNT"));
		
		// ＩＤ項目１の選択肢の値を空文字で設定
		parentMap.put("key_sysid", ""); // ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("key_eoid", ""); // ＫＥＹ＿ｅｏＩＤ
		// ＩＤ項目１の取得
		String id_kmk_select = getSelectValue(bean[0].getDataBeanArray(CKW02505SFConst.ID_KMK_1));
		// ＩＤ項目１が選択されている場合
		if(!"".equals(id_kmk_select))
		{
			id_kmk_value = bean[0].sendMessageString(CKW02505SFConst.ID_KMK_2, X31CWebConst.DATABEAN_GET_VALUE);

			if((ID_SYSID).equals(id_kmk_select))
			{
				parentMap.put("key_sysid", id_kmk_value);	// ＫＥＹ＿ＳＹＳＩＤ
			}
			else if((ID_EOID).equals(id_kmk_select))
			{
				parentMap.put("key_eoid", id_kmk_value); // ＫＥＹ＿ｅｏＩＤ
			}
		}
		// 住所項目の選択肢の値を空文字で設定
		parentMap.put("key_keisha_pcd", ""); // ＫＥＹ＿契約者郵便番号
		parentMap.put("key_keisha_ad_cd", ""); // ＫＥＹ＿契約者住所コード
		parentMap.put("key_hjrrks_pcd", ""); // ＫＥＹ＿法人連絡先郵便番号
		parentMap.put("key_hjrrks_ad_cd", ""); // ＫＥＹ＿法人連絡先住所コード
		// 住所項目の取得
		String ad_select = getSelectValue(bean[0].getDataBeanArray(CKW02505SFConst.AD));
		// 住所項目が選択されている場合
		if(!"".equals(ad_select))
		{
			ad_pcd_value = bean[0].sendMessageString(CKW02505SFConst.PCD, X31CWebConst.DATABEAN_GET_VALUE);
			ad_cd_value = bean[0].sendMessageString(CKW02505SFConst.AD_CD, X31CWebConst.DATABEAN_GET_VALUE);

			if((AD_RRKS).equals(ad_select))
			{
				parentMap.put("key_keisha_pcd", ad_pcd_value);	// ＫＥＹ＿契約者郵便番号
				parentMap.put("key_keisha_ad_cd", ad_cd_value);	// ＫＥＹ＿契約者住所コード
			}
			else if((AD_DIHY_RRKS).equals(ad_select))
			{
				parentMap.put("key_hjrrks_pcd", ad_pcd_value); // ＫＥＹ＿法人連絡先郵便番号
				parentMap.put("key_hjrrks_ad_cd", ad_cd_value); // ＫＥＹ＿法人連絡先住所コード
			}
		}
		// 電話番号項目の選択肢の値を空文字で設定
		parentMap.put("key_keisha_telno", ""); // ＫＥＹ＿契約者電話番号
		parentMap.put("key_mobile_telno", ""); // ＫＥＹ＿移動体電話番号
		parentMap.put("key_sksha_telno", ""); // ＫＥＹ＿親権者電話番号
		parentMap.put("key_eo_telno", ""); // ＫＥＹ＿ｅｏ光電話番号
		/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
		parentMap.put("key_cont_telno", "");// ＫＥＹ＿コンテンツ電話番号
		/* ++++++++++ v4.01.00 追加終了 ++++++++++ */
		parentMap.put("key_sohus_telno", "");		// ＫＥＹ＿送付先電話番号
		parentMap.put("key_n_050_op_telno", "");	// ＫＥＹ＿０５０電話番号
		parentMap.put("key_koshumo_telno", "");		// ＫＥＹ＿ｅｏＮＥＴフォン電話番号
		parentMap.put("key_all_telno", ""); // ＫＥＹ＿全電話番号
		// 電話番号項目の取得
		String telNo_select = getSelectValue(bean[0].getDataBeanArray(CKW02505SFConst.TELNO_1));
		// 電話番号項目が選択されている場合
		if(!"".equals(telNo_select))
		{
			telNo_value = bean[0].sendMessageString(CKW02505SFConst.TELNO_2, X31CWebConst.DATABEAN_GET_VALUE);

			if(TEL_KEISHA.equals(telNo_select))
			{
				parentMap.put("key_keisha_telno", telNo_value);	// ＫＥＹ＿契約者電話番号
			}
			else if(TEL_MOBILE.equals(telNo_select))
			{
				parentMap.put("key_mobile_telno", telNo_value); // ＫＥＹ＿移動体電話番号
			}
			else if(TEL_SKSHA.equals(telNo_select))
			{
				parentMap.put("key_sksha_telno", telNo_value); // ＫＥＹ＿親権者電話番号
			}
			else if(TEL_EO.equals(telNo_select))
			{
				parentMap.put("key_eo_telno", telNo_value); // ＫＥＹ＿ｅｏ光電話番号
			}
			/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
			else if(TEL_CONT.equals(telNo_select))
			{
				parentMap.put("key_cont_telno", telNo_value); // ＫＥＹ＿コンテンツ電話番号
			}
			/* ++++++++++ v4.01.00 追加終了 ++++++++++ */
			// 送付先電話番号
			else if(TEL_SFSK.equals(telNo_select))
			{
				parentMap.put("key_sohus_telno", telNo_value);
			}
			// ０５０電話番号
			else if(TEL_050.equals(telNo_select))
			{
				parentMap.put("key_n_050_op_telno", telNo_value);
			}
			// ｅｏＮＥＴフォン電話番号
			else if(TEL_EONET.equals(telNo_select))
			{
				parentMap.put("key_koshumo_telno", telNo_value);
			}
			else if(TEL_ALL.equals(telNo_select))
			{
				parentMap.put("key_all_telno", telNo_value); // ＫＥＹ＿全電話番号
			}
		}
		// サービス契約番号 → お客様グループ一覧取得CCマップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// お客様カナ名 → お客様グループ一覧取得CCマップ.ＫＥＹ＿お客様カナ名
		parentMap.put("key_cust_kana", bean[0].sendMessageString("お客様カナ名", X31CWebConst.DATABEAN_GET_VALUE));
		// ソート項目Ｎｏ → お客様グループ一覧取得CCマップ.ＫＥＹ＿ソート項目Ｎｏ
		parentMap.put("key_sort_item_no", bean[0].sendMessageString("ソート項目Ｎｏ", X31CWebConst.DATABEAN_GET_VALUE));
		// ソート区分 → お客様グループ一覧取得CCマップ.ＫＥＹ＿ソート区分
		parentMap.put("key_sort_kbn", bean[0].sendMessageString("ソート区分", X31CWebConst.DATABEAN_GET_VALUE));
		//部分一致
		if(bean[0].sendMessageBoolean("部分一致", X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 2:部分一致検索 → お客様グループ一覧取得CCマップ.ＫＥＹ＿カナ項目検索区分
			parentMap.put("key_kana_search_kbn", "2");
		}
		else
		{
			// 1:前方一致検索 → お客様グループ一覧取得CCマップ.ＫＥＹ＿カナ項目検索区分
			parentMap.put("key_kana_search_kbn", "1");
		}
		
		outputMap.put("CKSV004401CC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：グループメンバ選択
	 * @param outputMap
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV004401CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV004401CC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV004401CC");
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listCKSV004401CC_mmb_list_ECK0011B011CBSMsg1List = bean[0].getDataBeanArray("メンバリスト");
		childList = null;
		if(listCKSV004401CC_mmb_list_ECK0011B011CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECK0011B011CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECK0011B011CBSMsg1List");

			for(int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if((listCKSV004401CC_mmb_list_ECK0011B011CBSMsg1List.getCount() - 1) >= i)
				{
					subbean = listCKSV004401CC_mmb_list_ECK0011B011CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listCKSV004401CC_mmb_list_ECK0011B011CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) 
				{
					continue;
				}
			
				// メンバリスト.ＳＹＳＩＤ ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.ＳＹＳＩＤ
				if (childMap != null)
				{
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
				} else {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.状態 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.お客様ステータス名称
				if (childMap != null)
				{
					subbean.sendMessageString("状態", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_stat_nm"));
				} else {
					subbean.sendMessageString("状態", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.ｅｏＩＤ ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.ｅｏＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
				} else {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.氏名 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.氏名
				if (childMap != null) {
					subbean.sendMessageString("氏名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
				} else {
					subbean.sendMessageString("氏名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.氏名カナ ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.氏名カナ
				if (childMap != null) {
					subbean.sendMessageString("氏名カナ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_kana"));
				} else {
					subbean.sendMessageString("氏名カナ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者都道府県名 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者都道府県名
				if (childMap != null) {
					subbean.sendMessageString("契約者都道府県名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_state_nm"));
				} else {
					subbean.sendMessageString("契約者都道府県名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者市区町村名 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者市区町村名
				if (childMap != null) {
					subbean.sendMessageString("契約者市区町村名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_city_nm"));
				} else {
					subbean.sendMessageString("契約者市区町村名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者大字通称名 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者大字通称名
				if (childMap != null) {
					subbean.sendMessageString("契約者大字通称名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_oaztsu_nm"));
				} else {
					subbean.sendMessageString("契約者大字通称名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者字丁目名 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者字丁目名
				if (childMap != null) {
					subbean.sendMessageString("契約者字丁目名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_azcho_nm"));
				} else {
					subbean.sendMessageString("契約者字丁目名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者番地号 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者番地号
				if (childMap != null) {
					subbean.sendMessageString("契約者番地号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_bnchigo"));
				} else {
					subbean.sendMessageString("契約者番地号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者住所補記・建物名 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者住所補記・建物名
				if (childMap != null) {
					subbean.sendMessageString("契約者住所補記・建物名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_adrttm"));
				} else {
					subbean.sendMessageString("契約者住所補記・建物名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.契約者住所補記・部屋番号 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者住所補記・部屋番号
				if (childMap != null) {
					subbean.sendMessageString("契約者住所補記・部屋番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_adrrm"));
				} else {
					subbean.sendMessageString("契約者住所補記・部屋番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.連絡先 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.契約者電話番号
				if (childMap != null) {
					subbean.sendMessageString("連絡先", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_telno"));
				} else {
					subbean.sendMessageString("連絡先", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.生年月日 ← お客様グループ一覧取得CCマップ.お客様情報一覧照会明細.お客様生年月日
				if (childMap != null) {
					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_birthd"));
				} else {
					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// メンバリスト.住所用に項目を連結
				if (childMap != null)
				{
					String ad_nm = JZMCommonUtil.getPtn01((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"));
					
					if (ad_nm == null)
					{
						ad_nm = "";
					}
					subbean.sendMessageString("住所", X31CWebConst.DATABEAN_SET_VALUE, ad_nm);
				} else {
					subbean.sendMessageString("住所", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				//背景色の設定
				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)))
		{
			/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
//			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];
//			}
			value = subbean.sendMessageString(KKW05901SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));	
			/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		}
		return value;
	}
}
