/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0089_KKSV0089OPDBMapper
*	ソースファイル名：KKSV0089_KKSV0089OPDBMapper.java
*	作成者			：富士通
*	日付			：2012年10月17日
*＜機能概要＞
*	BP（eo電話番号発番登録電話番号発番）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/10/17	富士通		新規作成
*
**********************************************************************/
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.JPCModelConstant;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0089_KKSV0089OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0089_KKSV0089OPDBMapper(){
	}
	
	// 案件対応 ANK-1670-00-00 2013/11/05 ADD START
	/** 払出種別コード（通常払出） */
	public static final String HRADSI_SBT_CD_01 = "01";
	// 案件対応 ANK-1670-00-00 2013/11/05 ADD END 
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ電話番号発番登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008901SC(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("search_type", String.valueOf(JPCModelConstant.SAERCH_TYPE_BBN));
		// OM-2013-0004723 通常払出の発番に時間がかかる 2013/12/11 START
//		// 部品呼び出し → 電話番号一覧照会マップ.最大検索件数
//		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW00201_MAX_SHOW_CNT"));
//		// 部品呼び出し → 電話番号一覧照会マップ.表示件数
//		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW00201_ROW_PER_PAGE"));
		// OM-2013-0004723 通常払出の発番に時間がかかる 2013/12/11 END
		// ＫＥＹ＿番号区画コード → 電話番号一覧照会マップ.ＫＥＹ＿番号区画コード
		parentMap.put("key_no_kukaku_cd", bean[0].sendMessageString("ＫＥＹ＿番号区画コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 部品呼び出し → 電話番号一覧照会マップ.ＫＥＹ＿サービス区分
		parentMap.put("key_svc_div", String.valueOf("01"));
		// 部品呼び出し → 電話番号一覧照会マップ.ＫＥＹ＿個人法人電話番号帯コード
		parentMap.put("key_kojin_hojin_tln_tai_cd", String.valueOf("1"));
		// ＫＥＹ＿電話番号予約ステータス → 電話番号一覧照会マップ.ＫＥＹ＿電話番号予約ステータス
		parentMap.put("key_telno_rsv_stat", bean[0].sendMessageString("ＫＥＹ＿電話番号予約ステータス", X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿電話番号予約種別コード → 電話番号一覧照会マップ.ＫＥＹ＿電話番号予約種別コード
		parentMap.put("key_telno_rsv_sbt_cd", bean[0].sendMessageString("ＫＥＹ＿電話番号予約種別コード", X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿予約者ＳＹＳＩＤ → 電話番号一覧照会マップ.ＫＥＹ＿予約者SYSID
		parentMap.put("key_yoyaksha_sysid", bean[0].sendMessageString("ＫＥＹ＿予約者ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿予約者サービス契約番号 → 電話番号一覧照会マップ.ＫＥＹ＿予約者サービス契約番号
		parentMap.put("key_yoyaksha_svc_kei_no", bean[0].sendMessageString("ＫＥＹ＿予約者サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 案件対応 ANK-1670-00-00 2013/11/05 ADD START
		// 検索時払出種別を取得
		String hradsiSbt = bean[0].sendMessageString("検索時払出種別", X31CWebConst.DATABEAN_GET_VALUE);
		
		// 検索時払出種別が通常払出の場合既存通りに設定
		if (HRADSI_SBT_CD_01.equals(hradsiSbt)) {
			// 部品呼び出し → 電話番号一覧照会マップ.ＫＥＹ＿エイジングステータス
			parentMap.put("key_aging_stat", String.valueOf("999"));
			// OM-2013-0004723 通常払出の発番に時間がかかる 2013/12/11 START
			// 通常払出は1件のみ取得する
			// 部品呼び出し → 電話番号一覧照会マップ.最大検索件数
			parentMap.put("max_search_num", "1");
			// 部品呼び出し → 電話番号一覧照会マップ.表示件数
			parentMap.put("display_num", "1");
			// OM-2013-0004723 通常払出の発番に時間がかかる 2013/12/11 END
		}
		// 検索時払出種別が通常払出以外の場合（予約時）は空白設定
		else
		{
			// 部品呼び出し → 電話番号一覧照会マップ.ＫＥＹ＿エイジングステータス
			parentMap.put("key_aging_stat", new String());
			// OM-2013-0004723 通常払出の発番に時間がかかる 2013/12/11 START
			// 部品呼び出し → 電話番号一覧照会マップ.最大検索件数
			parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW00201_MAX_SHOW_CNT"));
			// 部品呼び出し → 電話番号一覧照会マップ.表示件数
			parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW00201_ROW_PER_PAGE"));
			// OM-2013-0004723 通常払出の発番に時間がかかる 2013/12/11 END
		}
		// 案件対応 ANK-1670-00-00 2013/11/05 ADD END
		// 部品呼び出し → 電話番号一覧照会マップ.ＫＥＹ＿番号コード
		parentMap.put("key_no_cd", String.valueOf("01"));
// OM-2013-0000865対応 20130824 星野 ADD START
		// 部品呼び出し → 電話番号一覧照会マップ.ＫＥＹ＿割当通信事業者コード
		parentMap.put("key_wariate_tsjgs_cd", "5100");
// OM-2013-0000865対応 20130824 星野 ADD END

		outputMap.put("KKSV008901SC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ電話番号発番登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV008901SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV008901SC")){
			parentMap = (HashMap)outputMap.get("KKSV008901SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV008901SC_rsy_telno_inf_list_EZM0121B030CBSMsg1List = bean[0].getDataBeanArray("予約電話番号情報リスト");
		childList = null;
		if(listKKSV008901SC_rsy_telno_inf_list_EZM0121B030CBSMsg1List != null && parentMap != null && parentMap.containsKey("EZM0121B030CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EZM0121B030CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV008901SC_rsy_telno_inf_list_EZM0121B030CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV008901SC_rsy_telno_inf_list_EZM0121B030CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV008901SC_rsy_telno_inf_list_EZM0121B030CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 予約電話番号情報リスト.電話番号 ← 電話番号一覧照会マップ.電話番号一覧照会2明細.電話番号
				if (childMap != null) {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("telno"));
				} else {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 予約電話番号情報リスト.電話番号予約番号 ← 電話番号一覧照会マップ.電話番号一覧照会2明細.電話番号予約番号
				if (childMap != null) {
					subbean.sendMessageString("電話番号予約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("telno_rsv_no"));
				} else {
					subbean.sendMessageString("電話番号予約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 予約電話番号情報リスト.更新年月日時分秒 ← 電話番号一覧照会マップ.電話番号一覧照会2明細.更新年月日時分秒（電話番号予約）
				if (childMap != null) {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("zm0181_upd_dtm"));
				} else {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}


}