/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：ACSV0029_ACSV0029OPDBMapper
*	ソースファイル名：ACSV0029_ACSV0029OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年08月15日
*＜機能概要＞
*	BP（はぴｅポイント情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/08/15	FJ		新規作成
*	v8.00.00	2014/06/06	FJ		【OM-2014-0001974】ポイント契約審査年月日を「審査年月日」にマッピングする修正と
*                                                      はぴｅ会員退会年月日が2099/12/31のときに表示しない修正
*	v8.00.01	2014/06/07	FJ鈴木	【OM-2014-0002008】郵便番号のハイフン編集をやめる。
*
**********************************************************************/
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.ACW01101SF.ACW01101SFConst;

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

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：はぴｅポイント情報
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV002901SC(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);

		// はぴｅ番号 → はぴeポイント契約一覧マップ.ＫＥＹ＿はぴｅ番号
		parentMap.put("key_hapie_no", bean[0].sendMessageString("はぴｅ番号", X31CWebConst.DATABEAN_GET_VALUE));
		// ｅｏＩＤ → はぴeポイント契約一覧マップ.ＫＥＹ＿ｅｏＩＤ
		parentMap.put("key_eoid", bean[0].sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// ＳＹＳＩＤ → はぴeポイント契約一覧マップ.ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("key_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

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

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：はぴｅポイント情報
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV002902SC(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);

		// はぴｅ番号 → はぴeポイント一覧照会マップ.ＫＥＹ＿はぴｅ番号
		parentMap.put("key_hapie_no", bean[0].sendMessageString("はぴｅ番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV002902SC", parentMap);

		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：はぴｅポイント情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV002901SC(X31SDataBeanAccess[] bean, HashMap outputMap){

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

		ArrayList childList = null;

		X31SDataBeanAccessArray listACSV002901SC_hapie_point_kei_info_EKK0671B501CBSMsg1List = bean[0].getDataBeanArray(ACW01101SFConst.HAPIE_POINT_KEI_INFO);
		childList = null;
		if(listACSV002901SC_hapie_point_kei_info_EKK0671B501CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0671B501CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0671B501CBSMsg1List");
			
			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listACSV002901SC_hapie_point_kei_info_EKK0671B501CBSMsg1List.getCount() -1 >= i){
					subbean = listACSV002901SC_hapie_point_kei_info_EKK0671B501CBSMsg1List.getDataBean(i);
				}else{
					subbean = listACSV002901SC_hapie_point_kei_info_EKK0671B501CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// はぴｅポイント契約情報.はぴｅ番号 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ番号
				if (childMap != null) {
					subbean.sendMessageString("はぴｅ番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_no"));
				} else {
					subbean.sendMessageString("はぴｅ番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.ｅｏＩＤ ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.ｅｏＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
				} else {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.ＳＹＳＩＤ ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.ＳＹＳＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
				} else {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.カード名義 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ会員カード名義
				if (childMap != null) {
					subbean.sendMessageString("カード名義", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_card_nm"));
				} else {
					subbean.sendMessageString("カード名義", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.カード名義カナ ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ会員カード名義カナ名
				if (childMap != null) {
					subbean.sendMessageString("カード名義カナ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_card_nm_kana"));
				} else {
					subbean.sendMessageString("カード名義カナ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.生年月日 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ会員生年月日
				if (childMap != null) {
					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_birthd"));
				} else {
					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.電話番号 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ会員電話番号
				if (childMap != null) {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_telno"));
				} else {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.送付先住所 ← 郵便番号＋住所
				if (childMap != null) {
					StringBuilder sb = new StringBuilder();
					// 郵便番号を追加
					String memberPcd  = (String)childMap.get("hapie_member_pcd");
// 2014.06.07 OM-2014-0002008 mod start
//					if (memberPcd != null && memberPcd.length() > 3)
					if (memberPcd != null)
// 2014.06.07 OM-2014-0002008 mod end
					{
						sb.append("〒");
// 2014.06.07 OM-2014-0002008 mod start
//						sb.append(memberPcd.substring(0, 3)).append("-").append(memberPcd.substring(3, memberPcd.length()));
						// ハイフンありのデータなのでハイフン編集する必要ない
						sb.append(memberPcd);
// 2014.06.07 OM-2014-0002008 mod end
					}
					// 全角スペースを追加
					sb.append(JACStrConst.FULL_SPACE_1);
					// 住所を追加
					String memberAd = (String)childMap.get("hapie_member_ad");
					if (memberAd != null)
					{
						sb.append(memberAd);
					}
					subbean.sendMessageString(ACW01101SFConst.HAPIE_MEMBER_AD_01, X31CWebConst.DATABEAN_SET_VALUE, sb.toString());
				} else {
					subbean.sendMessageString(ACW01101SFConst.HAPIE_MEMBER_AD_01, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅ会員登録年月日 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ会員入会年月日
				if (childMap != null) {
					subbean.sendMessageString("はぴｅ会員登録年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_join_ymd"));
				} else {
					subbean.sendMessageString("はぴｅ会員登録年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅ会員退会年月日 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅ会員退会年月日
				if (childMap != null) {
// 2014.06.06 OM-2014-0001974 mod start
//					subbean.sendMessageString("はぴｅ会員退会年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_taikai_ymd"));
					// 20991231 の場合、空白で表示する
					String taikai_ymd = (String)childMap.get("hapie_member_taikai_ymd");
					if (JACStrConst.MAX_DATE.equals(taikai_ymd)) {
						taikai_ymd = "";
					}
					subbean.sendMessageString("はぴｅ会員退会年月日", X31CWebConst.DATABEAN_SET_VALUE, taikai_ymd);
// 2014.06.06 OM-2014-0001974 mod end
				} else {
					subbean.sendMessageString("はぴｅ会員退会年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
// 2014.06.06 OM-2014-0001974 mod start
//				// はぴｅポイント契約情報.審査年月日 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.ポイント契約審査依頼年月日
				// はぴｅポイント契約情報.審査年月日 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.ポイント契約審査年月日
// 2014.06.06 OM-2014-0001974 mod end
				if (childMap != null) {
// 2014.06.06 OM-2014-0001974 mod start
//					subbean.sendMessageString("審査年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_kei_jdg_req_ymd"));
					subbean.sendMessageString("審査年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_kei_judge_ymd"));
// 2014.06.06 OM-2014-0001974 mod end
				} else {
					subbean.sendMessageString("審査年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.ポイント契約審査結果コード名称
				if (childMap != null) {
					subbean.sendMessageString("審査結果", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_kei_skekka_cd_nm"));
				} else {
					subbean.sendMessageString("審査結果", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果理由 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.ポイント契約審査結果理由コード名称
				if (childMap != null) {
					subbean.sendMessageString("審査結果理由", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_kei_skekka_rsn_cd_nm"));
				} else {
					subbean.sendMessageString("審査結果理由", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅポイント契約ステータス ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅポイント契約ステータス名称
				if (childMap != null) {
					subbean.sendMessageString("はぴｅポイント契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_point_kei_stat_nm"));
				} else {
					subbean.sendMessageString("はぴｅポイント契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅポイント契約番号 ← はぴeポイント契約一覧マップ.はぴｅポイント契約一覧照会明細.はぴｅポイント契約番号
				if (childMap != null) {
					subbean.sendMessageString("はぴｅポイント契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_point_kei_no"));
				} else {
					subbean.sendMessageString("はぴｅポイント契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：はぴｅポイント情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV002902SC(X31SDataBeanAccess[] bean, HashMap outputMap){

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

		ArrayList childList = null;

		X31SDataBeanAccessArray listACSV002902SC_hapie_point_list_EAC0091B010CBSMsg1List = bean[0].getDataBeanArray(ACW01101SFConst.HAPIE_POINT_LIST);
		childList = null;
		if(listACSV002902SC_hapie_point_list_EAC0091B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EAC0091B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EAC0091B010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listACSV002902SC_hapie_point_list_EAC0091B010CBSMsg1List.getCount() -1 >= i){
					subbean = listACSV002902SC_hapie_point_list_EAC0091B010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listACSV002902SC_hapie_point_list_EAC0091B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// はぴｅポイントリスト.はぴｅポイント契約番号 ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.はぴｅポイント契約番号
				if (childMap != null) {
					subbean.sendMessageString("はぴｅポイント契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapiepoint_kei_no"));
				} else {
					subbean.sendMessageString("はぴｅポイント契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイントリスト.ポイント対象月 ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.はぴｅ計算対象年月
				if (childMap != null) {
					subbean.sendMessageString("ポイント対象月", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_calc_tg_ymd"));
				} else {
					subbean.sendMessageString("ポイント対象月", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイントリスト.ポイント対象金額 ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.ポイント対象金額合計
				if (childMap != null) {
					subbean.sendMessageString("ポイント対象金額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_trgt_amnt_gokei"));
				} else {
					subbean.sendMessageString("ポイント対象金額", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイントリスト.計算ポイント ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.計算ポイント数合計
				if (childMap != null) {
					subbean.sendMessageString("計算ポイント", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("calc_point_cnt_gokei"));
				} else {
					subbean.sendMessageString("計算ポイント", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイントリスト.倍付ポイント ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.倍付ポイント数
				if (childMap != null) {
					subbean.sendMessageString("倍付ポイント", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("baizuke_point_cnt"));
				} else {
					subbean.sendMessageString("倍付ポイント", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイントリスト.訂正ポイント ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.訂正ポイント数
				if (childMap != null) {
					subbean.sendMessageString("訂正ポイント", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("teise_point_cnt"));
				} else {
					subbean.sendMessageString("訂正ポイント", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイントリスト.審査結果 ← はぴeポイント一覧照会マップ.はぴeポイント一覧照会明細.ポイント反映結果コード名称
				if (childMap != null) {
					subbean.sendMessageString("審査結果", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_hanei_rslt_nm"));
				} else {
					subbean.sendMessageString("審査結果", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

}