/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKCustInfChgMailSendCC
*	ソースファイル名：JCKCustInfChgMailSendCC.java
*	作成者			：FJ
*	日付			：2012年06月22日
*＜機能概要＞
*	メール送信、メール送信情報登録を行う部品の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/22	FJ			新規作成
*	v4.00.00	2013/04/16	FJ)宇野		【SGY-2013-0000042】対応
*	v7.00.00	2014/02/06	FJ)稲岡		【OM-2014-0000310】対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg2List;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg3List;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg4List;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg5List;
import eo.ejb.cbs.cbsmsg.ECC0121A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECC0121A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1121C011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1121D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;

/**
 * 
 * @author 909488
 *
 */
public class JCKCustInfChgMailSendCC extends AbstractCommonComponent
{
	/**
	 * テンプレートID(ECC0121A010)
	 */
	private static final String TEMPLATE_ID_ECC0121A010 = "ECC0121A010";
	
	/**
	 * テンプレートID(EKK1121C011)
	 */
	private static final String TEMPLATE_ID_EKK1121C011 = "EKK1121C011";
	
	/**
	 * テンプレートID(ECC0021D010)
	 */
	private static final String TEMPLATE_ID_ECC0021D010 = "ECC0021D010";
	
	/**
	 * テンプレートID(EKK1121D010)
	 */
	private static final String TEMPLATE_ID_EKK1121D010 = "EKK1121D010";
	
	/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
	/**
	 * テンプレートID(EZM0321A010)
	 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	
	/** 
	 * 送信元メールアドレス
	 */
	private static final String CK_SENDM_MLAD = "CK_SENDM_MLAD";
	/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
	
	/**
	 * メール送信処理を行います。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execMlSnd(SessionHandle handle, 
												IRequestParameterReadWrite param, 
												String fixedText) throws Exception
	{
		// ◇ 上りマッピング処理
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// ユーザデータ情報
		HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = null;
		IRequestParameterReadWrite retParam = param;
		
		// メールタイトル取得
		paramMap = editInMsg_ECC0121A010CBS(param, dataMap);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, TEMPLATE_ID_ECC0121A010);		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		CAANMsg[] msgList = msg.getCAANMsgList(ECC0121A010CBSMsg.ECC0121A010CBSMSG1LIST);
		CAANMsg dataMsg = msgList[0];
		String mailTitle = dataMsg.getString(ECC0121A010CBSMsg1List.MAIL_TITLE);
		
		// メールID取得
		paramMap = editInMsg_EKK1121C011CBS(param, dataMap);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, TEMPLATE_ID_EKK1121C011);
		templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		msg = templates[0];
		String mailId = msg.getString(EKK1121C011CBSMsg.MAIL_ID);
		
/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		// 業務パラメータより送信元メールアドレスを取得する
		paramMap = editInMsg_EZM0321A010CBS(param, dataMap);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, TEMPLATE_ID_EZM0321A010);
		templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		msg = templates[0];
		CAANMsg[] ezm0321a010msgList = msg.getCAANMsgList(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);
		String mail_value="";
		if(ezm0321a010msgList != null && ezm0321a010msgList.length > 0)
		{
			CAANMsg ezm0321a010msg = ezm0321a010msgList[0];
			
			mail_value = ezm0321a010msg.getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
		
		}
		// 送信元メールアドレスを設定する
		dataMap.put("sendm_mlad", mail_value);
/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// メールタイトル編集
		mailTitle = editMailTitle(mailTitle, mailId);
		
		// ECC0021D010_メール送信情報登録
		paramMap = editInMsg_ECC0021D010CBS(param, dataMap, mailTitle);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, TEMPLATE_ID_ECC0021D010);
		templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		msg = templates[0];
		String sendNo = msg.getString(ECC0021D010CBSMsg.MAIL_SEND_NO);
		String sendStat = msg.getString(ECC0021D010CBSMsg.MAIL_SEND_STAT);
		String mailText = msg.getString(ECC0021D010CBSMsg.MAIL_TEXT);
		
		// EKK1121D010_メール情報登録
		paramMap = editInMsg_EKK1121D010CBS(param, dataMap, mailId, sendNo, sendStat, mailTitle, mailText);
		result = scCall.run(paramMap, handle);
		retParam = editOutMsg(result, param, dataMap, TEMPLATE_ID_EKK1121D010);
		
		return retParam;
	}
	
	/**
	 * 
	 * @param param
	 * @param inMap
	 * @param mailId
	 * @param mailSndNo
	 * @param mailSndStat
	 * @param mailTitle
	 * @param mailText
	 * 
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK1121D010CBS(IRequestParameterReadWrite param,
																HashMap<String, Object> inMap,
																String mailId,
																String mailSndNo,
																String mailSndStat,
																String mailTitle,
																String mailText) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK1121D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK1121D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1121D010);
		// 機能コード（デフォルト：１）
		template.set(EKK1121D010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		// 機能コード
		template.set(EKK1121D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// メールID
		template.set(EKK1121D010CBSMsg.MAIL_ID, mailId);
		// メール送信番号
		template.set(EKK1121D010CBSMsg.MAIL_SEND_NO, mailSndNo);
		// SYSID
		if ("".equals(inMap.get("sysid")))
		{
			template.setNull(EKK1121D010CBSMsg.SYSID);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.SYSID, (String)inMap.get("sysid"));
		}
		// メール送信年月日時分秒
		if ("".equals(inMap.get("mail_send_dtm")))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_SEND_DTM);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_DTM, (String)inMap.get("mail_send_dtm"));
		}
		// メール送信ステータスを元にメール送信状態コードを設定
		if ("".equals(mailSndStat))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD);
		}
		else if ("001".equals(mailSndStat))
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD, "0");
		}
		else if ("002".equals(mailSndStat))
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD, "1");
		}
		else if ("003".equals(mailSndStat) || "004".equals(mailSndStat))
		{
			template.set(EKK1121D010CBSMsg.MAIL_SEND_STAT_CD, "2");
		}
		// 送信先メールアドレス
		if ("".equals(inMap.get("sends_mlad")))
		{
			template.setNull(EKK1121D010CBSMsg.SENDS_MLAD);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.SENDS_MLAD, (String)inMap.get("sends_mlad"));
		}
		// メールタイトル
		template.set(EKK1121D010CBSMsg.MAIL_TITLE, mailTitle);
		// メール本文
		template.set(EKK1121D010CBSMsg.MAIL_TEXT, mailText);
		// メールコード
		if ("".equals(inMap.get("key_mail_cd")))
		{
			template.setNull(EKK1121D010CBSMsg.MAIL_CD);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.MAIL_CD, (String)inMap.get("key_mail_cd"));
		}
		// eoID
		if ("".equals(inMap.get("eoid")))
		{
			template.setNull(EKK1121D010CBSMsg.EOID);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.EOID, (String)inMap.get("eoid"));
		}
		// 送信先契約者カナ名
		if ("".equals(inMap.get("sends_ksh_kana")))
		{
			template.setNull(EKK1121D010CBSMsg.SENDS_KSH_KANA);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.SENDS_KSH_KANA, (String)inMap.get("sends_ksh_kana"));
		}
		// コンテンツサービスコード
		if ("".equals(inMap.get("cont_svc_cd")))
		{
			template.setNull(EKK1121D010CBSMsg.CONT_SVC_CD);
		}
		else
		{
			template.set(EKK1121D010CBSMsg.CONT_SVC_CD, (String)inMap.get("cont_svc_cd"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param inMap
	 * 
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_ECC0121A010CBS(IRequestParameterReadWrite param,
																HashMap<String, Object> inMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(ECC0121A010CBSMsg.class.getName());

		// テンプレートID
		template.set(ECC0121A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1121C011);
		// 機能コード
		template.set(ECC0121A010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// ＫＥＹ＿メールコード
		if (inMap.get("key_mail_cd") == null || "".equals(inMap.get("key_mail_cd")))
		{
			template.setNull(ECC0121A010CBSMsg.KEY_MAIL_CD);
		}
		else
		{
			template.set(ECC0121A010CBSMsg.KEY_MAIL_CD, (String)inMap.get("key_mail_cd"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param inMap
	 * 
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK1121C011CBS(IRequestParameterReadWrite param,
																HashMap<String, Object> inMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK1121C011CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK1121C011CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1121C011);
		// 機能コード
		template.set(EKK1121C011CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// メールID採番区分
		if ("".equals(inMap.get("mail_id_kbn")))
		{
			template.setNull(EKK1121C011CBSMsg.MAIL_ID_KBN);
		}
		else
		{
			template.set(EKK1121C011CBSMsg.MAIL_ID_KBN, (String)inMap.get("mail_id_kbn"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param inMap
	 * @param mailTitle
	 * 
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_ECC0021D010CBS(IRequestParameterReadWrite param,
																HashMap<String, Object> inMap,
																String mailTitle) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(ECC0021D010CBSMsg.class.getName());

		// テンプレートID
		template.set(ECC0021D010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECC0021D010);
		// 機能コード
		template.set(ECC0021D010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// メールコード
		if ("".equals(inMap.get("key_mail_cd")))
		{
			template.setNull(ECC0021D010CBSMsg.MAIL_CD);
		}
		else
		{
			template.set(ECC0021D010CBSMsg.MAIL_CD, (String)inMap.get("key_mail_cd"));
		}
		// 送信予定年月日時分秒
		if ("".equals(inMap.get("mail_send_rsv_dtm")))
		{
			template.setNull(ECC0021D010CBSMsg.MAIL_SEND_RSV_DTM);
		}
		else
		{
			template.set(ECC0021D010CBSMsg.MAIL_SEND_RSV_DTM, (String)inMap.get("mail_send_rsv_dtm"));
		}
		// 送信元メールアドレス
		if ("".equals(inMap.get("sendm_mlad")))
		{
			template.setNull(ECC0021D010CBSMsg.SENDM_MLAD);
		}
		else
		{
			template.set(ECC0021D010CBSMsg.SENDM_MLAD, (String)inMap.get("sendm_mlad"));
		}
		// 送信元メールアドレス表示名
		if ("".equals(inMap.get("sendm_mlad_dsp_nm")))
		{
			template.setNull(ECC0021D010CBSMsg.SENDM_MLAD_DSP_NM);
		}
		else
		{
			template.set(ECC0021D010CBSMsg.SENDM_MLAD_DSP_NM, (String)inMap.get("sendm_mlad_dsp_nm"));
		}
		// メール送信パターンコード
		if ("".equals(inMap.get("mail_send_pattern_cd")))
		{
			template.setNull(ECC0021D010CBSMsg.MAIL_SEND_PATTERN_CD);
		}
		else
		{
			template.set(ECC0021D010CBSMsg.MAIL_SEND_PATTERN_CD, (String)inMap.get("mail_send_pattern_cd"));
		}

		ArrayList inList = (ArrayList)inMap.get("ECC0021D010CBSMsg1List");
		CAANMsg[] templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST);
		if (templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}

		if (inList != null)
		{
			for (int i = 0; i < inList.size(); i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				
				CAANMsg childTemplate = templateArray[i];
				if (childTemplate == null)
				{
					childTemplate = new CAANMsg(ECC0021D010CBSMsg1List.class.getName());
				}
				
				// 送信先一覧明細.送信先メールアドレス → 送信先一覧明細.送信先メールアドレス
				if ("".equals(childMap.get("mlad")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg1List.MLAD);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg1List.MLAD, (String)childMap.get("mlad"));
				}
				// 送信先一覧明細.送信先メールアドレス表示名 → 送信先一覧明細.送信先メールアドレス表示名
				if ("".equals(childMap.get("mlad_dsp_nm")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg1List.MLAD_DSP_NM);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg1List.MLAD_DSP_NM, (String)childMap.get("mlad_dsp_nm"));
				}
				// 送信先一覧明細.メールアドレス設定フィールドコード → 送信先一覧明細.メールアドレス設定フィールドコード
				if ("".equals(childMap.get("mlad_set_field_cd")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg1List.MLAD_SET_FIELD_CD);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg1List.MLAD_SET_FIELD_CD, (String)childMap.get("mlad_set_field_cd"));
				}
				
				templateArray[i] = childTemplate;
			}
		}
		template.set(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST, templateArray);

		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg2List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST);
		if (templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}

		if (inList != null)
		{
			for (int i = 0; i < inList.size(); i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				
				CAANMsg childTemplate = templateArray[i];
				if (childTemplate == null)
				{
					childTemplate = new CAANMsg(ECC0021D010CBSMsg2List.class.getName());
				}
				
				// 非定型文字列一覧明細.本文非定型置換文字 → 非定型文字列一覧明細.本文非定型置換文字
				if ("".equals(childMap.get("text_htk_ckam_moji")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, (String)childMap.get("text_htk_ckam_moji"));
				}
				
				templateArray[i] = childTemplate;
			}
		}
		template.set(ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST, templateArray);

		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg3List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST);
		if (templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}

		if (inList != null)
		{
			for (int i = 0; i < inList.size(); i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				
				CAANMsg childTemplate = templateArray[i];
				if (childTemplate == null)
				{
					childTemplate = new CAANMsg(ECC0021D010CBSMsg3List.class.getName());
				}
				
				// 電子ファイル一覧明細.電子ファイル管理番号 → 電子ファイル一覧明細.電子ファイル管理番号
				if ("".equals(childMap.get("efile_kanri_no")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg3List.EFILE_KANRI_NO);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg3List.EFILE_KANRI_NO, (String)childMap.get("efile_kanri_no"));
				}
				// 電子ファイル一覧明細.ファイル名 → 電子ファイル一覧明細.ファイル名
				if ("".equals(childMap.get("file_nm")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg3List.FILE_NM);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg3List.FILE_NM, (String)childMap.get("file_nm"));
				}

				templateArray[i] = childTemplate;
			}
		}
		template.set(ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST, templateArray);

		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg4List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST);
		if (templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}

		if (inList != null)
		{
			for (int i = 0; i < inList.size(); i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				
				CAANMsg childTemplate = templateArray[i];
				if (childTemplate == null)
				{
					childTemplate = new CAANMsg(ECC0021D010CBSMsg4List.class.getName());
				}
				// メール明細一覧明細.メール明細コード → メール明細一覧明細.メール明細コード
				if ("".equals(childMap.get("mail_dtl_cd")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg4List.MAIL_DTL_CD);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg4List.MAIL_DTL_CD, (String)childMap.get("mail_dtl_cd"));
				}
				// メール明細一覧明細.明細本文非定型置換文字 → メール明細一覧明細.明細本文非定型置換文字
				if ("".equals(childMap.get("dtl_text_htk_ckam_moji")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg4List.DTL_TEXT_HTK_CKAM_MOJI);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg4List.DTL_TEXT_HTK_CKAM_MOJI, (String)childMap.get("dtl_text_htk_ckam_moji"));
				}
				
				templateArray[i] = childTemplate;
			}
		}
		template.set(ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST, templateArray);

//		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg5List");
		inList = new ArrayList();
		
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST);

		// 編集部分追加
		HashMap map = new HashMap();
		
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		// メールヘッダー一覧明細.メールヘッダーキー
		map.put("mail_header_key", "Reply-To");
		// メールヘッダー一覧明細.メールヘッダー値
		map.put("mail_header_value", inMap.get("sendm_mlad"));
		inList.add(map);
		
		map = new HashMap();
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		
		// メールヘッダー一覧明細.メールヘッダーキー
		map.put("mail_header_key", "subject");
		// メールヘッダー一覧明細.メールヘッダー値
		map.put("mail_header_value", mailTitle);
		
		inList.add(map);
		inMap.put("ECC0021D010CBSMsg5List", inList);
		
		if (templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}
		
		if (inList != null)
		{
			for (int i = 0; i < inList.size(); i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				
				CAANMsg childTemplate = templateArray[i];
				if (childTemplate == null)
				{
					childTemplate = new CAANMsg(ECC0021D010CBSMsg5List.class.getName());
				}
				
				// メールヘッダー一覧明細.メールヘッダーキー → メールヘッダー一覧明細.メールヘッダーキー
				if ("".equals(childMap.get("mail_header_key")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg5List.MAIL_HEADER_KEY);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg5List.MAIL_HEADER_KEY, (String)childMap.get("mail_header_key"));
				}
				// メールヘッダー一覧明細.メールヘッダー値 → メールヘッダー一覧明細.メールヘッダー値
				if ("".equals(childMap.get("mail_header_value")))
				{
					childTemplate.setNull(ECC0021D010CBSMsg5List.MAIL_HEADER_VALUE);
				}
				else
				{
					childTemplate.set(ECC0021D010CBSMsg5List.MAIL_HEADER_VALUE, (String)childMap.get("mail_header_value"));
				}
				
				templateArray[i] = childTemplate;
			}
		}
		template.set(ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST, templateArray);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		return paramMap;
	}
	
	/**
	 * 
	 * @param result
	 * @param param
	 * @param dataMap
	 * @param templateKey
	 * 
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg(Map<?, ?> result,
													IRequestParameterReadWrite param,
													HashMap<String, Object> dataMap,
													String templateKey) throws Exception
	
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		
		// 下り項目の転記
		CAANMsg template = templates[0];
		Map workMap = param.getMappingWorkArea();
		
		int templateStatus = 0;
		String updDtmBf = "";
		String[][] keyList = new String[0][0];
		
		if (TEMPLATE_ID_EKK1121D010.equals(templateKey))
		{
			templateStatus = template.getInt(EKK1121D010CBSMsg.STATUS);
			keyList = this.getErrKeyListEKK1121D010();
		}
		else if (TEMPLATE_ID_ECC0021D010.equals(templateKey))
		{
			templateStatus = template.getInt(ECC0021D010CBSMsg.STATUS);
		}
		else if (TEMPLATE_ID_EKK1121C011.equals(templateKey))
		{
			templateStatus = template.getInt(EKK1121C011CBSMsg.STATUS);
			keyList = this.getErrKeyListEKK1121C011();
		}
		else if (TEMPLATE_ID_ECC0121A010.equals(templateKey))
		{
			templateStatus = template.getInt(ECC0121A010CBSMsg.STATUS);
			keyList = this.getErrKeyListECC0121A010();
		}
		else if (TEMPLATE_ID_EZM0321A010.equals(templateKey))
		{
			templateStatus = template.getInt(EZM0321A010CBSMsg.STATUS);
			keyList = this.getErrKeyListEZM0321A010();
		}
		
		workMap.put("upd_dtm_bf", updDtmBf);
		
		// エラー情報の設定
		if ((Integer)return_code != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		// エラーの返却
		if (TEMPLATE_ID_ECC0021D010.equals(templateKey))
		{
			getErrKeyListECC0021D010(template, dataMap);
		}
		else
		{
			for (int i = 0; i < keyList.length; i++)
			{
				if (!template.isNull(keyList[i][0]))
				{
					if (!dataMap.containsKey(keyList[i][1]))
					{
						dataMap.put(keyList[i][1], template.getString(keyList[i][0]));
					}
				}
			}
		}
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		
		return param;
	}
	
	/**
	 * 
	 * @return String[][]
	 */
	private String[][] getErrKeyListEKK1121D010()
	{
		// メールＩＤ、メール送信番号、ＳＹＳＩＤ、メール送信年月日時分秒、メール送信状態コード、送信先メールアドレス
		// メールタイトル、メール本文、メールコード、ｅｏＩＤ、送信先契約者カナ名、コンテンツサービスコード
		String[][] keyList = {
			{EKK1121D010CBSMsg.MAIL_ID_ERR, "mail_id_err"},
			{EKK1121D010CBSMsg.MAIL_SEND_NO_ERR, "mail_send_no_err"},
			{EKK1121D010CBSMsg.SYSID_ERR, "sysid_err"},
			{EKK1121D010CBSMsg.MAIL_SEND_DTM_ERR, "mail_send_dtm_err"},
			{EKK1121D010CBSMsg.MAIL_SEND_STAT_CD_ERR, "mail_send_stat_cd_err"},
			{EKK1121D010CBSMsg.SENDS_MLAD_ERR, "sends_mlad_err"},
			{EKK1121D010CBSMsg.MAIL_TITLE_ERR, "mail_title_err"},
			{EKK1121D010CBSMsg.MAIL_TEXT_ERR, "mail_text_err"},
			{EKK1121D010CBSMsg.MAIL_CD_ERR, "mail_cd_err"},
			{EKK1121D010CBSMsg.EOID_ERR, "eoid_err"},
			{EKK1121D010CBSMsg.SENDS_KSH_KANA_ERR, "sends_ksh_kana_err"},
			{EKK1121D010CBSMsg.CONT_SVC_CD_ERR, "cont_svc_cd_err"}
		};
		
		return keyList;
	}
	
	/**
	 * 
	 * @return String[][]
	 */
	private String[][] getErrKeyListECC0121A010()
	{
		// ＫＥＹ＿メールコード
		String[][] keyList = {{ECC0121A010CBSMsg.KEY_MAIL_CD_ERR, "key_mail_cd_err"}};
		
		return keyList;
	}
	
	/**
	 * 
	 * @return String[][]
	 */
	private String[][] getErrKeyListEKK1121C011()
	{
		// メールＩＤ採番区分
		String[][] keyList = {{EKK1121C011CBSMsg.MAIL_ID_KBN_ERR, "mail_id_kbn_err"}};
		
		return keyList;
	}
	
	/**
	 * 
	 * @param template
	 * @param inMap
	 */
	@SuppressWarnings("unchecked")
	private void getErrKeyListECC0021D010(CAANMsg template, HashMap<String, Object> inMap)
	{
		// メール送信情報登録SC.メールコード → メールコード のエラー情報返却
		if (!template.isNull(ECC0021D010CBSMsg.MAIL_CD_ERR))
		{
			if (!inMap.containsKey("mail_cd_err"))
			{
				inMap.put("mail_cd_err", template.getString(ECC0021D010CBSMsg.MAIL_CD_ERR));
			}
		}
		// メール送信情報登録SC.送信予定年月日時分秒 → 送信予定年月日時分秒 のエラー情報返却
		if (!template.isNull(ECC0021D010CBSMsg.MAIL_SEND_RSV_DTM_ERR))
		{
			if (!inMap.containsKey("mail_send_rsv_dtm_err"))
			{
				inMap.put("mail_send_rsv_dtm_err", template.getString(ECC0021D010CBSMsg.MAIL_SEND_RSV_DTM_ERR));
			}
		}
		// メール送信情報登録SC.送信元メールアドレス → 送信元メールアドレス のエラー情報返却
		if (!template.isNull(ECC0021D010CBSMsg.SENDM_MLAD_ERR))
		{
			if (!inMap.containsKey("sendm_mlad_err"))
			{
				inMap.put("sendm_mlad_err", template.getString(ECC0021D010CBSMsg.SENDM_MLAD_ERR));
			}
		}
		// メール送信情報登録SC.送信元メールアドレス表示名 → 送信元メールアドレス表示名 のエラー情報返却
		if (!template.isNull(ECC0021D010CBSMsg.SENDM_MLAD_DSP_NM_ERR))
		{
			if (!inMap.containsKey("sendm_mlad_dsp_nm_err"))
			{
				inMap.put("sendm_mlad_dsp_nm_err", template.getString(ECC0021D010CBSMsg.SENDM_MLAD_DSP_NM_ERR));
			}
		}
		// メール送信情報登録SC.メール送信パターンコード → メール送信パターンコード のエラー情報返却
		if (!template.isNull(ECC0021D010CBSMsg.MAIL_SEND_PATTERN_CD_ERR))
		{
			if (!inMap.containsKey("mail_send_pattern_cd_err"))
			{
				inMap.put("mail_send_pattern_cd_err", template.getString(ECC0021D010CBSMsg.MAIL_SEND_PATTERN_CD_ERR));
			}
		}
		
		ArrayList inList = (ArrayList)inMap.get("ECC0021D010CBSMsg1List");
		CAANMsg[] templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// メール送信情報登録SC.送信先一覧明細.送信先メールアドレス → 送信先一覧明細.送信先メールアドレス のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg1List.MLAD_ERR))
				{
					if (!childMap.containsKey("mlad_err"))
					{
						childMap.put("mlad_err", childTemplate.getString(ECC0021D010CBSMsg1List.MLAD_ERR));
					}
				}
				// メール送信情報登録SC.送信先一覧明細.送信先メールアドレス表示名 → 送信先一覧明細.送信先メールアドレス表示名 のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg1List.MLAD_DSP_NM_ERR))
				{
					if (!childMap.containsKey("mlad_dsp_nm_err"))
					{
						childMap.put("mlad_dsp_nm_err", childTemplate.getString(ECC0021D010CBSMsg1List.MLAD_DSP_NM_ERR));
					}
				}
				// メール送信情報登録SC.送信先一覧明細.メールアドレス設定フィールドコード → 送信先一覧明細.メールアドレス設定フィールドコード のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg1List.MLAD_SET_FIELD_CD_ERR))
				{
					if (!childMap.containsKey("mlad_set_field_cd_err"))
					{
						childMap.put("mlad_set_field_cd_err", childTemplate.getString(ECC0021D010CBSMsg1List.MLAD_SET_FIELD_CD_ERR));
					}
				}
			}
		}
		if (!template.isNull(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST_ERR))
		{
			if (!inMap.containsKey("ECC0021D010CBSMsg1List_err"))
			{
				inMap.put("ECC0021D010CBSMsg1List_err", template.getString(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST_ERR));
			}
		}
		
		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg2List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// メール送信情報登録SC.非定型文字列一覧明細.本文非定型置換文字 → 非定型文字列一覧明細.本文非定型置換文字 のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI_ERR))
				{
					if (!childMap.containsKey("text_htk_ckam_moji_err"))
					{
						childMap.put("text_htk_ckam_moji_err", childTemplate.getString(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI_ERR));
					}
				}
			}
		}
		if (!template.isNull(ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST_ERR))
		{
			if (!inMap.containsKey("ECC0021D010CBSMsg2List_err"))
			{
				inMap.put("ECC0021D010CBSMsg2List_err", template.getString(ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST_ERR));
			}
		}
		
		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg3List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// メール送信情報登録SC.電子ファイル一覧明細.電子ファイル管理番号 → 電子ファイル一覧明細.電子ファイル管理番号 のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg3List.EFILE_KANRI_NO_ERR))
				{
					if (!childMap.containsKey("efile_kanri_no_err"))
					{
						childMap.put("efile_kanri_no_err", childTemplate.getString(ECC0021D010CBSMsg3List.EFILE_KANRI_NO_ERR));
					}
				}
				// メール送信情報登録SC.電子ファイル一覧明細.ファイル名 → 電子ファイル一覧明細.ファイル名 のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg3List.FILE_NM_ERR))
				{
					if (!childMap.containsKey("file_nm_err"))
					{
						childMap.put("file_nm_err", childTemplate.getString(ECC0021D010CBSMsg3List.FILE_NM_ERR));
					}
				}
			}
		}
		if (!template.isNull(ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST_ERR))
		{
			if (!inMap.containsKey("ECC0021D010CBSMsg3List_err"))
			{
				inMap.put("ECC0021D010CBSMsg3List_err", template.getString(ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST_ERR));
			}
		}
		
		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg4List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// メール送信情報登録SC.メール明細一覧明細.メール明細コード → メール明細一覧明細.メール明細コード のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg4List.MAIL_DTL_CD_ERR))
				{
					if (!childMap.containsKey("mail_dtl_cd_err"))
					{
						childMap.put("mail_dtl_cd_err", childTemplate.getString(ECC0021D010CBSMsg4List.MAIL_DTL_CD_ERR));
					}
				}
				// メール送信情報登録SC.メール明細一覧明細.明細本文非定型置換文字 → メール明細一覧明細.明細本文非定型置換文字 のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg4List.DTL_TEXT_HTK_CKAM_MOJI_ERR))
				{
					if (!childMap.containsKey("dtl_text_htk_ckam_moji_err"))
					{
						childMap.put("dtl_text_htk_ckam_moji_err", childTemplate.getString(ECC0021D010CBSMsg4List.DTL_TEXT_HTK_CKAM_MOJI_ERR));
					}
				}
			}
		}
		if (!template.isNull(ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST_ERR))
		{
			if (!inMap.containsKey("ECC0021D010CBSMsg4List_err"))
			{
				inMap.put("ECC0021D010CBSMsg4List_err", template.getString(ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST_ERR));
			}
		}
		
		inList = (ArrayList)inMap.get("ECC0021D010CBSMsg5List");
		templateArray = template.getCAANMsgList(ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST);
		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				HashMap childMap = (HashMap)inList.get(i);
				CAANMsg childTemplate = templateArray[i];
				
				// メール送信情報登録SC.メールヘッダー一覧明細.メールヘッダーキー → メールヘッダー一覧明細.メールヘッダーキー のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg5List.MAIL_HEADER_KEY_ERR))
				{
					if (!childMap.containsKey("mail_header_key_err"))
					{
						childMap.put("mail_header_key_err", childTemplate.getString(ECC0021D010CBSMsg5List.MAIL_HEADER_KEY_ERR));
					}
				}
				// メール送信情報登録SC.メールヘッダー一覧明細.メールヘッダー値 → メールヘッダー一覧明細.メールヘッダー値 のエラー情報返却
				if (!childTemplate.isNull(ECC0021D010CBSMsg5List.MAIL_HEADER_VALUE_ERR))
				{
					if (!childMap.containsKey("mail_header_value_err"))
					{
						childMap.put("mail_header_value_err", childTemplate.getString(ECC0021D010CBSMsg5List.MAIL_HEADER_VALUE_ERR));
					}
				}
			}
		}
		if (!template.isNull(ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST_ERR))
		{
			if (!inMap.containsKey("ECC0021D010CBSMsg5List_err"))
			{
				inMap.put("ECC0021D010CBSMsg5List_err", template.getString(ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST_ERR));
			}
		}
	}
	
	/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
	/**
	 * 
	 * @param param
	 * @param inMap
	 * 
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EZM0321A010CBS(IRequestParameterReadWrite param,
																HashMap<String, Object> inMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EZM0321A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010);
		// 機能コード
		template.set(EZM0321A010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// ＫＥＹ＿業務パラメータＩＤ
		template.set(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, CK_SENDM_MLAD);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @return String[][]
	 */
	private String[][] getErrKeyListEZM0321A010()
	{
		// ＫＥＹ＿業務パラメータＩＤ
		String[][] keyList = {{EZM0321A010CBSMsg.KEY_WORK_PARAM_ID_ERR, "key_work_param_id_err"}};
		
		return keyList;
	}
	/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
	
	/**
	 * メールタイトルの編集をします。
	 * 
	 * @param titleNm
	 * @param mailId
	 * @return String
	 */
	private String editMailTitle(String titleNm, String mailId)
	{
		StringBuilder title = new StringBuilder();
		
		title.append(titleNm);
		title.append("(MID=");
		title.append(mailId);
		title.append("_01)");
		
		return title.toString();
	}
}
