/*******************************************************************************
* All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
* システム名        ：eo顧客基幹システム
* モジュール名      ：JACUpdPrcEventBusidayCC
* ソースファイル名  ：JACUpdPrcEventBusidayCC.java
* 作成者            ：富士通
* 日付              ：2012年09月12日
*＜機能概要＞
* 料金スケジュール定義・営業日管理更新共通コンポーネント部品
*＜修正履歴＞
* バージョン    修正日      修正者      修正内容
* ｖ4.00.00     2012/09/12  FJ
*
********************************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
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.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ECH0501D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0501E010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0291D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0291E010CBSMsg;

/**
 * 料金スケジュール定義・営業日管理更新コモンコンポーネント部品.<br>
 * 
 * @author user
 *
 */
public class JACUpdPrcEventBusidayCC extends AbstractCommonComponent
{

	/**
	 * テンプレートID（マスメン料金スケジュール定義削除）
	 */
	private static final String TEMPLATE_ID_ECH0501E010 = "ECH0501E010";

	/**
	 * テンプレートID（マスメン料金スケジュール定義登録）
	 */
	private static final String TEMPLATE_ID_ECH0501D010 = "ECH0501D010";

	/**
	 * テンプレートID（マスメン営業日管理削除）
	 */
	private static final String TEMPLATE_ID_EZM0291E010 = "EZM0291E010";

	/**
	 * テンプレートID（マスメン営業日管理登録）
	 */
	private static final String TEMPLATE_ID_EZM0291D010 = "EZM0291D010";

	/**
	 * マップCCID
	 */
	private static final String MAP_CC_ID = "JACUPDPRCEVENTBUSIDAYCC";

	/**
	/**
	 * 料金スケジュール定義・営業日管理更新 チェック処理.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException RequestParameterException
	 */
	public  HashMap<String, Object> getInvokeCBS(SessionHandle handle
			, IRequestParameterReadWrite param, String fixedText) throws Exception 
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);
		
		HashMap<String, Object> resultMap = null;
		CAANMsg[] templates = null;
		List<CAANMsg> list = new ArrayList<CAANMsg>();
		
		// 入力データ情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(MAP_CC_ID);

		String funcCode = JPCModelConstant.FUNC_CD_1;
		if (inMap != null)
		{
			// 機能コード
			funcCode = (String) inMap.get(JCMConstants.FUNC_CODE_KEY);
		}

		// マスメン料金スケジュール定義削除リスト分繰り返す
		ArrayList<HashMap<String, Object>> ECH0501E010List = (ArrayList<HashMap<String, Object>>)inMap.get("ECH0501E010CBSMsgList");
		if (ECH0501E010List != null)
		{
			for (HashMap<String, Object> ECH0501E010Map : ECH0501E010List)
			{
				//マスメン料金スケジュール定義削除の実行
				resultMap = editInMsg_ECH0501E010(param, ECH0501E010Map, funcCode);
				templates = (CAANMsg[])resultMap.get(JCMConstants.TEMPLATE_LIST_KEY);
				list.addAll(Arrays.asList(templates));
			}
		}

		// マスメン料金スケジュール定義登録リスト分繰り返す
		ArrayList<HashMap<String, Object>> ECH0501D010List = (ArrayList<HashMap<String, Object>>)inMap.get("ECH0501D010CBSMsgList");
		if (ECH0501D010List != null)
		{
			for (HashMap<String, Object> ECH0501D010Map : ECH0501D010List)
			{
				//マスメン料金スケジュール定義登録の実行
				resultMap = editInMsg_ECH0501D010(param, ECH0501D010Map, funcCode);
				templates = (CAANMsg[])resultMap.get(JCMConstants.TEMPLATE_LIST_KEY);
				list.addAll(Arrays.asList(templates));
			}
		}
		
		// マスメン営業日管理削除リスト分繰り返す
		ArrayList<HashMap<String, Object>> EZM0291E010List = (ArrayList<HashMap<String, Object>>)inMap.get("EZM0291E010CBSMsgList");
		if (EZM0291E010List != null)
		{
			for (HashMap<String, Object> EZM0291E010Map : EZM0291E010List)
			{
				//マスメン営業日管理削除の実行
				resultMap = editInMsg_EZM0291E010(param, EZM0291E010Map, funcCode);
				templates = (CAANMsg[])resultMap.get(JCMConstants.TEMPLATE_LIST_KEY);
				list.addAll(Arrays.asList(templates));
			}
		}
		
		// マスメン営業日管理登録リスト分繰り返す
		ArrayList<HashMap<String, Object>> EZM0291D010List = (ArrayList<HashMap<String, Object>>)inMap.get("EZM0291D010CBSMsgList");
		if (EZM0291D010List != null)
		{
			for (HashMap<String, Object> EZM0291D010Map : EZM0291D010List)
			{
				//マスメン営業日管理登録マップの実行
				resultMap = editInMsg_EZM0291D010(param, EZM0291D010Map, funcCode);
				templates = (CAANMsg[])resultMap.get(JCMConstants.TEMPLATE_LIST_KEY);
				list.addAll(Arrays.asList(templates));
			}
		}

		if (list != null && list.size() > 0)
		{
			templates = list.toArray(new CAANMsg[list.size()]);
			paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		}

		return paramMap;
	}

	/**
	 * <p>
	 * 料金スケジュール定義・営業日管理更新処理
	 * </p>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得I/F
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite updPrcEventBusiday(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// SC実行結果を格納するマップ
		Map<?, ?> result = null;

		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 入力データ情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(MAP_CC_ID);
		editInData(param, inMap);

		String funcCode = JPCModelConstant.FUNC_CD_1;
		if (inMap != null)
		{
			// 機能コード
			funcCode = (String) inMap.get(JCMConstants.FUNC_CODE_KEY);
		}

		// マスメン料金スケジュール定義削除リスト分繰り返す
		ArrayList<HashMap<String, Object>> ECH0501E010List = (ArrayList<HashMap<String, Object>>)inMap.get("ECH0501E010CBSMsgList");
		if (ECH0501E010List != null)
		{
			for (HashMap<String, Object> ECH0501E010Map : ECH0501E010List)
			{
				//マスメン料金スケジュール定義削除の実行
				paramMap = editInMsg_ECH0501E010(param, ECH0501E010Map, funcCode);
				result = scCall.run(paramMap, handle);
				editOutMsg_ECH0501E010(result, param, ECH0501E010Map);
			}
		}

		// マスメン料金スケジュール定義登録リスト分繰り返す
		ArrayList<HashMap<String, Object>> ECH0501D010List = (ArrayList<HashMap<String, Object>>)inMap.get("ECH0501D010CBSMsgList");
		if (ECH0501D010List != null)
		{
			for (HashMap<String, Object> ECH0501D010Map : ECH0501D010List)
			{
				//マスメン料金スケジュール定義登録の実行
				paramMap = editInMsg_ECH0501D010(param, ECH0501D010Map, funcCode);
				result = scCall.run(paramMap, handle);
				editOutMsg_ECH0501D010(result, param, ECH0501D010Map);
			}
		}
		
		// マスメン営業日管理削除リスト分繰り返す
		ArrayList<HashMap<String, Object>> EZM0291E010List = (ArrayList<HashMap<String, Object>>)inMap.get("EZM0291E010CBSMsgList");
		if (EZM0291E010List != null)
		{
			for (HashMap<String, Object> EZM0291E010Map : EZM0291E010List)
			{
				//マスメン営業日管理削除の実行
				paramMap = editInMsg_EZM0291E010(param, EZM0291E010Map, funcCode);
				result = scCall.run(paramMap, handle);
				editOutMsg_EZM0291E010(result, param, EZM0291E010Map);
			}
		}
		
		// マスメン営業日管理登録リスト分繰り返す
		ArrayList<HashMap<String, Object>> EZM0291D010List = (ArrayList<HashMap<String, Object>>)inMap.get("EZM0291D010CBSMsgList");
		if (EZM0291D010List != null)
		{
			for (HashMap<String, Object> EZM0291D010Map : EZM0291D010List)
			{
				//マスメン営業日管理登録マップの実行
				paramMap = editInMsg_EZM0291D010(param, EZM0291D010Map, funcCode);
				result = scCall.run(paramMap, handle);
				editOutMsg_EZM0291D010(result, param, EZM0291D010Map);
			}
		}

		// 結果を返却する。
		return param;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * 
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @throws RequestParameterException
	 * @return パラメータオブジェクト
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
																							throws RequestParameterException
	{
		if (templates == null || templates.length == 0)
		{
			return param;
		}

		// 入力データ情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(MAP_CC_ID);

		ArrayList<HashMap<String, Object>> ECH0501E010List = (ArrayList<HashMap<String, Object>>)inMap.get("ECH0501E010CBSMsgList");
		ArrayList<HashMap<String, Object>> ECH0501D010List = (ArrayList<HashMap<String, Object>>)inMap.get("ECH0501D010CBSMsgList");
		ArrayList<HashMap<String, Object>> EZM0291E010List = (ArrayList<HashMap<String, Object>>)inMap.get("EZM0291E010CBSMsgList");
		ArrayList<HashMap<String, Object>> EZM0291D010List = (ArrayList<HashMap<String, Object>>)inMap.get("EZM0291D010CBSMsgList");
		int idx_ECH0501E010 = 0;
		int idx_ECH0501D010 = 0;
		int idx_EZM0291E010 = 0;
		int idx_EZM0291D010 = 0;

		for (CAANMsg template : templates) {
			if (ECH0501E010CBSMsg.class.getName().equals(template.getSchemaName()))
			{
				editErrorInfo_ECH0501E010(param, ECH0501E010List.get(idx_ECH0501E010++), templates, returnCode);
			}
			else if (ECH0501D010CBSMsg.class.getName().equals(template.getSchemaName()))
			{
				editErrorInfo_ECH0501D010(param, ECH0501D010List.get(idx_ECH0501D010++), templates, returnCode);
			}
			else if (EZM0291E010CBSMsg.class.getName().equals(template.getSchemaName()))
			{
				editErrorInfo_EZM0291E010(param, EZM0291E010List.get(idx_EZM0291E010++), templates, returnCode);
			}
			else if (EZM0291D010CBSMsg.class.getName().equals(template.getSchemaName()))
			{
				editErrorInfo_EZM0291D010(param, EZM0291D010List.get(idx_EZM0291D010++), templates, returnCode);
			}
		}

		return param;
	
	}
	
	/**
	 * サービスIF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param inMap 入力情報
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_ECH0501E010(IRequestParameterReadWrite param, 
																	HashMap<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(ECH0501E010CBSMsg.STATUS);
		if (returnCode != 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.isNull(ECH0501E010CBSMsg.EVENT_CD_ERR))
		{
			if (!inMap.containsKey("event_cd_err"))
			{
				inMap.put("event_cd_err", template.getString(ECH0501E010CBSMsg.EVENT_CD_ERR));
			}
		}

		// マスメン料金スケジュール定義削除.イベント年月日 → イベント年月日 のエラー情報返却
		if (!template.isNull(ECH0501E010CBSMsg.EVENT_YMD_ERR))
		{
			if (!inMap.containsKey("event_ymd_err"))
			{
				inMap.put("event_ymd_err", template.getString(ECH0501E010CBSMsg.EVENT_YMD_ERR));
			}
		}
		
		// マスメン料金スケジュール定義削除.更新前更新年月日 → 更新前更新年月日 のエラー情報返却
		if (!template.isNull(ECH0501E010CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(ECH0501E010CBSMsg.UPD_DTM_BF_ERR));
			}
		}

		return param;
	}
	
	/**
	 * サービスIF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param inMap 入力情報
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_ECH0501D010(IRequestParameterReadWrite param, 
																	HashMap<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(ECH0501D010CBSMsg.STATUS);
		if (returnCode != 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.isNull(ECH0501D010CBSMsg.EVENT_CD_ERR))
		{
			if (!inMap.containsKey("event_cd_err"))
			{
				inMap.put("event_cd_err", template.getString(ECH0501D010CBSMsg.EVENT_CD_ERR));
			}
		}

		// マスメン料金スケジュール定義登録.イベント年月日 → イベント年月日 のエラー情報返却
		if (!template.isNull(ECH0501D010CBSMsg.EVENT_YMD_ERR))
		{
			if (!inMap.containsKey("event_ymd_err"))
			{
				inMap.put("event_ymd_err", template.getString(ECH0501D010CBSMsg.EVENT_YMD_ERR));
			}
		}

		// マスメン料金スケジュール定義登録.請求年月 → 請求年月 のエラー情報返却
		if (!template.isNull(ECH0501D010CBSMsg.SEIKY_YM_ERR))
		{
			if (!inMap.containsKey("seiky_ym_err"))
			{
				inMap.put("seiky_ym_err", template.getString(ECH0501D010CBSMsg.SEIKY_YM_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * サービスIF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param inMap 入力情報
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EZM0291E010(IRequestParameterReadWrite param, 
																	HashMap<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EZM0291E010CBSMsg.STATUS);
		if (returnCode != 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.isNull(EZM0291E010CBSMsg.TRGT_YMD_ERR))
		{
			if (!inMap.containsKey("trgt_ymd_err"))
			{
				inMap.put("trgt_ymd_err", template.getString(EZM0291E010CBSMsg.TRGT_YMD_ERR));
			}
		}
		
		// マスメン営業日管理削除.更新前更新年月日 → 更新前更新年月日 のエラー情報返却
		if (!template.isNull(EZM0291E010CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EZM0291E010CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * サービスIF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param inMap 入力情報
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EZM0291D010(IRequestParameterReadWrite param, 
																	HashMap<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EZM0291D010CBSMsg.STATUS);
		if (returnCode != 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.isNull(EZM0291D010CBSMsg.TRGT_YMD_ERR))
		{
			if (!inMap.containsKey("trgt_ymd_err"))
			{
				inMap.put("trgt_ymd_err", template.getString(EZM0291D010CBSMsg.TRGT_YMD_ERR));
			}
		}

		// マスメン営業日管理登録.営業日フラグ → 営業日フラグ のエラー情報返却
		if (!template.isNull(EZM0291D010CBSMsg.BUSIDAY_FLG_ERR))
		{
			if (!inMap.containsKey("busiday_flg_err"))
			{
				inMap.put("busiday_flg_err", template.getString(EZM0291D010CBSMsg.BUSIDAY_FLG_ERR));
			}
		}

		// マスメン営業日管理登録.祝日フラグ → 祝日フラグ のエラー情報返却
		if (!template.isNull(EZM0291D010CBSMsg.HOLIDAY_FLG_ERR))
		{
			if (!inMap.containsKey("holiday_flg_err"))
			{
				inMap.put("holiday_flg_err", template.getString(EZM0291D010CBSMsg.HOLIDAY_FLG_ERR));
			}
		}
		
		return param;
	}

	/**
	 * 共通領域の設定
	 * 
	 * @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;
	}

	/**
	 * マスメン料金スケジュール定義削除用メッセージ設定処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_ECH0501E010(IRequestParameterReadWrite param, HashMap<String, Object> inMap, String funcCode) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(ECH0501E010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(ECH0501E010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECH0501E010);

		// 機能コード
		template.set(ECH0501E010CBSMsg.FUNC_CODE, funcCode);

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		// マスメン料金スケジュール定義削除.イベントコード → イベントコード
		if (nullOrEmpty(inMap.get("event_cd")))
		{
			template.setNull(ECH0501E010CBSMsg.EVENT_CD);
		}
		else
		{
			template.set(ECH0501E010CBSMsg.EVENT_CD, (String)inMap.get("event_cd"));
		}

		// マスメン料金スケジュール定義削除.イベント年月日 → イベント年月日
		if (nullOrEmpty(inMap.get("event_ymd")))
		{
			template.setNull(ECH0501E010CBSMsg.EVENT_YMD);
		}
		else
		{
			template.set(ECH0501E010CBSMsg.EVENT_YMD, (String)inMap.get("event_ymd"));
		}

		// マスメン料金スケジュール定義削除.更新前更新年月日時分秒 → 更新前更新年月日時分秒
		if (nullOrEmpty(inMap.get("upd_dtm_bf")))
		{
			template.setNull(ECH0501E010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(ECH0501E010CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * マスメン料金スケジュール定義登録用メッセージ設定処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_ECH0501D010(IRequestParameterReadWrite param, HashMap<String, Object> inMap, String funcCode) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(ECH0501D010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(ECH0501D010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECH0501D010);

		// 機能コード
		template.set(ECH0501D010CBSMsg.FUNC_CODE, funcCode);

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		// マスメン料金スケジュール定義登録.イベントコード → イベントコード
		if (nullOrEmpty(inMap.get("event_cd")))
		{
			template.setNull(ECH0501D010CBSMsg.EVENT_CD);
		}
		else
		{
			template.set(ECH0501D010CBSMsg.EVENT_CD, (String)inMap.get("event_cd"));
		}

		// マスメン料金スケジュール定義登録.イベント年月日 → イベント年月日
		if (nullOrEmpty(inMap.get("event_ymd")))
		{
			template.setNull(ECH0501D010CBSMsg.EVENT_YMD);
		}
		else
		{
			template.set(ECH0501D010CBSMsg.EVENT_YMD, (String)inMap.get("event_ymd"));
		}

		// マスメン料金スケジュール定義登録.請求年月 → 請求年月
		if (nullOrEmpty(inMap.get("seiky_ym")))
		{
			template.setNull(ECH0501D010CBSMsg.SEIKY_YM);
		}
		else
		{
			template.set(ECH0501D010CBSMsg.SEIKY_YM, (String)inMap.get("seiky_ym"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * マスメン営業日管理削除用メッセージ設定処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EZM0291E010(IRequestParameterReadWrite param, HashMap<String, Object> inMap, String funcCode) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EZM0291E010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EZM0291E010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0291E010);

		// 機能コード
		template.set(EZM0291E010CBSMsg.FUNC_CODE, funcCode);

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		// マスメン営業日管理削除.対象年月日 → 対象年月日
		if (nullOrEmpty(inMap.get("trgt_ymd")))
		{
			template.setNull(EZM0291E010CBSMsg.TRGT_YMD);
		}
		else
		{
			template.set(EZM0291E010CBSMsg.TRGT_YMD, (String)inMap.get("trgt_ymd"));
		}

		// マスメン営業日管理削除.更新前更新年月日時分秒 → 更新前更新年月日時分秒
		if (nullOrEmpty(inMap.get("upd_dtm_bf")))
		{
			template.setNull(EZM0291E010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EZM0291E010CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * マスメン営業日管理登録用メッセージ設定処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EZM0291D010(IRequestParameterReadWrite param, HashMap<String, Object> inMap, String funcCode) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EZM0291D010CBSMsg.class.getName());
		
		// テンプレートID
		template.set(EZM0291D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0291D010);

		// 機能コード
		template.set(EZM0291D010CBSMsg.FUNC_CODE, funcCode);

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		// マスメン営業日管理登録.対象年月日 → 対象年月日
		if (nullOrEmpty(inMap.get("trgt_ymd")))
		{
			template.setNull(EZM0291D010CBSMsg.TRGT_YMD);
		}
		else
		{
			template.set(EZM0291D010CBSMsg.TRGT_YMD, (String)inMap.get("trgt_ymd"));
		}

		// マスメン営業日管理登録.営業日フラグ → 営業日フラグ
		if (nullOrEmpty(inMap.get("busiday_flg")))
		{
			template.setNull(EZM0291D010CBSMsg.BUSIDAY_FLG);
		}
		else
		{
			template.set(EZM0291D010CBSMsg.BUSIDAY_FLG, (String)inMap.get("busiday_flg"));
		}

		// マスメン営業日管理登録.祝日フラグ → 祝日フラグ
		if (nullOrEmpty(inMap.get("holiday_flg")))
		{
			template.setNull(EZM0291D010CBSMsg.HOLIDAY_FLG);
		}
		else
		{
			template.set(EZM0291D010CBSMsg.HOLIDAY_FLG, (String)inMap.get("holiday_flg"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * マスメン料金スケジュール定義削除用メッセージ取得処理.<br>
	 * 
	 * @param msgList
	 * @param param
	 * @param dataMap
	 * 
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_ECH0501E010(Map<?, ?> msgList,
																		IRequestParameterReadWrite param,
																		HashMap<String, Object> dataMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// エラー情報の設定
		IRequestParameterReadWrite retParam = editErrorInfo_ECH0501E010(param, dataMap, templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定 */
		//取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		String status = (String)param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == Integer.parseInt(status))) 
		{
			SCCallException scCallEx = new SCCallException("INVALID_RETURN_MESSAGE", rtnCode, Integer.parseInt(status));
			throw scCallEx;
		}

		return param;
	}

	/**
	 * マスメン料金スケジュール定義登録用メッセージ取得処理.<br>
	 * 
	 * @param msgList
	 * @param param
	 * @param dataMap
	 * 
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_ECH0501D010(Map<?, ?> msgList,
																		IRequestParameterReadWrite param,
																		HashMap<String, Object> dataMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// マスメン料金スケジュール定義登録.マスメン料金スケジュール定義登録.登録年月日時分秒 ← マスメン料金スケジュール定義登録.登録年月日時分秒
		if (parentTemplate.isNull(ECH0501D010CBSMsg.ADD_DTM))
		{
			dataMap.put("add_dtm","");
		}
		else
		{
			dataMap.put("add_dtm", parentTemplate.getString(ECH0501D010CBSMsg.ADD_DTM));
		}

		// マスメン料金スケジュール定義登録.マスメン料金スケジュール定義登録.登録オペレータアカウント ← マスメン料金スケジュール定義登録.登録オペレータアカウント
		if (parentTemplate.isNull(ECH0501D010CBSMsg.ADD_OPEACNT))
		{
			dataMap.put("add_opeacnt","");
		}
		else
		{
			dataMap.put("add_opeacnt", parentTemplate.getString(ECH0501D010CBSMsg.ADD_OPEACNT));
		}

		// マスメン料金スケジュール定義登録.マスメン料金スケジュール定義登録.更新年月日時分秒 ← マスメン料金スケジュール定義登録.更新年月日時分秒
		if (parentTemplate.isNull(ECH0501D010CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm","");
		}
		else
		{
			dataMap.put("upd_dtm", parentTemplate.getString(ECH0501D010CBSMsg.UPD_DTM));
		}

		// マスメン料金スケジュール定義登録.マスメン料金スケジュール定義登録.更新オペレータアカウント ← マスメン料金スケジュール定義登録.更新オペレータアカウント
		if (parentTemplate.isNull(ECH0501D010CBSMsg.UPD_OPEACNT))
		{
			dataMap.put("upd_opeacnt","");
		}
		else
		{
			dataMap.put("upd_opeacnt", parentTemplate.getString(ECH0501D010CBSMsg.UPD_OPEACNT));
		}

		// マスメン料金スケジュール定義登録.マスメン料金スケジュール定義登録.無効フラグ ← マスメン料金スケジュール定義登録.無効フラグ
		if (parentTemplate.isNull(ECH0501D010CBSMsg.MK_FLG))
		{
			dataMap.put("mk_flg","");
		}
		else
		{
			dataMap.put("mk_flg", parentTemplate.getString(ECH0501D010CBSMsg.MK_FLG));
		}

		// エラー情報の設定
		IRequestParameterReadWrite retParam = editErrorInfo_ECH0501D010(param, dataMap, templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定 */
		//取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		String status = (String)param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == Integer.parseInt(status))) 
		{
			SCCallException scCallEx = new SCCallException("INVALID_RETURN_MESSAGE", rtnCode, Integer.parseInt(status));
			throw scCallEx;
		}

		return param;
	}

	/**
	 * マスメン営業日管理削除用メッセージ取得処理.<br>
	 * 
	 * @param msgList
	 * @param param
	 * @param dataMap
	 * 
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EZM0291E010(Map<?, ?> msgList,
																		IRequestParameterReadWrite param,
																		HashMap<String, Object> dataMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// エラー情報の設定
		IRequestParameterReadWrite retParam = editErrorInfo_EZM0291E010(param, dataMap, templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定 */
		//取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		String status = (String)param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == Integer.parseInt(status))) 
		{
			SCCallException scCallEx = new SCCallException("INVALID_RETURN_MESSAGE", rtnCode, Integer.parseInt(status));
			throw scCallEx;
		}

		return param;
	}

	/**
	 * マスメン営業日管理登録用メッセージ取得処理.<br>
	 * 
	 * @param msgList
	 * @param param
	 * @param dataMap
	 * 
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EZM0291D010(Map<?, ?> msgList,
																		IRequestParameterReadWrite param,
																		HashMap<String, Object> dataMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// マスメン営業日管理登録.マスメン営業日管理登録.登録年月日時分秒 ← マスメン営業日管理登録.登録年月日時分秒
		if (parentTemplate.isNull(EZM0291D010CBSMsg.ADD_DTM))
		{
			dataMap.put("add_dtm","");
		}
		else
		{
			dataMap.put("add_dtm", parentTemplate.getString(EZM0291D010CBSMsg.ADD_DTM));
		}

		// マスメン営業日管理登録.マスメン営業日管理登録.登録オペレータアカウント ← マスメン営業日管理登録.登録オペレータアカウント
		if (parentTemplate.isNull(EZM0291D010CBSMsg.ADD_OPEACNT))
		{
			dataMap.put("add_opeacnt","");
		}
		else
		{
			dataMap.put("add_opeacnt", parentTemplate.getString(EZM0291D010CBSMsg.ADD_OPEACNT));
		}

		// マスメン営業日管理登録.マスメン営業日管理登録.更新年月日時分秒 ← マスメン営業日管理登録.更新年月日時分秒
		if (parentTemplate.isNull(EZM0291D010CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm","");
		}
		else
		{
			dataMap.put("upd_dtm", parentTemplate.getString(EZM0291D010CBSMsg.UPD_DTM));
		}

		// マスメン営業日管理登録.マスメン営業日管理登録.更新オペレータアカウント ← マスメン営業日管理登録.更新オペレータアカウント
		if (parentTemplate.isNull(EZM0291D010CBSMsg.UPD_OPEACNT))
		{
			dataMap.put("upd_opeacnt","");
		}
		else
		{
			dataMap.put("upd_opeacnt", parentTemplate.getString(EZM0291D010CBSMsg.UPD_OPEACNT));
		}

		// マスメン営業日管理登録.マスメン営業日管理登録.無効フラグ ← マスメン営業日管理登録.無効フラグ
		if (parentTemplate.isNull(EZM0291D010CBSMsg.MK_FLG))
		{
			dataMap.put("mk_flg","");
		}
		else
		{
			dataMap.put("mk_flg", parentTemplate.getString(EZM0291D010CBSMsg.MK_FLG));
		}


		// エラー情報の設定
		IRequestParameterReadWrite retParam = editErrorInfo_EZM0291D010(param, dataMap, templates, (Integer)return_code);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)retParam.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		retParam.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		/* ◇処理結果の判定 */
		//取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		String status = (String)param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == Integer.parseInt(status))) 
		{
			SCCallException scCallEx = new SCCallException("INVALID_RETURN_MESSAGE", rtnCode, Integer.parseInt(status));
			throw scCallEx;
		}

		return param;
	}

	/**
	 * 入力データ編集処理.<br>
	 * 
	 * @param param
	 * @param dataMap
	 * 
	 * @return IRequestParameterReadWrite
	 * 
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editInData(IRequestParameterReadWrite param, HashMap<String, Object> dataMap) throws Exception
	{

		// 作業項目領域
		Map<Object, Object> workAreaMap = param.getMappingWorkArea();
		if (workAreaMap == null)
		{
			workAreaMap = new HashMap<Object, Object>();
			param.setMappingWorkArea(workAreaMap);
		}

		/* 作業項目情報 */
		Map<String, Object> workMap = (HashMap<String, Object>)workAreaMap.get("WORK");
		if (workMap == null)
		{
			workMap = new HashMap<String, Object>();
			workAreaMap.put("WORK", workMap);
		}

		ArrayList<HashMap<String, Object>> delPrcEventList = (ArrayList)workMap.get("DEL_PRC_EVENT_List");
		if (delPrcEventList == null)
		{
			delPrcEventList = new ArrayList<HashMap<String, Object>>();
			workMap.put("DEL_PRC_EVENT_List", delPrcEventList);
		}

		ArrayList<HashMap<String, Object>> ECH0501E010List = (ArrayList)dataMap.get("ECH0501E010CBSMsgList");
		if (ECH0501E010List == null)
		{
			ECH0501E010List = new ArrayList<HashMap<String, Object>>();
			dataMap.put("ECH0501E010CBSMsgList", ECH0501E010List);
		}

		for (HashMap<String, Object> delPrcEventMap : delPrcEventList)
		{
			HashMap<String, Object> mapChild = new HashMap<String, Object>();
			mapChild.put("event_cd", delPrcEventMap.get("event_cd"));
			mapChild.put("event_ymd", delPrcEventMap.get("event_ymd"));
			mapChild.put("upd_dtm_bf", delPrcEventMap.get("upd_dtm_bf"));
			ECH0501E010List.add(mapChild);
		}

		
		ArrayList<HashMap<String, Object>> addPrcEventList = (ArrayList)workMap.get("ADD_PRC_EVENT_List");
		if (addPrcEventList == null)
		{
			addPrcEventList = new ArrayList<HashMap<String, Object>>();
			workMap.put("ADD_PRC_EVENT_List", addPrcEventList);
		}

		ArrayList<HashMap<String, Object>> ECH0501D010List = (ArrayList)dataMap.get("ECH0501D010CBSMsgList");
		if (ECH0501D010List == null)
		{
			ECH0501D010List = new ArrayList<HashMap<String, Object>>();
			dataMap.put("ECH0501D010CBSMsgList", ECH0501D010List);
		}

		for (HashMap<String, Object> addPrcEventMap : addPrcEventList)
		{
			HashMap<String, Object> mapChild = new HashMap<String, Object>();
			mapChild.put("event_cd", addPrcEventMap.get("event_cd"));
			mapChild.put("event_ymd", addPrcEventMap.get("event_ymd"));
			mapChild.put("seiky_ym", addPrcEventMap.get("seiky_ym"));
			ECH0501D010List.add(mapChild);
		}


		
		ArrayList<HashMap<String, Object>> delBusidayList = (ArrayList)workMap.get("DEL_BUSIDAY_List");
		if (delBusidayList == null)
		{
			delBusidayList = new ArrayList<HashMap<String, Object>>();
			workMap.put("DEL_BUSIDAY_List", delBusidayList);
		}

		ArrayList<HashMap<String, Object>> EZM0291E010List = (ArrayList)dataMap.get("EZM0291E010CBSMsgList");
		if (EZM0291E010List == null)
		{
			EZM0291E010List = new ArrayList<HashMap<String, Object>>();
			dataMap.put("EZM0291E010CBSMsgList", EZM0291E010List);
		}

		for (HashMap<String, Object> delBusidayMap : delBusidayList)
		{
			HashMap<String, Object> mapChild = new HashMap<String, Object>();
			mapChild.put("trgt_ymd", delBusidayMap.get("trgt_ymd"));
			mapChild.put("upd_dtm_bf", delBusidayMap.get("upd_dtm_bf"));
			EZM0291E010List.add(mapChild);
		}


		
		ArrayList<HashMap<String, Object>> addBusidayList = (ArrayList)workMap.get("ADD_BUSIDAY_List");
		if (addBusidayList == null)
		{
			addBusidayList = new ArrayList<HashMap<String, Object>>();
			workMap.put("ADD_BUSIDAY_List", addBusidayList);
		}

		ArrayList<HashMap<String, Object>> EZM0291D010List = (ArrayList)dataMap.get("EZM0291D010CBSMsgList");
		if (EZM0291D010List == null)
		{
			EZM0291D010List = new ArrayList<HashMap<String, Object>>();
			dataMap.put("EZM0291D010CBSMsgList", EZM0291D010List);
		}

		for (HashMap<String, Object> addBusidayMap : addBusidayList)
		{
			HashMap<String, Object> mapChild = new HashMap<String, Object>();
			mapChild.put("trgt_ymd", addBusidayMap.get("trgt_ymd"));
			mapChild.put("busiday_flg", addBusidayMap.get("busiday_flg"));
			mapChild.put("holiday_flg", addBusidayMap.get("holiday_flg"));
			EZM0291D010List.add(mapChild);

		}

		return param;
	}

	/**
	 * 文字の空白チェック。<BR>
	 * @param val 検査文字
	 * @return boolean 空白またはNullのときtrue
	 */
	private boolean nullOrEmpty(Object val)
	{
		if (val == null)
		{
			return true;
		}
		return "".equals(val);
	}

}
