/*********************************************************************
*	All Right reserved,Copyright (c) Fujitsu, 2013
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CHSV0054_CHSV0054OPDBMapper
*	ソースファイル名：CHSV0054_CHSV0054OPDBMapper.java
*	作成者			：FJ
*	日付			：2013年04月11日
*＜機能概要＞
*	BP（内訳パターン情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/04/11	FJ		新規作成
*	v9.00.00	2014/08/26  FJ) 桑島   【OM-2014-0002355】サービス契約番号型チェック対応。
**********************************************************************/
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.JACStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHCommonConst;
import eo.web.webview.common.JCHPulldownUtil;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CHSV0054_CHSV0054OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CHSV0054_CHSV0054OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：随時入金登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV005401SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl) {
		
		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);

		// サービス契約番号
		String svcKeiNo = bean[0].sendMessageString(JCHCommonConst.SVC_KEI_NO_INPUT_UW, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (JACStrConst.KARA_MOJI.equals(svcKeiNo))
		{
			svcKeiNo = JCHPulldownUtil.getSelectedValue(bean, JCHCommonConst.SVC_KEI_NO_INFO_UW, JCHCommonConst.SVC_KEI_NO_LIST_UW, JCHCommonConst.SVC_KEI_NO_SEL_UW);
		}
		
		//OM-2014-0002355 ADD START
		if(svcKeiNo != null && !JACStrConst.KARA_MOJI.equals(svcKeiNo))
		{
			if(svcKeiNo.length() > 10)
			{
				svcKeiNo = svcKeiNo.substring(0, 10);
			}
		}
		//OM-2014-0002355 ADD END
		
		// サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", svcKeiNo);
		// 運用日付 → サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", JCCWebCommon.getOpeDate(bl, null));

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

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：随時入金登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV005402SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl) {
		
		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);

		// サービス契約番号
		String svcKeiNo = bean[0].sendMessageString(JCHCommonConst.SVC_KEI_NO_INPUT_UW, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (JACStrConst.KARA_MOJI.equals(svcKeiNo))
		{
			svcKeiNo = JCHPulldownUtil.getSelectedValue(bean, JCHCommonConst.SVC_KEI_NO_INFO_UW, JCHCommonConst.SVC_KEI_NO_LIST_UW, JCHCommonConst.SVC_KEI_NO_SEL_UW);
		}
		
		//OM-2014-0002355 ADD START
		if(svcKeiNo != null && !JACStrConst.KARA_MOJI.equals(svcKeiNo))
		{
			if(svcKeiNo.length() > 10)
			{
				svcKeiNo = svcKeiNo.substring(0, 10);
			}
		}
		//OM-2014-0002355 ADD END

		// サービス契約番号 → サービス契約内訳一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", svcKeiNo);

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

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：随時入金登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setGETADDPRCKMKPTNCC(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);

		// 内訳パターンコード
		String uwPtnCd = JCHPulldownUtil.getSelectedValue(bean, JCHCommonConst.UW_PTN_INFO, JCHCommonConst.UW_PTN_CD_LIST, JCHCommonConst.UW_PTN_CD_SEL);
		if (uwPtnCd == null)
		{
			uwPtnCd = JACStrConst.KARA_MOJI;	
		}
		
		// 内訳パターンコード → 追加料金項目パターンマップ.ＫＥＹ＿追加料金項目パターンコード
		parentMap.put("key_add_prc_kmk_ptn_cd", uwPtnCd);

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

	/**
	 * 下りマッピング
	 * @param bean　[0]：随時入金登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getGETADDPRCKMKPTNCC(X31SDataBeanAccess[] bean, HashMap outputMap){

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

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listCHSV005402SC_add_prc_kmk_info_ECH0611B010CBSMsg1List = bean[0].getDataBeanArray("追加料金項目情報");
		listCHSV005402SC_add_prc_kmk_info_ECH0611B010CBSMsg1List.clearArray();
		if(listCHSV005402SC_add_prc_kmk_info_ECH0611B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0611B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECH0611B010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listCHSV005402SC_add_prc_kmk_info_ECH0611B010CBSMsg1List.getCount() -1 >= i){
					subbean = listCHSV005402SC_add_prc_kmk_info_ECH0611B010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listCHSV005402SC_add_prc_kmk_info_ECH0611B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 追加料金項目情報.追加料金グループコード ← 追加料金項目パターンマップ.追加料金項目パターン一覧照会明細.追加料金グループコード
				if (childMap != null) {
					subbean.sendMessageString("追加料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_prc_grp_cd"));
				} else {
					subbean.sendMessageString("追加料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 追加料金項目情報.追加料金コースコード ← 追加料金項目パターンマップ.追加料金項目パターン一覧照会明細.追加料金コースコード
				if (childMap != null) {
					subbean.sendMessageString("追加料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_pcrs_cd"));
				} else {
					subbean.sendMessageString("追加料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 追加料金項目情報.追加料金サービスコード ← 追加料金項目パターンマップ.追加料金項目パターン一覧照会明細.追加料金サービスコード
				if (childMap != null) {
					subbean.sendMessageString("追加料金サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_prc_svc_cd"));
				} else {
					subbean.sendMessageString("追加料金サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 追加料金項目情報.追加料金項目コード ← 追加料金項目パターンマップ.追加料金項目パターン一覧照会明細.追加料金項目コード
				if (childMap != null) {
					subbean.sendMessageString("追加料金項目コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_prc_kmk_cd"));
				} else {
					subbean.sendMessageString("追加料金項目コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 追加料金項目情報.追加料金項目名称 ← 追加料金項目パターンマップ.追加料金項目パターン一覧照会明細.追加料金項目名称
				if (childMap != null) {
					subbean.sendMessageString("追加料金項目名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_prc_kmk_cd_nm"));
				} else {
					subbean.sendMessageString("追加料金項目名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 追加料金項目情報.利用期間表示制御フラグ ← 追加料金項目パターンマップ.追加料金項目パターン一覧照会明細.利用期間表示制御フラグ
				if (childMap != null) {
					subbean.sendMessageString("利用期間表示制御フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_prd_dsp_ctrl_flg"));
				} else {
					subbean.sendMessageString("利用期間表示制御フラグ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}

}