/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0622_KKSV0622OPDBMapper
*	ソースファイル名：KKSV0622_KKSV0622OPDBMapper.java
*	作成者			：富士通
*	日付			：2012年08月27日
*＜機能概要＞
*	BP（はぴe審査情報補正対象一覧取得処理）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/08/27	富士通		新規作成
*	v4.01.00	2012/11/28	富士通		IT1-2012-0002236対応
*	v8.00.00	2014/06/12  FJ) 西面	【OM-2014-0001984 】属性チェック解除対応
*	v11.00.00	2014/10/09	FJ) 西面	ANK-2306-09-00
**********************************************************************/
package eo.web.webview.mapping;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
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.common.util.JPCUtilCommon;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0622_KKSV0622OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0622_KKSV0622OPDBMapper(){
	}
	
	// ▼表示形式の編集のため手動での修正 [Start]
	// はぴｅ会員退会日（スキーマ項目：サービス終了年月日）のデフォルト日付
	private static final String SVC_ENDYMD_DEFAULT = "20991231";
	// ▲表示形式の編集のため手動での修正 [End]
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：はぴｅ審査情報補正対象一覧
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setHapiePointKeiIcrnReSearchForRsvCC(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ポイント契約情報一覧再検索CC.選択はぴeポイント契約番号
		parentMap.put("hapie_point_kei_no_choice", bean[0].sendMessageString("選択はぴｅポイント契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 部品呼び出し → はぴeポイント契約情報一覧再検索CC.検索処理パターン
		parentMap.put("search_type", String.valueOf(JPCModelConstant.SAERCH_TYPE_BBN));
		// 部品呼び出し → はぴeポイント契約情報一覧再検索CC.最大検索件数
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW14101_MAX_SHOW_CNT"));
		// 部品呼び出し → はぴeポイント契約情報一覧再検索CC.表示件数
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW14101_ROW_PER_PAGE"));
		// 検索条件＿はぴｅ番号 → はぴeポイント契約情報一覧再検索CC.ＫＥＹ＿はぴｅ番号
		parentMap.put("key_hapie_no", bean[0].sendMessageString("検索条件＿はぴｅ番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 検索条件＿ｅｏＩＤ → はぴeポイント契約情報一覧再検索CC.ＫＥＹ＿ｅｏＩＤ
		parentMap.put("key_eoid", bean[0].sendMessageString("検索条件＿ｅｏＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 検索条件＿ＳＹＳＩＤ → はぴeポイント契約情報一覧再検索CC.ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("key_sysid", bean[0].sendMessageString("検索条件＿ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 検索条件＿処理対象年月 → はぴeポイント契約情報一覧再検索CC.ＫＥＹ＿処理対象年月
		parentMap.put("key_trn_tg_ym", bean[0].sendMessageString("検索条件＿処理対象年月", X31CWebConst.DATABEAN_GET_VALUE));
		// 検索条件＿処理対象時期 → はぴeポイント契約情報一覧再検索CC.ＫＥＹ＿処理対象時期
		parentMap.put("key_trn_tg_jk", bean[0].sendMessageString("検索条件＿処理対象時期", X31CWebConst.DATABEAN_GET_VALUE));
//11.00.00 2014/10/09 Add Start
		// 検索条件＿お客さまＩＤ → はぴeポイント契約情報一覧再検索CC.ＫＥＹ＿お客さまＩＤ
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("検索条件＿お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
//11.00.00 2014/10/09 Add End
		outputMap.put("HapiePointKeiIcrnReSearchForRsvCC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：はぴｅ審査情報補正対象一覧
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getHapiePointKeiIcrnReSearchForRsvCC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("HapiePointKeiIcrnReSearchForRsvCC")){
			parentMap = (HashMap)outputMap.get("HapiePointKeiIcrnReSearchForRsvCC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listHapiePointKeiIcrnReSearchForRsvCC_hapie_point_kei_search_rslt_EKK0671B001CBSMsg1List = bean[0].getDataBeanArray("はぴｅポイント契約情報");
		childList = null;
		if(listHapiePointKeiIcrnReSearchForRsvCC_hapie_point_kei_search_rslt_EKK0671B001CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0671B001CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0671B001CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listHapiePointKeiIcrnReSearchForRsvCC_hapie_point_kei_search_rslt_EKK0671B001CBSMsg1List.getCount() -1 >= i){
					subbean = listHapiePointKeiIcrnReSearchForRsvCC_hapie_point_kei_search_rslt_EKK0671B001CBSMsg1List.getDataBean(i);
				}else{
					subbean = listHapiePointKeiIcrnReSearchForRsvCC_hapie_point_kei_search_rslt_EKK0671B001CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
//▽2012-11-13 IT1-2012-000 Start（各項目のトリム実施・ハイフン処理除去）
				// はぴｅポイント契約情報.はぴｅ番号 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅ番号
				if (childMap != null) {
					subbean.sendMessageString("はぴｅ番号", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_no")));
				} else {
					subbean.sendMessageString("はぴｅ番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅポイント契約ステータス ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅポイント契約ステータス
				if (childMap != null) {
					subbean.sendMessageString("はぴｅポイント契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_point_kei_stat")));
				} else {
					subbean.sendMessageString("はぴｅポイント契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅポイント契約ステータス名称 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅポイント契約ステータス名称
				if (childMap != null) {
					subbean.sendMessageString("はぴｅポイント契約ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_point_kei_stat_nm")));
				} else {
					subbean.sendMessageString("はぴｅポイント契約ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査依頼時指定ＩＤ ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅポイント契約審査依頼時指定ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("審査依頼時指定ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapiek_jdg_req_ji_sti_id")));
				} else {
					subbean.sendMessageString("審査依頼時指定ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.ｅｏＩＤ ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ｅｏＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("eoid")));
				} else {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.ＳＹＳＩＤ ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ＳＹＳＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("sysid")));
				} else {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.カード名義 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅ会員カード名義
				if (childMap != null) {
					subbean.sendMessageString("カード名義", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_member_card_nm")));
				} else {
					subbean.sendMessageString("カード名義", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.生年月日 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅ会員生年月日
				if (childMap != null) {
					// ▼表示形式の編集のため手動での修正 [Start]
//					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_member_birthd"));
					String birthd = (String)childMap.get("hapie_member_birthd");
					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, dateFormatYYYYMMDD(birthd));
					// ▲表示形式の編集のため手動での修正 [End]
				} else {
					subbean.sendMessageString("生年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.電話番号 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅ会員電話番号
				if (childMap != null) {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_member_telno")));
				} else {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.郵便番号 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅ会員郵便番号
				if (childMap != null) {
					subbean.sendMessageString("郵便番号", X31CWebConst.DATABEAN_SET_VALUE,  JPCUtilCommon.Rtrim((String)childMap.get("hapie_member_pcd")));
				} else {
					subbean.sendMessageString("郵便番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.住所 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅ会員住所
				if (childMap != null) {
					subbean.sendMessageString("住所", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_member_ad")));
				} else {
					subbean.sendMessageString("住所", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果補正日 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅポイント契約補正年月日
				if (childMap != null) {
					// ▼表示形式の編集のため手動での修正 [Start]
//					subbean.sendMessageString("審査結果補正日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapie_point_kei_hosei_ymd"));
					String hoseiymd = (String)childMap.get("hapie_point_kei_hosei_ymd");
					subbean.sendMessageString("審査結果補正日", X31CWebConst.DATABEAN_SET_VALUE, dateFormatYYYYMMDD(hoseiymd));
					// ▲表示形式の編集のため手動での修正 [End]
				} else {
					subbean.sendMessageString("審査結果補正日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果送信日 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ポイント契約審査結果送信年月日
				if (childMap != null) {
					// ▼表示形式の編集のため手動での修正 [Start]
//					subbean.sendMessageString("審査結果送信日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_kei_skekka_snd_ymd"));
					String sndymd = (String)childMap.get("point_kei_skekka_snd_ymd");
					subbean.sendMessageString("審査結果送信日", X31CWebConst.DATABEAN_SET_VALUE, dateFormatYYYYMMDD(sndymd));
					// ▲表示形式の編集のため手動での修正 [End]
				} else {
					subbean.sendMessageString("審査結果送信日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果コード ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ポイント契約審査結果コード
				if (childMap != null) {
					subbean.sendMessageString("審査結果コード", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("point_kei_skekka_cd")));
				} else {
					subbean.sendMessageString("審査結果コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果コード名称 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ポイント契約審査結果コード名称
				if (childMap != null) {
					subbean.sendMessageString("審査結果コード名称", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("point_kei_skekka_cd_nm")));
				} else {
					subbean.sendMessageString("審査結果コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果理由コード ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ポイント契約審査結果理由コード
				if (childMap != null) {
					subbean.sendMessageString("審査結果理由コード", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("point_kei_skekka_rsn_cd")));
				} else {
					subbean.sendMessageString("審査結果理由コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査結果理由コード名称 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ポイント契約審査結果理由コード名称
				if (childMap != null) {
					subbean.sendMessageString("審査結果理由コード名称", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("point_kei_skekka_rsn_cd_nm")));
				} else {
					subbean.sendMessageString("審査結果理由コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅポイント契約番号 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴｅポイント契約番号
				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());
				}
				// はぴｅポイント契約情報.はぴｅ会員入会日 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.サービス開始年月日
				if (childMap != null) {
					// ▼表示形式の編集のため手動での修正 [Start]
//					subbean.sendMessageString("はぴｅ会員入会日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_staymd"));
					String joinymd = (String)childMap.get("svc_staymd");
					subbean.sendMessageString("はぴｅ会員入会日", X31CWebConst.DATABEAN_SET_VALUE, dateFormatYYYYMMDD(joinymd));
					// ▲表示形式の編集のため手動での修正 [End]
				} else {
					subbean.sendMessageString("はぴｅ会員入会日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.はぴｅ会員退会日 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.サービス終了年月日
				if (childMap != null) {
					// ▼表示形式の編集のため手動での修正 [Start]
//					subbean.sendMessageString("はぴｅ会員退会日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_endymd"));
					String taikaiymd = (String)childMap.get("svc_endymd");
					if(SVC_ENDYMD_DEFAULT.equals(taikaiymd))
					{
						taikaiymd = "";
					}
					subbean.sendMessageString("はぴｅ会員退会日", X31CWebConst.DATABEAN_SET_VALUE, dateFormatYYYYMMDD(taikaiymd));
					// ▲表示形式の編集のため手動での修正 [End]
				} else {
					subbean.sendMessageString("はぴｅ会員退会日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.審査日 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.ポイント契約審査年月日
				if (childMap != null) {
					// ▼表示形式の編集のため手動での修正 [Start]
//					subbean.sendMessageString("審査日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("point_kei_judge_ymd"));
					String judgeymd = (String)childMap.get("point_kei_judge_ymd");
					subbean.sendMessageString("審査日", X31CWebConst.DATABEAN_SET_VALUE, dateFormatYYYYMMDD(judgeymd));
					// ▲表示形式の編集のため手動での修正 [End]
				} else {
					subbean.sendMessageString("審査日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.カード名義カナ ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴe会員カード名義カナ名
				if (childMap != null) {
					subbean.sendMessageString("カード名義カナ", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapie_member_card_nm_kana")));
				} else {
					subbean.sendMessageString("カード名義カナ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.補正情報メモ ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.はぴeポイント契約補足備考
				if (childMap != null) {
					subbean.sendMessageString("補正情報メモ", X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.Rtrim((String)childMap.get("hapiepoint_kei_hsk_biko")));
				} else {
					subbean.sendMessageString("補正情報メモ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// はぴｅポイント契約情報.更新年月日時分秒 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.更新年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
				} else {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//v11.00.00 2014/10/09 Add Start
				// はぴｅポイント契約情報.対応履歴 ← はぴeポイント契約情報一覧再検索CC.はぴｅポイント契約一覧照会明細.対応履歴
				if (childMap != null) {
					subbean.sendMessageString("対応履歴", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hapiepoint_kei_chg_memo"));
				} else {
					subbean.sendMessageString("対応履歴", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//v11.00.00 2014/10/09 Add End
//△2012-11-13 IT1-2012-000 End
			}
		}


		return bean;
	}

// ▼表示形式の編集のため手動での修正 [Start]
	/**
	 * "YYYY/MM/DD" 形式に変換する
	 * @param value
	 * @return
	 */
	private String dateFormatYYYYMMDD(String value) {
		
		value = JPCUtilCommon.Rtrim(value);
		
		String formatstring = "";
		if(value != null && value.length() == 8) {
			// 日付の形式を設定
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
			
			StringBuffer sb_value = new StringBuffer(value);
			Calendar cal = Calendar.getInstance();
//v8.00.00 Mod Start
//			cal.set(Integer.parseInt(sb_value.substring(0, 4)), Integer.parseInt(sb_value.substring(4, 6))-1, Integer.parseInt(sb_value.substring(6)));
			try {
				cal.set(Integer.parseInt(sb_value.substring(0, 4)), Integer.parseInt(sb_value.substring(4, 6))-1, Integer.parseInt(sb_value.substring(6)));
			} catch (NumberFormatException e) {
				return value;
			}
//v8.00.00 Mod End
			// 指定の形式に変換した日付を返却する
			formatstring = sdf.format(cal.getTime());
		}
		return formatstring;
	}
// ▲表示形式の編集のため手動での修正 [End]
}