/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CKSV0039_CKSV0039OPDBMapper
*	ソースファイル名：CKSV0039_CKSV0039OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年03月12日
*＜機能概要＞
*	BP（お客様グループ変更初期表示サービス）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/12	Fujitsu		新規作成
*	v4.00.00	2012/11/16	FJ）庭山	【IT1-2012-0002097】対応
*
**********************************************************************/
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.JCKStrConst;
import eo.common.util.JPCUtilCommon;
import eo.common.util.JZMCommonUtil;
import eo.web.webview.CKW02502SF.CKW02502SFConst;
import eo.web.webview.common.JCKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CKSV0039_CKSV0039OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CKSV0039_CKSV0039OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV003901SC(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);

		outputMap.put("CKSV003901SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV003902SC(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);

		// グループコード → グループ取得SCマップ.ＫＥＹ＿グループコード
		parentMap.put("key_grp_cd", bean[0].sendMessageString("グループコード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV003902SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV003903SC(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("1"));
		parentMap.put("display_num", String.valueOf("2000"));
		parentMap.put("max_search_num", String.valueOf("10000"));

		// お客様グループ設定一覧取得SCマップ.ＫＥＹ＿ソート項目Ｎｏ
		parentMap.put("key_sort_item_no", "1");
		// お客様グループ設定一覧取得SCマップ.ＫＥＹ＿ソート区分
		parentMap.put("key_sort_kbn", "1");
		// グループコード → お客様グループ設定一覧取得SCマップ.ＫＥＹ＿グループコード
		parentMap.put("key_grp_cd", bean[0].sendMessageString("グループコード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV003903SC", parentMap);
						
		return outputMap;
	}
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV003903SC_displayPageNum(X31SDataBeanAccess[] bean, HashMap outputMap, HashMap pageMap) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		HashMap<String, Object> pageInfo = (HashMap<String, Object>)pageMap.get("pageInfo");
		HashMap<String, Object> parentMap = (HashMap<String, Object>)outputMap.get("CKSV003903SC");

		// ページング情報の設定
		parentMap.put("display_page_num", pageInfo.get("display_page_num"));

		outputMap.put("CKSV003903SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV0039WORK(X31SDataBeanAccess[] bean, HashMap outputMap) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// モード → お客様グループ変更初期表示作業用マップ.モード
		parentMap.put("mode", bean[0].sendMessageString("モード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV0039WORK", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV003901SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV003901SC")){
			parentMap = (HashMap)outputMap.get("CKSV003901SC");
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listCKSV003901SC_grp_sbt_cd_ECK0191B001CBSMsg1List = bean[0].getDataBeanArray("グループ種別コード");
		childList = null;
		if(listCKSV003901SC_grp_sbt_cd_ECK0191B001CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECK0191B001CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECK0191B001CBSMsg1List");
			// コードタイプのBeanを取得
			X31SDataBeanAccess subbean = null;
			subbean = listCKSV003901SC_grp_sbt_cd_ECK0191B001CBSMsg1List.getDataBean(0);
			if (subbean == null) {
				return bean;
			}
			
			int index = 0;
			for(int i = 0; i < childList.size(); i++){
				
				//データが存在する場合、空行追加
				if (i == 0)
				{
					subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}

				HashMap childMap = (HashMap)childList.get(i);
				
				// ファミリーのコードは設定しない
				if (JCKStrConst.GRP_SBT_CD_FAMILY.equals((String)childMap.get("grp_sbt_cd")))
				{
					continue;
				}
				
				index++;
				
				// グループ種別コード.コードタイプコード値リスト ← グループ種別取得SCマップ.グループ種別一覧照会明細.グループ種別コード
				if (childMap != null) {
					subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("grp_sbt_cd"));
				} else {
					subbean.sendMessageString("コードタイプコード値リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				// グループ種別コード.コードタイプ名称リスト ← グループ種別取得SCマップ.グループ種別一覧照会明細.グループ種別名
				if (childMap != null) {
					subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, index + "." + (String)childMap.get("grp_sbt_nm"));
				} else {
					subbean.sendMessageString("コードタイプ名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
				
			}
			// 初期選択は未選択（選択候補の先頭行）とする。
			subbean.sendMessageString(CKW02502SFConst.SELECT_INDEX_01, "0");
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV003902SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV003902SC")){
			parentMap = (HashMap)outputMap.get("CKSV003902SC");
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listCKSV003902SC_grp_sbt_cd_ECK0111A010CBSMsg1List = bean[0].getDataBeanArray("グループ種別コード");
		childList = null;
		if(listCKSV003902SC_grp_sbt_cd_ECK0111A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECK0111A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECK0111A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listCKSV003902SC_grp_sbt_cd_ECK0111A010CBSMsg1List.getCount() -1 >= i){
					subbean = listCKSV003902SC_grp_sbt_cd_ECK0111A010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listCKSV003902SC_grp_sbt_cd_ECK0111A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// グループ種別コード.コードタイプコード ← グループ取得SCマップ.グループ一意照会明細.グループ種別コード
				if (childMap != null) {
					subbean.sendMessageString("コードタイプコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_sbt_cd"));
				} else {
					subbean.sendMessageString("コードタイプコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// グループ種別コード.コードタイプ名称 ← グループ取得SCマップ.グループ一意照会明細.グループ種別コード名称
				if (childMap != null) {
					subbean.sendMessageString("コードタイプ名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_sbt_cd_nm"));
				} else {
					subbean.sendMessageString("コードタイプ名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// グループ種別コード.選択インデックス
				if (childMap != null) {
					String index = JCKWebCommon.getPullDownIndex(bean[0], (String)childMap.get("grp_sbt_cd"), "グループ種別コード", CKW02502SFConst.CD_DIV_CD_LIST_01);
					subbean.sendMessageString(CKW02502SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, index);
				}

				// グループコード
				bean[0].sendMessageString(CKW02502SFConst.GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_cd"));
				// グループ名
				bean[0].sendMessageString(CKW02502SFConst.GRP_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_nm"));
				bean[0].sendMessageString(CKW02502SFConst.GRP_NM_BF, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_nm"));
				// グループリーダーSYSID
				bean[0].sendMessageString(CKW02502SFConst.GRP_LEADER_SYSID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_leader_sysid"));
				bean[0].sendMessageString(CKW02502SFConst.GRP_LEADER_SYSID_BF, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_leader_sysid"));
				// グループ入会コード
				bean[0].sendMessageString(CKW02502SFConst.GRP_JOIN_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_join_cd"));
				bean[0].sendMessageString(CKW02502SFConst.GRP_JOIN_CD_BF, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_join_cd"));
				// グループ入会コードパスワード
				bean[0].sendMessageString(CKW02502SFConst.GRP_JOIN_CD_PWD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_join_cd_pwd"));
				bean[0].sendMessageString(CKW02502SFConst.GRP_JOIN_CD_PWD_BF, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_join_cd_pwd"));
				bean[0].sendMessageString(CKW02502SFConst.DISP_GRP_JOIN_CD_PWD, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.forMaskMarc((String)childMap.get("grp_join_cd_pwd"), "*"));
				// 初期グループ入会コード
				bean[0].sendMessageString(CKW02502SFConst.SHK_GRP_JOIN_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shk_grp_join_cd"));
				// 初期グループ入会コードパスワード
				bean[0].sendMessageString(CKW02502SFConst.SHK_GRP_JOIN_CD_PWD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shk_grp_join_cd_pwd"));
				bean[0].sendMessageString(CKW02502SFConst.DISP_SHK_GRP_JOIN_CD_PWD, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.forMaskMarc((String)childMap.get("shk_grp_join_cd_pwd"), "*"));
				// グループ適用開始年月日
				bean[0].sendMessageString(CKW02502SFConst.GRP_TSTA_YMD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_tstaymd"));
				// グループ適用終了年月日
				bean[0].sendMessageString(CKW02502SFConst.GRP_TEND_YMD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_tendymd"));
				// 更新前更新年月日時分秒
				bean[0].sendMessageString(CKW02502SFConst.UPD_DTM_BF, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("last_upd_dtm"));
				
			}
			
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様グループ変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV003903SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV003903SC")){
			parentMap = (HashMap)outputMap.get("CKSV003903SC");
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listCKSV003903SC_cust_grp_list_ECK0121B004CBSMsg1List = bean[0].getDataBeanArray("お客様グループ設定情報");
		childList = null;
		if(listCKSV003903SC_cust_grp_list_ECK0121B004CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECK0121B004CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECK0121B004CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listCKSV003903SC_cust_grp_list_ECK0121B004CBSMsg1List.getCount() -1 >= i){
					subbean = listCKSV003903SC_cust_grp_list_ECK0121B004CBSMsg1List.getDataBean(i);
				}else{
					subbean = listCKSV003903SC_cust_grp_list_ECK0121B004CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// お客様グループ設定情報.お客様グループ設定番号 ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.お客様グループ設定番号
				if (childMap != null) {
					subbean.sendMessageString("お客様グループ設定番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_grp_sette_no"));
				} else {
					subbean.sendMessageString("お客様グループ設定番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.お客様グループ設定有効年月日 ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.グループ割引適用承認年月日
				if (childMap != null) {
					subbean.sendMessageString("お客様グループ設定有効年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_wrib_aply_shonin_ymd"));
					subbean.sendMessageString("変更前お客様グループ設定有効年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_wrib_aply_shonin_ymd"));
				} else {
					subbean.sendMessageString("お客様グループ設定有効年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.お客様グループ設定無効年月日 ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.お客様グループ設定無効年月日
				if (childMap != null) {
					if(!"20991231".equals((String)childMap.get("cust_grp_sette_mk_ymd")))
					{
						// グループ一覧情報.グループ適用終了年月日 ← お客様グループ一覧照会取得CCマップ.グループ一覧照会明細.グループ適用終了年月日
						subbean.sendMessageString("お客様グループ設定無効年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_grp_sette_mk_ymd"));
					}
					subbean.sendMessageString("変更前お客様グループ設定無効年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_grp_sette_mk_ymd"));
				} else {
					subbean.sendMessageString("お客様グループ設定無効年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.ＳＹＳＩＤ ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.ＳＹＳＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
				} else {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.ｅｏＩＤ ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.ｅｏＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
				} else {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.氏名 ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.お客様名
				if (childMap != null) {
					subbean.sendMessageString("氏名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
				} else {
					subbean.sendMessageString("氏名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.更新前更新年月日時分秒 ← お客様グループ設定一覧取得SCマップ.お客様グループ設定一覧照会（お客様情報取得）明細.最終更新年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("更新前更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("last_upd_dtm"));
				} else {
					subbean.sendMessageString("更新前更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// お客様グループ設定情報.住所
				String adInfo = "";
				if (childMap != null) {
					adInfo = 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"));
				}
				subbean.sendMessageString(CKW02502SFConst.KEISYA_AD_02, X31CWebConst.DATABEAN_SET_VALUE, adInfo);
			}
			
		}

		return bean;
	}

}
