/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0433_KKSV0433OPDBMapper
*	ソースファイル名：KKSV0433_KKSV0433OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年11月21日
*＜機能概要＞
*	BP（エリアチェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/21	FJ		新規作成
*   V4.00.00    2012/09/04  FJ) 谷口    【TAI-2012-0000059】リストボックスの選択をインデックスからコード値に変更
*   v40.00.00	2018/11/07	FJ) 吉田	【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
**********************************************************************/
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.JKKStrConst;
import eo.web.webview.KKW01201SF.KKW01201SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 * 
 */
public class KKSV0433_KKSV0433OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0433_KKSV0433OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean エリアチェック
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV043301CC(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>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 住所コード → 住所コード取得マップ.住所コード
		parentMap.put("ad_cd", bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 郵便番号 → 郵便番号関連情報一意照会.郵便番号
		parentMap.put("pcd", bean[0].sendMessageString("郵便番号（前）", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("郵便番号（後）", X31CWebConst.DATABEAN_GET_VALUE));
		// ＡＤＳＬフラグ → 住所コード取得マップ.ＡＤＳＬフラグ
		parentMap.put("adsl_flg", bean[0].sendMessageString("ＡＤＳＬフラグ", X31CWebConst.DATABEAN_GET_VALUE));
		// 都道府県 → 住所コード取得マップ.ＫＥＹ＿都道府県名
		parentMap.put("key_state_nm", bean[0].sendMessageString("都道府県", X31CWebConst.DATABEAN_GET_VALUE));
		// 市区町村 → 住所コード取得マップ.ＫＥＹ＿市区町村名
		parentMap.put("key_city_nm", bean[0].sendMessageString("市区町村", X31CWebConst.DATABEAN_GET_VALUE));
		// 大字通称名 → 住所コード取得マップ.ＫＥＹ＿大字通称名
		parentMap.put("key_oaztsu_nm", bean[0].sendMessageString("大字通称名", X31CWebConst.DATABEAN_GET_VALUE));
		// 字丁目名 → 住所コード取得マップ.ＫＥＹ＿字丁目名
		parentMap.put("key_azcho_nm", bean[0].sendMessageString("字丁目名", X31CWebConst.DATABEAN_GET_VALUE));
		// 番地・号 → 住所コード取得マップ.編集前番地
		parentMap.put("before_bnchi", bean[0].sendMessageString("番地・号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV043301CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean エリアチェック
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param unyoDate 運用日付
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setEKK0931B501(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String unyoDate)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 住所コード → サービス提供エリア対象外一覧照会.ＫＥＹ＿サービス提供エリア警告対象住所コード
		parentMap.put("key_svta_kkku_taiad_cd", bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("key_unyo_ymd", unyoDate);

		outputMap.put("EKK0931B501", parentMap);
						
		return outputMap;
	}


	/**
	 * 上りマッピングをする
	 * @param bean エリアチェック
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setEFU0041B010(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>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

//		// 市外局番 → ＡＤＳＬ可能エリア一覧照会.ＫＥＹ＿市外局番
//		parentMap.put("key_areacd", "090");
//		// 市内局番 → ＡＤＳＬ可能エリア一覧照会.ＫＥＹ＿市内局番
//		parentMap.put("key_shinai_kyoku_no", "1234");
		// 判定局番 → ＡＤＳＬ可能エリア一覧照会.ＫＥＹ＿判定局番
		parentMap.put("key_judge_kyoku_no", bean[0].sendMessageString(KKW01201SFConst.TELNO, X31CWebConst.DATABEAN_GET_VALUE).substring(0, 7));
		
		outputMap.put("EFU0041B010", parentMap);
						
		return outputMap;
	}


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：エリアチェック
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setEKK2321B010(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>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 郵便番号 → 郵便番号別関電営業所候補一覧照会.ＫＥＹ＿郵便番号
		StringBuffer keyPcd = new StringBuffer();
		keyPcd.append(bean[0].sendMessageString(KKW01201SFConst.PCD_BF, X31CWebConst.DATABEAN_GET_VALUE));
		keyPcd.append(bean[0].sendMessageString(KKW01201SFConst.PCD_AF, X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("key_pcd", keyPcd.toString());
		
		outputMap.put("EKK2321B010", parentMap);
		
		return outputMap;
	}

	// ▼▼▼▼▼ ANK-3412-00-00 ADD START ▼▼▼▼▼
	/**
	 * 上りマッピングをする
	 * @param bean エリアチェック
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV043306SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String unyoDate)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 料金コースコード → 料金コース一意照会.料金コースコード
		parentMap.put("key_pcrs_cd", bean[0].sendMessageString(KKW01201SFConst.PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 予約適用年月日 → 料金コース一意照会.予約適用年月日
		parentMap.put("key_rsv_aply_ymd", unyoDate);

		outputMap.put("KKSV043306SC", parentMap);
						
		return outputMap;
	}
	// ▲▲▲▲▲ ANK-3412-00-00 ADD END ▲▲▲▲▲

	/**
	 * 下りマッピング
	 * @param bean　[0]：エリアチェック
	 * @param outputMap
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV043301CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV043301CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV043301CC");
		}

		
		// 住所コード ← 住所コード取得マップ.住所コード
		if (parentMap != null)
		{
			bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("ad_cd"));
		}
		else
		{
			bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：エリアチェック
	 * @param outputMap
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap getEKK0931B501(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		HashMap childMap = new HashMap();
		ArrayList childList = new ArrayList();
		
		if(outputMap.containsKey("EKK0931B501"))
		{
			parentMap = (HashMap)outputMap.get("EKK0931B501");
		}

//		// 住所コード ← 住所コード取得マップ.住所コード
//		if (parentMap != null) {
//			childMap.put("EKK931B501CBSMsg1List", (String)parentMap.get("svc_cd"));
//			childMap.put("EKK931B501CBSMsg1List", (String)parentMap.get("prc_grp_cd"));
//			childMap.put("EKK931B501CBSMsg1List", (String)parentMap.get("pcrs_cd"));
//			childMap.put("EKK931B501CBSMsg1List", (String)parentMap.get("pplan_cd"));
//			childMap.put("EKK931B501CBSMsg1List", (String)parentMap.get("chk_sbt_cd"));
//		} else {
//			childMap.put("EKK931B501CBSMsg1List", new String());
//		}
//
//		return childMap;
		
		return parentMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：エリアチェック
	 * @param outputMap
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFU0041B010(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		HashMap parentMap = null;
		ArrayList childList = null;
		HashMap childMap = null;
		if(outputMap.containsKey("EFU0041B010"))
		{
			parentMap = (HashMap)outputMap.get("EFU0041B010");
			childList = (ArrayList)parentMap.get("EFU0041B010CBSMsg1List");
			if (0 < childList.size())
			{
				childMap = (HashMap)childList.get(0);
			}
		}
		
		// サービス開始日＿ＡＤＳＬ ← ＡＤＳＬ可能エリア一覧照会.サービス開始日＿ＡＤＳＬ
		if (childMap != null)
		{
			bean[0].sendMessageString("サービス開始日＿ＡＤＳＬ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("adsl_psb_area_tstaymd"));
		}
		else
		{
			bean[0].sendMessageString("サービス開始日＿ＡＤＳＬ", X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		// 結果＿ＡＤＳＬ
		String rsltCd = "";
		if (childMap != null)
		{
			rsltCd = JKKStrConst.CD00610_OK;
		}
		String rsltCdIdx =  JKKWebCommon.convertIndex(bean[0], rsltCd, KKW01201SFConst.RSLT_LIST, "", KKW01201SFConst.RSLT_CD_LIST_01);
		bean[0].sendMessageString("結果＿ＡＤＳＬ", X31CWebConst.DATABEAN_SET_VALUE, rsltCdIdx);

		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean：エリアチェック
	 * @param outputMap
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getEKK2321B010(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		if (bean == null)
		{
			return null;
		}
		if (!outputMap.containsKey("EKK2321B010"))
		{
			return null;
		}
		HashMap parentMap = (HashMap)outputMap.get("EKK2321B010");
		if (parentMap == null)
		{
			return null;
		}
		
		X31SDataBeanAccessArray svcAreaListDataBeanArray = bean[0].getDataBeanArray(KKW01201SFConst.SVC_AREA_LIST);
		svcAreaListDataBeanArray.clearArray();
		
		ArrayList<HashMap> ekk2321List = (ArrayList<HashMap>)parentMap.get("EKK2321B010CBSMsg1List");
		
		if (ekk2321List != null)
		{
			for (int i = 0; i < ekk2321List.size(); i++)
			{
				X31SDataBeanAccess subBean = svcAreaListDataBeanArray.addDataBean();
				
				HashMap childMap = (HashMap)ekk2321List.get(i);
				
				// 背景色の設定
				if (i % 2 == 1)
				{
					subBean.sendMessageString(KKW01201SFConst.L_COLOR_04, X31CWebConst.DATABEAN_SET_VALUE, "even");
				}
				else
				{
					subBean.sendMessageString(KKW01201SFConst.L_COLOR_04, X31CWebConst.DATABEAN_SET_VALUE, "odd");
				}
				
				// サービス開始日 ← 郵便番号別関電営業所候補一覧照会マップ.光エリアサービス開始年月日
				if (childMap != null)
				{
					subBean.sendMessageString(KKW01201SFConst.SVC_STR_DAY_04, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hikari_area_svc_staymd"));
				}
				else
				{
					subBean.sendMessageString(KKW01201SFConst.SVC_STR_DAY_04, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				
				// サービス地域１ ← 郵便番号別関電営業所候補一覧照会マップ.郵便番号住所説明1
				if (childMap != null)
				{
					subBean.sendMessageString(KKW01201SFConst.SVC_CKI_1_04, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcd_ad_setmei_1"));
				}
				else
				{
					subBean.sendMessageString(KKW01201SFConst.SVC_CKI_1_04, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				
				// サービス地域２ ← 郵便番号別関電営業所候補一覧照会マップ.郵便番号住所説明2
				if (childMap != null)
				{
					subBean.sendMessageString(KKW01201SFConst.SVC_CKI_2_04, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcd_ad_setmei_2"));
				}
				else
				{
					subBean.sendMessageString(KKW01201SFConst.SVC_CKI_2_04, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				
				//  関電営業所コード ← 郵便番号別関電営業所候補一覧照会マップ.関電営業所コード
				if (childMap != null)
				{
					subBean.sendMessageString(KKW01201SFConst.KEPCO_BUIOFFC_CD_04, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kepco_busioffice_cd"));
				}
				else
				{
					subBean.sendMessageString(KKW01201SFConst.KEPCO_BUIOFFC_CD_04, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				
				//  関電営業所名 ← 郵便番号別関電営業所候補一覧照会マップ.関電営業所名
				if (childMap != null)
				{
					subBean.sendMessageString(KKW01201SFConst.KEPCO_BUIOFFC_NM_04, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kepco_busioffice_nm"));
				}
				else
				{
					subBean.sendMessageString(KKW01201SFConst.KEPCO_BUIOFFC_NM_04, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
			}
		}
		return bean;
	}
}