/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0196_FUSV0196OPDBMapper
*	ソースファイル名：FUSV0196_FUSV0196OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年08月27日
*＜機能概要＞
*	BP（エリアリクエスト取消入力チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/08/27	FJ		    新規作成
*	v5.00.00    2013/07/13  FJ）瀧澤    【IT1-2013-0001371】メール宛先修正
*   v7.00       2014/01/27  FJ）中谷    【OM-2014-0000310】メール送信登録の別トランザクション対応
*
**********************************************************************/
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.JFUStrConst;
import eo.web.webview.FUW00401SF.FUW00401SFConst;
import eo.web.webview.common.JFUMskmFinMail;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0196_FUSV0196OPDBMapper
{

	/** CC */
	private static final String FUSV019601CC = "FUSV019601CC";
	
	/** IN項目:検索キー */
	private static final String IN_PARAM_SEARCH_KEY = "search_key";
	
	/**
	 * コンストラクタ
	 */
	public FUSV0196_FUSV0196OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：エリアリクエスト取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV019601CC(X31SDataBeanAccess[] bean, HashMap<String, Object> 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);

		// 検索キー の設定（問合せ客番号orエリアリクエスト番号が設定される）
		parentMap.put(IN_PARAM_SEARCH_KEY, bean[0].sendMessageString(FUW00401SFConst.KEY_PROSCST_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV019601CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：エリアリクエスト取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV019602SC(X31SDataBeanAccess[] bean, HashMap<String, Object> 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("proscst_nm", bean[0].sendMessageString("登録用問合せ客名", X31CWebConst.DATABEAN_GET_VALUE));
		// 登録用問合せ客カナ名 → 問合せ客マップ.問合せ客カナ名
		parentMap.put("proscst_kana", bean[0].sendMessageString("登録用問合せ客カナ名", X31CWebConst.DATABEAN_GET_VALUE));
		// お客様ランクコード → 問合せ客マップ.お客様ランクコード
		parentMap.put("cust_rank_cd", bean[0].sendMessageString("お客様ランクコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 連絡手段コード → 問合せ客マップ.連絡手段コード
		parentMap.put("rrk_way_cd", bean[0].sendMessageString("連絡手段コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 削除対象外フラグ → 問合せ客マップ.削除対象外フラグ
		parentMap.put("del_trgt_gai_flg", bean[0].sendMessageString("削除対象外フラグ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV019602SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：エリアリクエスト取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV019603SC(X31SDataBeanAccess[] bean, HashMap<String, Object> 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("area_req_clre", bean[0].sendMessageString("エリアリクエスト取消理由", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV019603SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：エリアリクエスト取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV019604SC(X31SDataBeanAccess[] bean, HashMap<String, Object> 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("area_req_now_step_cd", bean[0].sendMessageString("エリアリクエスト現在工程コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV019604SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(メール送信)
	 * @param bean　[0]：エリアリクエスト入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV019605SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccessArray arraybean1 = null;
		X31SDataBeanAccessArray arraybean2 = null;
		X31SDataBeanAccess beanTemp = null;
		X31SDataBeanAccess beanTemp1 = null;
		X31SDataBeanAccess beanTemp2 = null;
		ArrayList list = null;
		ArrayList list1 = null;
		ArrayList list2 = null;
		HashMap childMap = null;
		HashMap childMap1 = null;
		HashMap childMap2 = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// お客様向けメールコード → メールコード エリアリクエスト取消メール 
		parentMap.put("mail_cd", JFUStrConst.MAIL_CD_AREA_REQ_DEL);
		// メール送信パターンコード
		parentMap.put("mail_send_pattern_cd", JFUStrConst.CD00789_01);
		
		beanTemp1 = bean[0];
		arraybean1 = beanTemp1.getDataBeanArray(FUW00401SFConst.MLAD_LIST);
		if (parentMap.containsKey("ECC0021D010CBSMsg1List"))
		{
			list1 = (ArrayList)parentMap.get("ECC0021D010CBSMsg1List");
		}
		else
		{
			list1 = new ArrayList();
		}
		if (arraybean1 != null && arraybean1.getCount() > 0)
		{
			for (int i = 0; i < arraybean1.getCount(); i++)
			{
				X31SDataBeanAccess subbean1 = arraybean1.getDataBean(i);

				childMap1 = null;
				if (list1.size() - 1 >= i)
				{
					childMap1 = (HashMap)list1.get(i);
				}
				else
				{
					childMap1 = new HashMap();
				}

				// メール送信先タイプ.送信先メールアドレス →
				// メール送信情報登録マップ.送信先一覧明細.送信先メールアドレス
				if (subbean1 != null)
				{
					childMap1.put("mlad", subbean1.sendMessageString(FUW00401SFConst.MLAD_03, X31CWebConst.DATABEAN_GET_VALUE));
				}

				// メール送信先タイプ.メールアドレス設定フィールドコード →
				// メール送信情報登録マップ.送信先一覧明細.メールアドレス設定フィールドコード
				if (subbean1 != null)
				{
					childMap1.put("mlad_set_field_cd", subbean1.sendMessageString(FUW00401SFConst.MLAD_SET_FIELD_CD_03,
							X31CWebConst.DATABEAN_GET_VALUE));
				}

				list1.add(childMap1);
			}
		}
		parentMap.put("ECC0021D010CBSMsg1List", list1);

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray(FUW00401SFConst.CUST_HTK_MOJI_LIST);
		if (parentMap.containsKey("ECC0021D010CBSMsg2List"))
		{
			list = (ArrayList)parentMap.get("ECC0021D010CBSMsg2List");
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);

				childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// メール本文非定型文字列リスト.本文非定型置換文字 →
				// メール送信情報登録マップ.非定型文字列一覧明細.本文非定型置換文字
				if (subbean != null)
				{
					childMap.put("text_htk_ckam_moji", subbean.sendMessageString(FUW00401SFConst.TEXT_HTK_CKAM_MOJI_02,
							X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put("ECC0021D010CBSMsg2List", list);

		// 空のリスト作成
		ArrayList<HashMap> arrayList = new ArrayList<HashMap>();
		parentMap.put("ECC0021D010CBSMsg3List", arrayList); // 電子ファイル一覧明細

		// 明細本文非定型型置換文字
		beanTemp2 = bean[0];
		arraybean2 = beanTemp2.getDataBeanArray(FUW00401SFConst.MAIL_DETAIL_MOJI_LIST);
		if (parentMap.containsKey("ECC0021D010CBSMsg4List"))
		{
			list2 = (ArrayList)parentMap.get("ECC0021D010CBSMsg4List");
		}
		else
		{
			list2 = new ArrayList();
		}
		if (arraybean2 != null && arraybean2.getCount() > 0)
		{
			for (int i = 0; i < arraybean2.getCount(); i++)
			{
				X31SDataBeanAccess subbean2 = arraybean2.getDataBean(i);
				childMap2 = null;
				if (list2.size() - 1 >= i)
				{
					childMap2 = (HashMap)list2.get(i);
				}
				else
				{
					childMap2 = new HashMap();
				}

				// メール明細非定型文字列リスト.メール明細コード →
				// メール送信情報登録マップ.メール明細非定型文字列リスト.メール明細コード
				if (subbean2 != null)
				{
					childMap2.put("mail_dtl_cd", subbean2.sendMessageString(FUW00401SFConst.MAIL_DTL_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
				}

				// メール明細非定型文字列リスト.明細非定型置換文字 →
				// メール送信情報登録マップ.メール明細非定型文字列リスト.明細非定型置換文字
				if (subbean2 != null)
				{
					childMap2.put("dtl_text_htk_ckam_moji", subbean2.sendMessageString(FUW00401SFConst.TEXT_DETAIL_CKAN_MOJI_04,
							X31CWebConst.DATABEAN_GET_VALUE));
				}

				list2.add(childMap2);
			}
		}
		parentMap.put("ECC0021D010CBSMsg4List", list2);

		// 空のリスト作成
		arrayList = new ArrayList<HashMap>();
		parentMap.put("ECC0021D010CBSMsg5List", arrayList);// メールヘッダー一覧詳細

		outputMap.put(JFUMskmFinMail.FUSV027801CC, parentMap);

		return outputMap;
	}

}