/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JKKOpsvkeIkttrkToStaCC
 *   ソースファイル名：JKKOpsvkeIkttrkToStaCC.java
 *   作成者          ：富士通
 *   日付            ：2011年09月21日
 *＜機能概要＞
 *   マルチセッションオプションサービス契約一括登録・照査締結・開始部品
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/09/21   FJ）青木    新規作成
 *
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
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.IRequestParameterReadOnly;
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.CCException;
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.EKK0361C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361D010CBSMsg;

/**
 * オプションサービス契約＜ISP＞一括登録・照査締結・開始部品
 * <p>
 * <br>
 * オプションサービス契約作成数で指定された件数分のオプションサービス契約＜ISP＞の登録・照査締結・開始を実施する <br>
 * <br>
 * 　・オプションサービス契約＜ISP＞登録 <br>
 * 　・オプションサービス契約＜ISP＞照査締結 <br>
 * 　・オプションサービス契約＜ISP＞開始 <br>
 * 
 * @author 富士通
 */
public class JKKOpsvkeIkttrkToStaCC extends AbstractCommonComponent
{
	
	/** テンプレートID(オプションサービス契約＜ISP＞登録) */
	public static final String TEMPLATE_ID1 = "EKK0361D010";
	/** テンプレートID(オプションサービス契約＜ISP＞照査締結) */
	public static final String TEMPLATE_ID2 = "EKK0361C030";
	/** テンプレートID(オプションサービス契約＜ISP＞開始) */
	public static final String TEMPLATE_ID3 = "EKK0361C040";
	/** 即時 */
	public static final String SOKUJI = "01";
	/** 翌月 */
	public static final String YOKUTUKI = "01";
	
	/**
	 *　オプションサービス契約＜ISP＞一括登録・照査締結・開始処理です。
	 * 
	 * 複数件のオプションサービス契約＜ISP＞を登録〜開始までおこないます。<br>
	 * <br>
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite create(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// ----------------------------------------
		// リクエストパラメータ情報取得
		// ----------------------------------------
		List<CAANMsg> template_EKK0361D010CBS = editInMsg_EKK0361D010CBS(param);
		List<CAANMsg> template_EKK0361C030CBS = editInMsg_EKK0361C030CBS(param);
		List<CAANMsg> template_EKK0361C040CBS = editInMsg_EKK0361C040CBS(param);
		long opsvke_cnt = getOpvkCnt(param);
		String svc_kei_stat = getSvcKeiStat(param);
		String jssi_op_svc_kei_stat = getJssiOpSvcKeiStat(param);
		
		// ----------------------------------------
		// オプションサービス契約作成数取得
		// ----------------------------------------
		for (int i = 0; i < opsvke_cnt; i++)
		{
			
			// ----------------------------------------
			// ＜登録＞サービスI/Fの実行
			// ----------------------------------------
			if (template_EKK0361D010CBS.size() > i)
			{
				HashMap<String, Object> paramMap = getSearchParamMap(param, template_EKK0361D010CBS.get(i));
				
				// ----------------------------------------
				// SC呼出処理
				// ----------------------------------------
				Map<?, ?> result = scCall.run(paramMap, handle);
				checkExecutionResult(result);
				CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
				CAANMsg msg = templates[0];
				
				// ----------------------------------------
				// 下りマッピング処理(エラーマッピングも実施？)
				// ----------------------------------------
				editResultRP_EKK0361D010CBS(result, param, i);
			}
			else
			{
				continue;
			}
			
			// ----------------------------------------
			// ＜照査締結＞サービスI/Fの実行
			// ----------------------------------------
			if (("030".equals(svc_kei_stat) || "100".equals(svc_kei_stat))
					&& ("030".equals(jssi_op_svc_kei_stat) || "100".equals(jssi_op_svc_kei_stat)) && template_EKK0361C030CBS.size() > i)
			{
				template_EKK0361C030CBS = editInMsg_EKK0361C030CBS(param);
				HashMap<String, Object> paramMap = getSearchParamMap(param, template_EKK0361C030CBS.get(i));
				
				// ----------------------------------------
				// SC呼出処理
				// ----------------------------------------
				Map<?, ?> result = scCall.run(paramMap, handle);
				checkExecutionResult(result);
				CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
				CAANMsg msg = templates[0];
				
				// ----------------------------------------
				// 下りマッピング処理(エラーマッピングも実施？)
				// ----------------------------------------
				editResultRP_EKK0361C030CBS(result, param, i);
			}
			else
			{
				continue;
			}
			
			// ----------------------------------------
			// ＜開始＞サービスI/Fの実行
			// ----------------------------------------
			if ("100".equals(svc_kei_stat) && "100".equals(jssi_op_svc_kei_stat) && template_EKK0361C040CBS.size() > i)
			{
				template_EKK0361C040CBS = editInMsg_EKK0361C040CBS(param);
				HashMap<String, Object> paramMap = getSearchParamMap(param, template_EKK0361C040CBS.get(i));
				
				// ----------------------------------------
				// SC呼出処理
				// ----------------------------------------
				Map<?, ?> result = scCall.run(paramMap, handle);
				checkExecutionResult(result);
				CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
				CAANMsg msg = templates[0];
				
				// ----------------------------------------
				// 下りマッピング処理(エラーマッピングも実施？)
				// ----------------------------------------
				editResultRP_EKK0361C040CBS(result, param, i);
			}
		}
		
		// if (true)
		// {
		// throw new CCException("test", new SCCallException("", "0", 1150));
		// }
		return param;
	}
	
	
	/**
	 * オプションサービス契約＜ISP＞一括登録・照査締結・開始のチェック処理です。<br>
	 * チェック処理用のコード名称取得サービスインターフェイスを作成し返却します。<br>
	 * <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Throwableがスローされます 。
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));
		
		// ------------------------------------------
		// エラーチェック用のHashMapを作成
		// ------------------------------------------
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		List<CAANMsg> template_EKK0361D010CBS = editInMsg_EKK0361D010CBS(param);
		List<CAANMsg> template_EKK0361C030CBS = editInMsg_EKK0361C030CBS(param);
		List<CAANMsg> template_EKK0361C040CBS = editInMsg_EKK0361C040CBS(param);
		
		for (CAANMsg msg : template_EKK0361D010CBS)
		{
			templateList.add(msg);
		}
		
		for (CAANMsg msg : template_EKK0361C030CBS)
		{
			templateList.add(msg);
		}
		
		for (CAANMsg msg : template_EKK0361C040CBS)
		{
			templateList.add(msg);
		}
		// リストに追加されたCAANMsgを配列に変換する
		int templateSize = templateList.size();
		if (templateSize > 1)
		{
			CAANMsg[] templates = new CAANMsg[templateSize];
			for (int i = 0; i < templateSize; i++)
			{
				templates[i] = (CAANMsg)templateList.get(i);
			}
			paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		}
		else
		{
			CAANMsg[] templates = new CAANMsg[1];
			templates[0] = (CAANMsg)templateList.get(0);
			paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		}
		
		return paramMap;
	}
	
	/**
	 * 
	 * オプションサービス契約＜ISP＞登録用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EKK0361D010CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		
		/* 作業項目情報 */
		Map workInMap = null;
		if (workMap != null)
		{
			workInMap = (HashMap)workMap.get("WORK");
		}
		else
		{
			workInMap = null;
		}
		
		// オプションサービス契約作成数
		long opsvke_cnt = getOpvkCnt(param);
		
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		
		List childList = (List)inMap.get("EKK0361D010CBSMsg1List");
		
		// オペレーションサービス契約作成数の数だけループ
		for (int i = 0; i < opsvke_cnt; i++)
		{
			// オプションサービス契約＜ISP＞登録情報取得
			Map inChildMap = null;
			if (childList.size() > i)
			{
				inChildMap = (HashMap)childList.get(i);
			}
			
			if (inChildMap == null)
			{
				// オペレーションサービス契約数がリストの数より多かった場合はマッピングを実施しない
				break;
			}
			
			// -----------------------------------
			// オプションサービス契約＜ISP＞登録
			// ----------------------------------
			// オプションサービス契約＜ISP＞登録用テンプレート
			CAANMsg template = new CAANMsg(EKK0361D010CBSMsg.class.getName());
			
			// テンプレートID
			template.set(EKK0361D010CBSMsg.TEMPLATEID, "EKK0361D010");
			
			// 機能コード（デフォルト：１）
			template.set(EKK0361D010CBSMsg.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 (inChildMap != null)
			{
				// 機能コード
				template.set(EKK0361D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.オプションサービスコード → オプションサービスコード
			if (inChildMap == null || inChildMap.get("op_svc_cd") == null || "".equals(inChildMap.get("op_svc_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.OP_SVC_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.OP_SVC_CD, (String)inChildMap.get("op_svc_cd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.料金コースコード → 料金コースコード
			if (inChildMap == null || inChildMap.get("pcrs_cd") == null || "".equals(inChildMap.get("pcrs_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.PCRS_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.PCRS_CD, (String)inChildMap.get("pcrs_cd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.料金プランコード → 料金プランコード
			if (inChildMap == null || inChildMap.get("pplan_cd") == null || "".equals(inChildMap.get("pplan_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.PPLAN_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.PPLAN_CD, (String)inChildMap.get("pplan_cd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.親契約識別コード → 親契約識別コード
			if (inChildMap == null || inChildMap.get("oya_kei_skbt_cd") == null || "".equals(inChildMap.get("oya_kei_skbt_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.OYA_KEI_SKBT_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.OYA_KEI_SKBT_CD, (String)inChildMap.get("oya_kei_skbt_cd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.サービス契約番号 → サービス契約番号
			if (inChildMap == null || inChildMap.get("svc_kei_no") == null || "".equals(inChildMap.get("svc_kei_no")))
			{
				template.setNull(EKK0361D010CBSMsg.SVC_KEI_NO);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SVC_KEI_NO, (String)inChildMap.get("svc_kei_no"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.サービス契約内訳番号 → サービス契約内訳番号
			if (inChildMap == null || inChildMap.get("svc_kei_ucwk_no") == null || "".equals(inChildMap.get("svc_kei_ucwk_no")))
			{
				template.setNull(EKK0361D010CBSMsg.SVC_KEI_UCWK_NO);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SVC_KEI_UCWK_NO, (String)inChildMap.get("svc_kei_ucwk_no"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.SYSID → SYSID
			if (inChildMap == null || inChildMap.get("sysid") == null || "".equals(inChildMap.get("sysid")))
			{
				template.setNull(EKK0361D010CBSMsg.SYSID);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SYSID, (String)inChildMap.get("sysid"));
			}
			
			// 作業項目.申込明細番号 → 申込明細番号
			if (workInMap == null || workInMap.get("mskm_dtl_no") == null || "".equals(workInMap.get("mskm_dtl_no")))
			{
				template.setNull(EKK0361D010CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MSKM_DTL_NO, (String)workInMap.get("mskm_dtl_no"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.試用加入年月日 → 試用加入年月日
			if (inChildMap == null || inChildMap.get("ftrial_kanyu_ymd") == null || "".equals(inChildMap.get("ftrial_kanyu_ymd")))
			{
				template.setNull(EKK0361D010CBSMsg.FTRIAL_KANYU_YMD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.FTRIAL_KANYU_YMD, (String)inChildMap.get("ftrial_kanyu_ymd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.試用期間終了年月日 → 試用期間終了年月日
			if (inChildMap == null || inChildMap.get("ftrial_prd_endymd") == null || "".equals(inChildMap.get("ftrial_prd_endymd")))
			{
				template.setNull(EKK0361D010CBSMsg.FTRIAL_PRD_ENDYMD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.FTRIAL_PRD_ENDYMD, (String)inChildMap.get("ftrial_prd_endymd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.本加入年月日 → 本加入年月日
			if (inChildMap == null || inChildMap.get("honkanyu_ymd") == null || "".equals(inChildMap.get("honkanyu_ymd")))
			{
				template.setNull(EKK0361D010CBSMsg.HONKANYU_YMD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.HONKANYU_YMD, (String)inChildMap.get("honkanyu_ymd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.本加入移行期限年月日 → 本加入移行期限年月日
			if (inChildMap == null || inChildMap.get("honkanyu_iko_kigen_ymd") == null || "".equals(inChildMap.get("honkanyu_iko_kigen_ymd")))
			{
				template.setNull(EKK0361D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)inChildMap.get("honkanyu_iko_kigen_ymd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.サービス利用開始希望年月日 → サービス利用開始希望年月日
			if (inChildMap == null || inChildMap.get("svc_use_sta_kibo_ymd") == null || "".equals(inChildMap.get("svc_use_sta_kibo_ymd")))
			{
				template.setNull(EKK0361D010CBSMsg.SVC_USE_STA_KIBO_YMD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SVC_USE_STA_KIBO_YMD, (String)inChildMap.get("svc_use_sta_kibo_ymd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.予約適用開始希望年月日 → 予約適用開始希望年月日
			if (inChildMap == null || inChildMap.get("rsv_tsta_kibo_ymd") == null || "".equals(inChildMap.get("rsv_tsta_kibo_ymd")))
			{
				template.setNull(EKK0361D010CBSMsg.RSV_TSTA_KIBO_YMD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.RSV_TSTA_KIBO_YMD, (String)inChildMap.get("rsv_tsta_kibo_ymd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.違約金発生コード → 違約金発生コード
			if (inChildMap == null || inChildMap.get("pnlty_hassei_cd") == null || "".equals(inChildMap.get("pnlty_hassei_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.PNLTY_HASSEI_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.PNLTY_HASSEI_CD, (String)inChildMap.get("pnlty_hassei_cd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.異動区分 → 異動区分
			if (inChildMap == null || inChildMap.get("ido_div") == null || "".equals(inChildMap.get("ido_div")))
			{
				template.setNull(EKK0361D010CBSMsg.IDO_DIV);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.IDO_DIV, (String)inChildMap.get("ido_div"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.希望メールアドレス1 → 希望メールアドレス1
			if (inChildMap == null || inChildMap.get("kibo_ml_account_1") == null || "".equals(inChildMap.get("kibo_ml_account_1")))
			{
				template.setNull(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_1);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_1, (String)inChildMap.get("kibo_ml_account_1"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.希望メールアドレス2 → 希望メールアドレス2
			if (inChildMap == null || inChildMap.get("kibo_ml_account_2") == null || "".equals(inChildMap.get("kibo_ml_account_2")))
			{
				template.setNull(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_2);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_2, (String)inChildMap.get("kibo_ml_account_2"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.希望メールアドレス3 → 希望メールアドレス3
			if (inChildMap == null || inChildMap.get("kibo_ml_account_3") == null || "".equals(inChildMap.get("kibo_ml_account_3")))
			{
				template.setNull(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_3);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_3, (String)inChildMap.get("kibo_ml_account_3"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.マルチセッション用初期認証IDパスワード → マルチセッション用初期認証IDパスワード
			if (inChildMap == null || inChildMap.get("mltise_shk_ninsho_id_pwd") == null || "".equals(inChildMap.get("mltise_shk_ninsho_id_pwd")))
			{
				template.setNull(EKK0361D010CBSMsg.MLTISE_SHK_NINSHO_ID_PWD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLTISE_SHK_NINSHO_ID_PWD, (String)inChildMap.get("mltise_shk_ninsho_id_pwd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.マルチセッション用認証ID → マルチセッション用認証ID
			if (inChildMap == null || inChildMap.get("mltise_ninsho_id") == null || "".equals(inChildMap.get("mltise_ninsho_id")))
			{
				template.setNull(EKK0361D010CBSMsg.MLTISE_NINSHO_ID);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLTISE_NINSHO_ID, (String)inChildMap.get("mltise_ninsho_id"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.マルチセッション用認証IDパスワード → マルチセッション用認証IDパスワード
			if (inChildMap == null || inChildMap.get("mltise_ninsho_id_pwd") == null || "".equals(inChildMap.get("mltise_ninsho_id_pwd")))
			{
				template.setNull(EKK0361D010CBSMsg.MLTISE_NINSHO_ID_PWD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLTISE_NINSHO_ID_PWD, (String)inChildMap.get("mltise_ninsho_id_pwd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.固定IPアドレス → 固定IPアドレス
			if (inChildMap == null || inChildMap.get("kotei_ip_ad") == null || "".equals(inChildMap.get("kotei_ip_ad")))
			{
				template.setNull(EKK0361D010CBSMsg.KOTEI_IP_AD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.KOTEI_IP_AD, (String)inChildMap.get("kotei_ip_ad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.ネットマスク → ネットマスク
			if (inChildMap == null || inChildMap.get("netmask") == null || "".equals(inChildMap.get("netmask")))
			{
				template.setNull(EKK0361D010CBSMsg.NETMASK);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.NETMASK, (String)inChildMap.get("netmask"));
			}
			// 〜.オプションサービス契約＜ISP＞登録.URL（ドメイン） → URL(ドメイン)
			if (inChildMap == null || inChildMap.get("url_domain") == null || "".equals(inChildMap.get("url_domain")))
			{
				template.setNull(EKK0361D010CBSMsg.URL_DOMAIN);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.URL_DOMAIN, (String)inChildMap.get("url_domain"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.URL（アカウント） → URL(アカウント)
			if (inChildMap == null || inChildMap.get("url_account") == null || "".equals(inChildMap.get("url_account")))
			{
				template.setNull(EKK0361D010CBSMsg.URL_ACCOUNT);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.URL_ACCOUNT, (String)inChildMap.get("url_account"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト名 → メーリングリスト名
			if (inChildMap == null || inChildMap.get("mllist_nm") == null || "".equals(inChildMap.get("mllist_nm")))
			{
				template.setNull(EKK0361D010CBSMsg.MLLIST_NM);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLLIST_NM, (String)inChildMap.get("mllist_nm"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト呼称 → メーリングリスト呼称
			if (inChildMap == null || inChildMap.get("mllist_kosho") == null || "".equals(inChildMap.get("mllist_kosho")))
			{
				template.setNull(EKK0361D010CBSMsg.MLLIST_KOSHO);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLLIST_KOSHO, (String)inChildMap.get("mllist_kosho"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト公開要否 → メーリングリスト公開要否
			if (inChildMap == null || inChildMap.get("mllist_kokai_yh") == null || "".equals(inChildMap.get("mllist_kokai_yh")))
			{
				template.setNull(EKK0361D010CBSMsg.MLLIST_KOKAI_YH);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLLIST_KOKAI_YH, (String)inChildMap.get("mllist_kokai_yh"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト最大ユーザー数 → メーリングリスト最大ユーザー数
			if (inChildMap == null || inChildMap.get("mllist_max_user_cnt") == null || "".equals(inChildMap.get("mllist_max_user_cnt")))
			{
				template.setNull(EKK0361D010CBSMsg.MLLIST_MAX_USER_CNT);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLLIST_MAX_USER_CNT, (String)inChildMap.get("mllist_max_user_cnt"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト管理者メールアドレス → メーリングリスト管理者メールアドレス
			if (inChildMap == null || inChildMap.get("mllist_krisha_mlad") == null || "".equals(inChildMap.get("mllist_krisha_mlad")))
			{
				template.setNull(EKK0361D010CBSMsg.MLLIST_KRISHA_MLAD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.MLLIST_KRISHA_MLAD, (String)inChildMap.get("mllist_krisha_mlad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.独自ドメイン名 → 独自ドメイン名
			if (inChildMap == null || inChildMap.get("dokuji_domain_nm") == null || "".equals(inChildMap.get("dokuji_domain_nm")))
			{
				template.setNull(EKK0361D010CBSMsg.DOKUJI_DOMAIN_NM);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.DOKUJI_DOMAIN_NM, (String)inChildMap.get("dokuji_domain_nm"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.ホスティングメールアカウント数 → ホスティングメールアカウント数
			if (inChildMap == null || inChildMap.get("hosml_account_cnt") == null || "".equals(inChildMap.get("hosml_account_cnt")))
			{
				template.setNull(EKK0361D010CBSMsg.HOSML_ACCOUNT_CNT);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.HOSML_ACCOUNT_CNT, (String)inChildMap.get("hosml_account_cnt"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.ホスティングメールボックス総容量 → ホスティングメールボックス総容量
			if (inChildMap == null || inChildMap.get("hosml_box_capa") == null || "".equals(inChildMap.get("hosml_box_capa")))
			{
				template.setNull(EKK0361D010CBSMsg.HOSML_BOX_CAPA);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.HOSML_BOX_CAPA, (String)inChildMap.get("hosml_box_capa"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.ダイヤルパッドPIN → ダイヤルパッドPIN
			if (inChildMap == null || inChildMap.get("dpad_pin") == null || "".equals(inChildMap.get("dpad_pin")))
			{
				template.setNull(EKK0361D010CBSMsg.DPAD_PIN);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.DPAD_PIN, (String)inChildMap.get("dpad_pin"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.ダイヤルパッドID公開要否 → ダイヤルパッドID公開要否
			if (inChildMap == null || inChildMap.get("dpad_id_kokai_yh") == null || "".equals(inChildMap.get("dpad_id_kokai_yh")))
			{
				template.setNull(EKK0361D010CBSMsg.DPAD_ID_KOKAI_YH);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.DPAD_ID_KOKAI_YH, (String)inChildMap.get("dpad_id_kokai_yh"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.ダイアルアップ接続用認証ID → ダイアルアップ接続用認証ID
			if (inChildMap == null || inChildMap.get("dupcon_ninsho_id") == null || "".equals(inChildMap.get("dupcon_ninsho_id")))
			{
				template.setNull(EKK0361D010CBSMsg.DUPCON_NINSHO_ID);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.DUPCON_NINSHO_ID, (String)inChildMap.get("dupcon_ninsho_id"));
			}
			// 〜.オプションサービス契約＜ISP＞登録.DNS設定コード → DNS設定コード
			if (inChildMap == null || inChildMap.get("dns_sette_cd") == null || "".equals(inChildMap.get("dns_sette_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.DNS_SETTE_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.DNS_SETTE_CD, (String)inChildMap.get("dns_sette_cd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.スポット有害サイトブロック対象SYSID → スポット有害サイトブロック対象SYSID
			if (inChildMap == null || inChildMap.get("spot_ygsiteblck_trgt_sysid") == null || "".equals(inChildMap.get("spot_ygsiteblck_trgt_sysid")))
			{
				template.setNull(EKK0361D010CBSMsg.SPOT_YGSITEBLCK_TRGT_SYSID);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SPOT_YGSITEBLCK_TRGT_SYSID, (String)inChildMap.get("spot_ygsiteblck_trgt_sysid"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.サービス個別設定連絡先メールアドレス → サービス個別設定連絡先メールアドレス
			if (inChildMap == null || inChildMap.get("svc_kbt_set_rrks_mlad") == null || "".equals(inChildMap.get("svc_kbt_set_rrks_mlad")))
			{
				template.setNull(EKK0361D010CBSMsg.SVC_KBT_SET_RRKS_MLAD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SVC_KBT_SET_RRKS_MLAD, (String)inChildMap.get("svc_kbt_set_rrks_mlad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.通話明細公開要否 → 通話明細公開要否
			if (inChildMap == null || inChildMap.get("tuwa_dtl_kokai_yh") == null || "".equals(inChildMap.get("tuwa_dtl_kokai_yh")))
			{
				template.setNull(EKK0361D010CBSMsg.TUWA_DTL_KOKAI_YH);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.TUWA_DTL_KOKAI_YH, (String)inChildMap.get("tuwa_dtl_kokai_yh"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.請求契約番号 → 請求契約番号
			if (inChildMap == null || inChildMap.get("seiky_kei_no") == null || "".equals(inChildMap.get("seiky_kei_no")))
			{
				template.setNull(EKK0361D010CBSMsg.SEIKY_KEI_NO);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.SEIKY_KEI_NO, (String)inChildMap.get("seiky_kei_no"));
			}
			
			// 〜.オプションサービス契約＜ISP＞登録.料金項目コード → 料金項目コード
			if (inChildMap == null || inChildMap.get("prc_kmk_cd") == null || "".equals(inChildMap.get("prc_kmk_cd")))
			{
				template.setNull(EKK0361D010CBSMsg.PRC_KMK_CD);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.PRC_KMK_CD, (String)inChildMap.get("prc_kmk_cd"));
			}

			// 作業項目.最終更新年月日時分秒 → 更新年月日時分秒(更新前)
			if (inChildMap == null || inChildMap.get("last_upd_dtm") == null || "".equals(inChildMap.get("last_upd_dtm")))
			{
				template.setNull(EKK0361D010CBSMsg.UPD_DTM_BF);
			}
			else
			{
				template.set(EKK0361D010CBSMsg.UPD_DTM_BF, (String)inChildMap.get("last_upd_dtm"));
			}
			
			templateList.add(template);
			
		}
		
		return templateList;
		
	}
	
	/**
	 * 
	 * オプションサービス契約＜ISP＞照査締結用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EKK0361C030CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		
		/* 作業項目情報 */
		Map workInMap = null;
		if (workMap != null)
		{
			workInMap = (HashMap)workMap.get("WORK");
		}
		else
		{
			workInMap = null;
		}
		
		// オプションサービス契約作成数
		long opsvke_cnt = getOpvkCnt(param);
		
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		
		List childList = (List)inMap.get("EKK0361C030CBSMsg1List");
		
		// オペレーションサービス契約作成数の数だけループ
		for (int i = 0; i < opsvke_cnt; i++)
		{
			// オプションサービス契約＜ISP＞照査締結情報取得
			Map inChildMap = null;
			if (childList.size() > i)
			{
				inChildMap = (HashMap)childList.get(i);
			}
			
			if (inChildMap == null)
			{
				// オペレーションサービス契約数がリストの数より多かった場合はマッピングを実施しない
				break;
			}
			
			// -----------------------------------
			// オプションサービス契約＜ISP＞照査締結
			// ----------------------------------
			// オプションサービス契約＜ISP＞照査締結用テンプレート
			CAANMsg template = new CAANMsg(EKK0361C030CBSMsg.class.getName());
			
			// テンプレートID
			template.set(EKK0361C030CBSMsg.TEMPLATEID, "EKK0361C030");
			
			// 機能コード（デフォルト：１）
			template.set(EKK0361C030CBSMsg.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 (inChildMap != null)
			{
				// 機能コード
				template.set(EKK0361C030CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
			}
			// 作業項目.オプションサービス契約番号 → オプションサービス契約番号
			if (workInMap == null || workInMap.get("op_svc_kei_no") == null || "".equals(workInMap.get("op_svc_kei_no")))
			{
				template.setNull(EKK0361C030CBSMsg.OP_SVC_KEI_NO);
			}
			else
			{
				template.set(EKK0361C030CBSMsg.OP_SVC_KEI_NO, (String)workInMap.get("op_svc_kei_no"));
			}
			// 〜.オプションサービス契約＜ISP＞照査締結リスト.異動区分 → 異動区分
			if (inChildMap == null || inChildMap.get("ido_div") == null || "".equals(inChildMap.get("ido_div")))
			{
				template.setNull(EKK0361C030CBSMsg.IDO_DIV);
			}
			else
			{
				template.set(EKK0361C030CBSMsg.IDO_DIV, (String)inChildMap.get("ido_div"));
			}
			// 作業項目.更新年月日時分秒（オプションサービス契約） → 更新年月日時分秒(更新前)
			if (workInMap == null || workInMap.get("op_svc_kei_upd_dtm") == null || "".equals(workInMap.get("op_svc_kei_upd_dtm")))
			{
				template.setNull(EKK0361C030CBSMsg.UPD_DTM_BF);
			}
			else
			{
				template.set(EKK0361C030CBSMsg.UPD_DTM_BF, (String)workInMap.get("op_svc_kei_upd_dtm"));
			}
			// 〜.オプションサービス契約＜ISP＞照査締結リスト.ダイヤルパッドID → ダイヤルパッドID
			if (inChildMap == null || inChildMap.get("dpad_id") == null || "".equals(inChildMap.get("dpad_id")))
			{
				template.setNull(EKK0361C030CBSMsg.DPAD_ID);
			}
			else
			{
				template.set(EKK0361C030CBSMsg.DPAD_ID, (String)inChildMap.get("dpad_id"));
			}
			// 〜.オプションサービス契約＜ISP＞照査締結リスト.事務手数料自動適用要否 → 事務手数料自動適用要否
			if (inChildMap == null || inChildMap.get("rule0059_auto_aply") == null || "".equals(inChildMap.get("rule0059_auto_aply")))
			{
				template.setNull(EKK0361C030CBSMsg.RULE0059_AUTO_APLY);
			}
			else
			{
				template.set(EKK0361C030CBSMsg.RULE0059_AUTO_APLY, (String)inChildMap.get("rule0059_auto_aply"));
			}
			templateList.add(template);
			
		}
		
		return templateList;
		
	}
	
	/**
	 * 
	 * オプションサービス契約＜ISP＞開始用に CAANMsgに必要なデータをマッピングします。<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private List<CAANMsg> editInMsg_EKK0361C040CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		
		/* 作業項目情報 */
		Map workInMap = null;
		if (workMap != null)
		{
			workInMap = (HashMap)workMap.get("WORK");
		}
		else
		{
			workInMap = null;
		}
		
		// オプションサービス契約作成数
		long opsvke_cnt = getOpvkCnt(param);
		
		// CAANMsg格納用ArrayList
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		
		List childList = (List)inMap.get("EKK0361C040CBSMsg1List");
		
		// オペレーションサービス契約作成数の数だけループ
		for (int i = 0; i < opsvke_cnt; i++)
		{
			// オプションサービス契約＜ISP＞照査締結情報取得
			Map inChildMap = null;
			if (childList.size() > i)
			{
				inChildMap = (HashMap)childList.get(i);
			}
			
			if (inChildMap == null)
			{
				// オペレーションサービス契約数がリストの数より多かった場合はマッピングを実施しない
				break;
			}
			
			// -----------------------------------
			// オプションサービス契約＜ISP＞開始
			// ----------------------------------
			// オプションサービス契約＜ISP＞開始用テンプレート
			CAANMsg template = new CAANMsg(EKK0361C040CBSMsg.class.getName());
			
			// テンプレートID
			template.set(EKK0361C040CBSMsg.TEMPLATEID, "EKK0361C040");
			
			// 機能コード（デフォルト：１）
			template.set(EKK0361C040CBSMsg.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 (inChildMap != null)
			{
				// 機能コード
				template.set(EKK0361C040CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
			}
			// 作業項目.オプションサービス契約番号 → オプションサービス契約番号
			if (workInMap == null || workInMap.get("op_svc_kei_no") == null || "".equals(workInMap.get("op_svc_kei_no")))
			{
				template.setNull(EKK0361C040CBSMsg.OP_SVC_KEI_NO);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.OP_SVC_KEI_NO, (String)workInMap.get("op_svc_kei_no"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.異動区分 → 異動区分
			if (inChildMap == null || inChildMap.get("ido_div") == null || "".equals(inChildMap.get("ido_div")))
			{
				template.setNull(EKK0361C040CBSMsg.IDO_DIV);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.IDO_DIV, (String)inChildMap.get("ido_div"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.マルチセッション用認証ID → マルチセッション用認証ID
			if (inChildMap == null || inChildMap.get("mltise_ninsho_id") == null || "".equals(inChildMap.get("mltise_ninsho_id")))
			{
				template.setNull(EKK0361C040CBSMsg.MLTISE_NINSHO_ID);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MLTISE_NINSHO_ID, (String)inChildMap.get("mltise_ninsho_id"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.マルチセッション用認証IDパスワード → マルチセッション用認証IDパスワード
			if (inChildMap == null || inChildMap.get("mltise_ninsho_id_pwd") == null || "".equals(inChildMap.get("mltise_ninsho_id_pwd")))
			{
				template.setNull(EKK0361C040CBSMsg.MLTISE_NINSHO_ID_PWD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MLTISE_NINSHO_ID_PWD, (String)inChildMap.get("mltise_ninsho_id_pwd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.固定IPアドレス → 固定IPアドレス
			if (inChildMap == null || inChildMap.get("kotei_ip_ad") == null || "".equals(inChildMap.get("kotei_ip_ad")))
			{
				template.setNull(EKK0361C040CBSMsg.KOTEI_IP_AD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.KOTEI_IP_AD, (String)inChildMap.get("kotei_ip_ad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.ネットマスク → ネットマスク
			if (inChildMap == null || inChildMap.get("netmask") == null || "".equals(inChildMap.get("netmask")))
			{
				template.setNull(EKK0361C040CBSMsg.NETMASK);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.NETMASK, (String)inChildMap.get("netmask"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールアドレス → メールアドレス
			if (inChildMap == null || inChildMap.get("mlad") == null || "".equals(inChildMap.get("mlad")))
			{
				template.setNull(EKK0361C040CBSMsg.MLAD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MLAD, (String)inChildMap.get("mlad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.容量 → 容量
			if (inChildMap == null || inChildMap.get("capa") == null || "".equals(inChildMap.get("capa")))
			{
				template.setNull(EKK0361C040CBSMsg.CAPA);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.CAPA, (String)inChildMap.get("capa"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.ホスティングメール管理者メールアドレス → ホスティングメール管理者メールアドレス
			if (inChildMap == null || inChildMap.get("hosml_krisha_mlad") == null || "".equals(inChildMap.get("hosml_krisha_mlad")))
			{
				template.setNull(EKK0361C040CBSMsg.HOSML_KRISHA_MLAD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.HOSML_KRISHA_MLAD, (String)inChildMap.get("hosml_krisha_mlad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.ホスティングメール管理者メールボックス容量 →
			// ホスティングメール管理者メールボックス容量
			if (inChildMap == null || inChildMap.get("hosml_krisha_mail_box_capa") == null || "".equals(inChildMap.get("hosml_krisha_mail_box_capa")))
			{
				template.setNull(EKK0361C040CBSMsg.HOSML_KRISHA_MAIL_BOX_CAPA);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.HOSML_KRISHA_MAIL_BOX_CAPA, (String)inChildMap.get("hosml_krisha_mail_box_capa"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.ダイヤルパッドメールアドレス → ダイヤルパッドメールアドレス
			if (inChildMap == null || inChildMap.get("dpad_mlad") == null || "".equals(inChildMap.get("dpad_mlad")))
			{
				template.setNull(EKK0361C040CBSMsg.DPAD_MLAD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.DPAD_MLAD, (String)inChildMap.get("dpad_mlad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.VoIPユーザーID → VoIPユーザーID
			if (inChildMap == null || inChildMap.get("voip_user_id") == null || "".equals(inChildMap.get("voip_user_id")))
			{
				template.setNull(EKK0361C040CBSMsg.VOIP_USER_ID);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.VOIP_USER_ID, (String)inChildMap.get("voip_user_id"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.VOIP電話番号 → VOIP電話番号
			if (inChildMap == null || inChildMap.get("voip_telno") == null || "".equals(inChildMap.get("voip_telno")))
			{
				template.setNull(EKK0361C040CBSMsg.VOIP_TELNO);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.VOIP_TELNO, (String)inChildMap.get("voip_telno"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ管理者ID → メールゲートウェイ管理者ID
			if (inChildMap == null || inChildMap.get("mail_gw_krisha_id") == null || "".equals(inChildMap.get("mail_gw_krisha_id")))
			{
				template.setNull(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID, (String)inChildMap.get("mail_gw_krisha_id"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ管理者IDパスワード → メールゲートウェイ管理者IDパスワード
			if (inChildMap == null || inChildMap.get("mail_gw_krisha_id_pwd") == null || "".equals(inChildMap.get("mail_gw_krisha_id_pwd")))
			{
				template.setNull(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID_PWD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID_PWD, (String)inChildMap.get("mail_gw_krisha_id_pwd"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ管理者メールアドレス → メールゲートウェイ管理者メールアドレス
			if (inChildMap == null || inChildMap.get("mail_gw_krisha_mlad") == null || "".equals(inChildMap.get("mail_gw_krisha_mlad")))
			{
				template.setNull(EKK0361C040CBSMsg.MAIL_GW_KRISHA_MLAD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MAIL_GW_KRISHA_MLAD, (String)inChildMap.get("mail_gw_krisha_mlad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ受信メールサーバーIPアドレス →
			// メールゲートウェイ受信メールサーバーIPアドレス
			if (inChildMap == null || inChildMap.get("mail_gw_rcv_mserver_ip_ad") == null || "".equals(inChildMap.get("mail_gw_rcv_mserver_ip_ad")))
			{
				template.setNull(EKK0361C040CBSMsg.MAIL_GW_RCV_MSERVER_IP_AD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MAIL_GW_RCV_MSERVER_IP_AD, (String)inChildMap.get("mail_gw_rcv_mserver_ip_ad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ送信メールサーバーIPアドレス →
			// メールゲートウェイ送信メールサーバーIPアドレス
			if (inChildMap == null || inChildMap.get("mail_gw_send_mserver_ip_ad") == null || "".equals(inChildMap.get("mail_gw_send_mserver_ip_ad")))
			{
				template.setNull(EKK0361C040CBSMsg.MAIL_GW_SEND_MSERVER_IP_AD);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.MAIL_GW_SEND_MSERVER_IP_AD, (String)inChildMap.get("mail_gw_send_mserver_ip_ad"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイアカウント数 → メールゲートウェイアカウント数
			if (inChildMap == null || inChildMap.get("ml_gw_account_cnt") == null || "".equals(inChildMap.get("ml_gw_account_cnt")))
			{
				template.setNull(EKK0361C040CBSMsg.ML_GW_ACCOUNT_CNT);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.ML_GW_ACCOUNT_CNT, (String)inChildMap.get("ml_gw_account_cnt"));
			}
			
			// 〜.オプションサービス契約＜ISP＞開始.公衆網電話番号 → 公衆網電話番号
			if (inChildMap == null || inChildMap.get("koshumo_telno") == null || "".equals(inChildMap.get("koshumo_telno")))
			{
				template.setNull(EKK0361C040CBSMsg.KOSHUMO_TELNO);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.KOSHUMO_TELNO, (String)inChildMap.get("koshumo_telno"));
			}
			
			// 作業項目.更新年月日時分秒（オプションサービス契約） → 更新年月日時分秒(更新前)
			if (workInMap == null || workInMap.get("op_svc_kei_upd_dtm") == null || "".equals(workInMap.get("op_svc_kei_upd_dtm")))
			{
				template.setNull(EKK0361C040CBSMsg.UPD_DTM_BF);
			}
			else
			{
				template.set(EKK0361C040CBSMsg.UPD_DTM_BF, (String)workInMap.get("op_svc_kei_upd_dtm"));
			}

			// 即時/翌月
			template.set(EKK0361C040CBSMsg.SKJ_YKGT, SOKUJI);
			
			templateList.add(template);
		}
		
		return templateList;
		
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @exception Throwableがスローされます 。
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode) throws Throwable
	{
		
		for (CAANMsg template : templates)
		{
			String templateId = template.getString("templateID");
			CAANMsg[] workTemplates = { template };
			if (TEMPLATE_ID1.equals(templateId))
			{
				// オプションサービス契約＜ISP＞登録
				editErrorInfo_EKK0361D010CBS(param, workTemplates, returnCode);
				
			}
			else if (TEMPLATE_ID2.equals(templateId))
			{
				// オプションサービス契約＜ISP＞照査締結
				editErrorInfo_EKK0361C030CBS(param, workTemplates, returnCode);
			}
			else
			{
				// オプションサービス契約＜ISP＞開始
				editErrorInfo_EKK0361C040CBS(param, workTemplates, returnCode);
			}
		}
		
		return param;
	}
	
	/**
	 * オプションサービス契約＜ISP＞登録処理のエラー結果をマッピングします。<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param count リスト内の何番目のデータかを表す
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @exception Throwable
	 * @since 2011.05.24
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0361D010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
			throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0361D010CBSMsg.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);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* 作業項目情報 */
		inMap = (HashMap)workMap.get("WORK");
		if (inMap == null)
		{
			inMap = new HashMap();
			workMap.put("WORK", inMap);
		}
		
		// 作業項目リスト.申込明細番号 → 申込明細番号 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MSKM_DTL_NO_ERR))
		{
			if (!inMap.containsKey("mskm_dtl_no_err"))
			{
				inMap.put("mskm_dtl_no_err", template.getString(EKK0361D010CBSMsg.MSKM_DTL_NO_ERR));
			}
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData("JKKOpsvkeIkttrkToStaCC", inMap);
		}
		
		List childList = (List)inMap.get("EKK0361C040CBSMsg1List");
		if (childList == null)
		{
			childList = new ArrayList();
			param.setData("EKK0361C040CBSMsg1List", childList);
		}
		
		HashMap childInMap = new HashMap();
		childList.add(childInMap);
		
		// 〜.オプションサービス契約＜ISP＞登録.オプションサービスコード → オプションサービスコード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.OP_SVC_CD_ERR))
		{
			if (!childInMap.containsKey("op_svc_cd_err"))
			{
				childInMap.put("op_svc_cd_err", template.getString(EKK0361D010CBSMsg.OP_SVC_CD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.料金コースコード → 料金コースコード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.PCRS_CD_ERR))
		{
			if (!childInMap.containsKey("pcrs_cd_err"))
			{
				childInMap.put("pcrs_cd_err", template.getString(EKK0361D010CBSMsg.PCRS_CD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.料金プランコード → 料金プランコード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.PPLAN_CD_ERR))
		{
			if (!childInMap.containsKey("pplan_cd_err"))
			{
				childInMap.put("pplan_cd_err", template.getString(EKK0361D010CBSMsg.PPLAN_CD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.親契約識別コード → 親契約識別コード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.OYA_KEI_SKBT_CD_ERR))
		{
			if (!childInMap.containsKey("oya_kei_skbt_cd_err"))
			{
				childInMap.put("oya_kei_skbt_cd_err", template.getString(EKK0361D010CBSMsg.OYA_KEI_SKBT_CD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!childInMap.containsKey("svc_kei_no_err"))
			{
				childInMap.put("svc_kei_no_err", template.getString(EKK0361D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SVC_KEI_UCWK_NO_ERR))
		{
			if (!childInMap.containsKey("svc_kei_ucwk_no_err"))
			{
				childInMap.put("svc_kei_ucwk_no_err", template.getString(EKK0361D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.SYSID → SYSID のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SYSID_ERR))
		{
			if (!childInMap.containsKey("sysid_err"))
			{
				childInMap.put("sysid_err", template.getString(EKK0361D010CBSMsg.SYSID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.試用加入年月日 → 試用加入年月日 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.FTRIAL_KANYU_YMD_ERR))
		{
			if (!childInMap.containsKey("ftrial_kanyu_ymd_err"))
			{
				childInMap.put("ftrial_kanyu_ymd_err", template.getString(EKK0361D010CBSMsg.FTRIAL_KANYU_YMD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.試用期間終了年月日 → 試用期間終了年月日 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR))
		{
			if (!childInMap.containsKey("ftrial_prd_endymd_err"))
			{
				childInMap.put("ftrial_prd_endymd_err", template.getString(EKK0361D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.本加入年月日 → 本加入年月日 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.HONKANYU_YMD_ERR))
		{
			if (!childInMap.containsKey("honkanyu_ymd_err"))
			{
				childInMap.put("honkanyu_ymd_err", template.getString(EKK0361D010CBSMsg.HONKANYU_YMD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.本加入移行期限年月日 → 本加入移行期限年月日 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR))
		{
			if (!childInMap.containsKey("honkanyu_iko_kigen_ymd_err"))
			{
				childInMap.put("honkanyu_iko_kigen_ymd_err", template.getString(EKK0361D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.サービス利用開始希望年月日 → サービス利用開始希望年月日 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR))
		{
			if (!childInMap.containsKey("svc_use_sta_kibo_ymd_err"))
			{
				childInMap.put("svc_use_sta_kibo_ymd_err", template.getString(EKK0361D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.予約適用開始希望年月日 → 予約適用開始希望年月日 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR))
		{
			if (!childInMap.containsKey("rsv_tsta_kibo_ymd_err"))
			{
				childInMap.put("rsv_tsta_kibo_ymd_err", template.getString(EKK0361D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.違約金発生コード → 違約金発生コード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.PNLTY_HASSEI_CD_ERR))
		{
			if (!childInMap.containsKey("pnlty_hassei_cd_err"))
			{
				childInMap.put("pnlty_hassei_cd_err", template.getString(EKK0361D010CBSMsg.PNLTY_HASSEI_CD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.IDO_DIV_ERR))
		{
			if (!childInMap.containsKey("ido_div_err"))
			{
				childInMap.put("ido_div_err", template.getString(EKK0361D010CBSMsg.IDO_DIV_ERR));
			}
		}
		 // 〜.オプションサービス契約＜ISP＞登録.希望メールアドレス1 → 希望メールアドレス1 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_1_ERR))
		{
			if (!childInMap.containsKey("kibo_ml_account_1_err"))
			{
				childInMap.put("kibo_ml_account_1_err", template.getString(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_1_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.希望メールアドレス2 → 希望メールアドレス2 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_2_ERR))
		{
			if (!childInMap.containsKey("kibo_ml_account_2_err"))
			{
				childInMap.put("kibo_ml_account_2_err", template.getString(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_2_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.希望メールアドレス3 → 希望メールアドレス3 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_3_ERR))
		{
			if (!childInMap.containsKey("kibo_ml_account_3_err"))
			{
				childInMap.put("kibo_ml_account_3_err", template.getString(EKK0361D010CBSMsg.KIBO_ML_ACCOUNT_3_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.マルチセッション用初期認証IDパスワード → マルチセッション用初期認証IDパスワード
		// のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLTISE_SHK_NINSHO_ID_PWD_ERR))
		{
			if (!childInMap.containsKey("mltise_shk_ninsho_id_pwd_err"))
			{
				childInMap.put("mltise_shk_ninsho_id_pwd_err", template.getString(EKK0361D010CBSMsg.MLTISE_SHK_NINSHO_ID_PWD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.マルチセッション用認証ID → マルチセッション用認証ID のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLTISE_NINSHO_ID_ERR))
		{
			if (!childInMap.containsKey("mltise_ninsho_id_err"))
			{
				childInMap.put("mltise_ninsho_id_err", template.getString(EKK0361D010CBSMsg.MLTISE_NINSHO_ID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.マルチセッション用認証IDパスワード → マルチセッション用認証IDパスワード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLTISE_NINSHO_ID_PWD_ERR))
		{
			if (!childInMap.containsKey("mltise_ninsho_id_pwd_err"))
			{
				childInMap.put("mltise_ninsho_id_pwd_err", template.getString(EKK0361D010CBSMsg.MLTISE_NINSHO_ID_PWD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.固定IPアドレス → 固定IPアドレスのエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.KOTEI_IP_AD_ERR))
		{
			if (!childInMap.containsKey("kotei_ip_ad_err"))
			{
				childInMap.put("kotei_ip_ad_err", template.getString(EKK0361D010CBSMsg.KOTEI_IP_AD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.ネットマスク → ネットマスクのエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.NETMASK_ERR))
		{
			if (!childInMap.containsKey("netmask_err"))
			{
				childInMap.put("netmask_err", template.getString(EKK0361D010CBSMsg.NETMASK_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.URL（ドメイン） → URL(ドメイン) のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.URL_DOMAIN_ERR))
		{
			if (!childInMap.containsKey("url_domain_err"))
			{
				childInMap.put("url_domain_err", template.getString(EKK0361D010CBSMsg.URL_DOMAIN_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.URL（アカウント） → URL(アカウント) のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.URL_ACCOUNT_ERR))
		{
			if (!childInMap.containsKey("url_account_err"))
			{
				childInMap.put("url_account_err", template.getString(EKK0361D010CBSMsg.URL_ACCOUNT_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト名 → メーリングリスト名 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLLIST_NM_ERR))
		{
			if (!childInMap.containsKey("mllist_nm_err"))
			{
				childInMap.put("mllist_nm_err", template.getString(EKK0361D010CBSMsg.MLLIST_NM_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト呼称 → メーリングリスト呼称 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLLIST_KOSHO_ERR))
		{
			if (!childInMap.containsKey("mllist_kosho_err"))
			{
				childInMap.put("mllist_kosho_err", template.getString(EKK0361D010CBSMsg.MLLIST_KOSHO_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト公開要否 → メーリングリスト公開要否 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLLIST_KOKAI_YH_ERR))
		{
			if (!childInMap.containsKey("mllist_kokai_yh_err"))
			{
				childInMap.put("mllist_kokai_yh_err", template.getString(EKK0361D010CBSMsg.MLLIST_KOKAI_YH_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト最大ユーザー数 → メーリングリスト最大ユーザー数 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLLIST_MAX_USER_CNT_ERR))
		{
			if (!childInMap.containsKey("mllist_max_user_cnt_err"))
			{
				childInMap.put("mllist_max_user_cnt_err", template.getString(EKK0361D010CBSMsg.MLLIST_MAX_USER_CNT_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト管理者メールアドレス → メーリングリスト管理者メールアドレス のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.MLLIST_KRISHA_MLAD_ERR))
		{
			if (!childInMap.containsKey("mllist_krisha_mlad_err"))
			{
				childInMap.put("mllist_krisha_mlad_err", template.getString(EKK0361D010CBSMsg.MLLIST_KRISHA_MLAD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.独自ドメイン名 → 独自ドメイン名 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.DOKUJI_DOMAIN_NM_ERR))
		{
			if (!childInMap.containsKey("dokuji_domain_nm_err"))
			{
				childInMap.put("dokuji_domain_nm_err", template.getString(EKK0361D010CBSMsg.DOKUJI_DOMAIN_NM_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.ホスティングメールアカウント数 → ホスティングメールアカウント数 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.HOSML_ACCOUNT_CNT_ERR))
		{
			if (!childInMap.containsKey("hosml_account_cnt_err"))
			{
				childInMap.put("hosml_account_cnt_err", template.getString(EKK0361D010CBSMsg.HOSML_ACCOUNT_CNT_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.ホスティングメールボックス総容量 → ホスティングメールボックス総容量 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.HOSML_BOX_CAPA_ERR))
		{
			if (!childInMap.containsKey("hosml_box_capa_err"))
			{
				childInMap.put("hosml_box_capa_err", template.getString(EKK0361D010CBSMsg.HOSML_BOX_CAPA_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.ダイヤルパッドPIN → ダイヤルパッドPIN のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.DPAD_PIN_ERR))
		{
			if (!childInMap.containsKey("dpad_pin_err"))
			{
				childInMap.put("dpad_pin_err", template.getString(EKK0361D010CBSMsg.DPAD_PIN_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.ダイヤルパッドID公開要否 → ダイヤルパッドID公開要否 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.DPAD_ID_KOKAI_YH_ERR))
		{
			if (!childInMap.containsKey("dpad_id_kokai_yh_err"))
			{
				childInMap.put("dpad_id_kokai_yh_err", template.getString(EKK0361D010CBSMsg.DPAD_ID_KOKAI_YH_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.ダイアルアップ接続用認証ID → ダイアルアップ接続用認証IDのエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.DUPCON_NINSHO_ID_ERR))
		{
			if (!childInMap.containsKey("dupcon_ninsho_id_err"))
			{
				childInMap.put("dupcon_ninsho_id_err", template.getString(EKK0361D010CBSMsg.DUPCON_NINSHO_ID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.DNS設定コード → DNS設定コード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.DNS_SETTE_CD_ERR))
		{
			if (!childInMap.containsKey("dns_sette_cd_err"))
			{
				childInMap.put("dns_sette_cd_err", template.getString(EKK0361D010CBSMsg.DNS_SETTE_CD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.スポット有害サイトブロック対象SYSID → スポット有害サイトブロック対象SYSID
		// のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SPOT_YGSITEBLCK_TRGT_SYSID_ERR))
		{
			if (!childInMap.containsKey("spot_ygsiteblck_trgt_sysid_err"))
			{
				childInMap.put("spot_ygsiteblck_trgt_sysid_err", template.getString(EKK0361D010CBSMsg.SPOT_YGSITEBLCK_TRGT_SYSID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.サービス個別設定連絡先メールアドレス → サービス個別設定連絡先メールアドレス のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SVC_KBT_SET_RRKS_MLAD_ERR))
		{
			if (!childInMap.containsKey("svc_kbt_set_rrks_mlad_err"))
			{
				childInMap.put("svc_kbt_set_rrks_mlad_err", template.getString(EKK0361D010CBSMsg.SVC_KBT_SET_RRKS_MLAD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.通話明細公開要否 → 通話明細公開要否 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.TUWA_DTL_KOKAI_YH_ERR))
		{
			if (!childInMap.containsKey("tuwa_dtl_kokai_yh_err"))
			{
				childInMap.put("tuwa_dtl_kokai_yh_err", template.getString(EKK0361D010CBSMsg.TUWA_DTL_KOKAI_YH_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.請求契約番号 → 請求契約番号 のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.SEIKY_KEI_NO_ERR))
		{
			if (!childInMap.containsKey("seiky_kei_no_err"))
			{
				childInMap.put("seiky_kei_no_err", template.getString(EKK0361D010CBSMsg.SEIKY_KEI_NO_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞登録.料金項目コード → 料金項目コード のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.PRC_KMK_CD_ERR))
		{
			if (!childInMap.containsKey("prc_kmk_cd_err"))
			{
				childInMap.put("prc_kmk_cd_err", template.getString(EKK0361D010CBSMsg.PRC_KMK_CD_ERR));
			}
		}
		
		// 作業項目リスト.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前) のエラー情報返却
		if (!template.isNull(EKK0361D010CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0361D010CBSMsg.UPD_DTM_BF_ERR));
			}
		}

		return param;
	}
	
	/**
	 * オプションサービス契約＜ISP＞照査締結処理のエラー結果をマッピングします。<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param count リスト内の何番目のデータかを表す
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @exception Throwable
	 * @since 2011.05.24
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0361C030CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
			throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0361C030CBSMsg.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);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* 作業項目情報 */
		inMap = (HashMap)workMap.get("WORK");
		if (inMap == null)
		{
			inMap = new HashMap();
			workMap.put("WORK", inMap);
		}
		
		// 作業項目リスト.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0361C030CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0361C030CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		
		// 作業項目リスト.更新年月日時分秒（オプションサービス契約） → 更新年月日時分秒(更新前) のエラー情報返却
		if (!template.isNull(EKK0361C030CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0361C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData("JKKOpsvkeIkttrkToStaCC", inMap);
		}
		
		List childList = (List)inMap.get("EKK0361C030CBSMsg1List");
		if (childList == null)
		{
			childList = new ArrayList();
			param.setData("EKK0361C030CBSMsg1List", childList);
		}
		
		HashMap childInMap = new HashMap();
		childList.add(childInMap);
		
		// オプションサービス契約＜ISP＞照査締結.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0361C030CBSMsg.IDO_DIV_ERR))
		{
			if (!childInMap.containsKey("ido_div_err"))
			{
				childInMap.put("ido_div_err", template.getString(EKK0361C030CBSMsg.IDO_DIV_ERR));
			}
		}
		
		// オプションサービス契約＜ISP＞照査締結.ダイヤルパッドID → ダイヤルパッドID のエラー情報返却
		if (!template.isNull(EKK0361C030CBSMsg.DPAD_ID_ERR))
		{
			if (!childInMap.containsKey("dpad_id_err"))
			{
				childInMap.put("dpad_id_err", template.getString(EKK0361C030CBSMsg.DPAD_ID_ERR));
			}
		}
		
		// オプションサービス契約＜ISP＞照査締結.事務手数料自動適用要否 → 事務手数料自動適用要否 のエラー情報返却
		if (!template.isNull(EKK0361C030CBSMsg.RULE0059_AUTO_APLY_ERR))
		{
			if (!childInMap.containsKey("rule0059_auto_aply_err"))
			{
				childInMap.put("rule0059_auto_aply_err", template.getString(EKK0361C030CBSMsg.RULE0059_AUTO_APLY_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * オプションサービス契約＜ISP＞開始処理のエラー結果をマッピングします。<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @exception Throwable
	 * @since 2011.05.24
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0361C040CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
			throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0361C040CBSMsg.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);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* 作業項目情報 */
		inMap = (HashMap)workMap.get("WORK");
		if (inMap == null)
		{
			inMap = new HashMap();
			workMap.put("WORK", inMap);
		}
		
		// 作業項目リスト.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0361C040CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		
		// 作業項目リスト.更新年月日時分秒（オプションサービス契約） → 更新年月日時分秒(更新前) のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0361C040CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData("JKKOpsvkeIkttrkToStaCC", inMap);
		}
		
		List childList = (List)inMap.get("EKK0361C040CBSMsg1List");
		if (childList == null)
		{
			childList = new ArrayList();
			param.setData("EKK0361C040CBSMsg1List", childList);
		}
		
		HashMap childInMap = new HashMap();
		childList.add(childInMap);
		
		// 〜.オプションサービス契約＜ISP＞開始.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.IDO_DIV_ERR))
		{
			if (!childInMap.containsKey("ido_div_err"))
			{
				childInMap.put("ido_div_err", template.getString(EKK0361C040CBSMsg.IDO_DIV_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.マルチセッション用認証ID → マルチセッション用認証ID のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MLTISE_NINSHO_ID_ERR))
		{
			if (!childInMap.containsKey("mltise_ninsho_id_err"))
			{
				childInMap.put("mltise_ninsho_id_err", template.getString(EKK0361C040CBSMsg.MLTISE_NINSHO_ID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.マルチセッション用認証IDパスワード → マルチセッション用認証IDパスワード のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MLTISE_NINSHO_ID_PWD_ERR))
		{
			if (!childInMap.containsKey("mltise_ninsho_id_pwd_err"))
			{
				childInMap.put("mltise_ninsho_id_pwd_err", template.getString(EKK0361C040CBSMsg.MLTISE_NINSHO_ID_PWD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.固定IPアドレス → 固定IPアドレス のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.KOTEI_IP_AD_ERR))
		{
			if (!childInMap.containsKey("kotei_ip_ad_err"))
			{
				childInMap.put("kotei_ip_ad_err", template.getString(EKK0361C040CBSMsg.KOTEI_IP_AD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.ネットマスク → ネットマスク のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.NETMASK_ERR))
		{
			if (!childInMap.containsKey("netmask_err"))
			{
				childInMap.put("netmask_err", template.getString(EKK0361C040CBSMsg.NETMASK_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールアドレス → メールアドレス のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MLAD_ERR))
		{
			if (!childInMap.containsKey("mlad_err"))
			{
				childInMap.put("mlad_err", template.getString(EKK0361C040CBSMsg.MLAD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.容量 → 容量 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.CAPA_ERR))
		{
			if (!childInMap.containsKey("capa_err"))
			{
				childInMap.put("capa_err", template.getString(EKK0361C040CBSMsg.CAPA_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.ホスティングメール管理者メールアドレス → ホスティングメール管理者メールアドレス
		// のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.HOSML_KRISHA_MLAD_ERR))
		{
			if (!childInMap.containsKey("hosml_krisha_mlad_err"))
			{
				childInMap.put("hosml_krisha_mlad_err", template.getString(EKK0361C040CBSMsg.HOSML_KRISHA_MLAD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.ホスティングメール管理者メールボックス容量 → ホスティングメール管理者メールボックス容量
		// のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.HOSML_KRISHA_MAIL_BOX_CAPA_ERR))
		{
			if (!childInMap.containsKey("hosml_krisha_mail_box_capa_err"))
			{
				childInMap.put("hosml_krisha_mail_box_capa_err", template.getString(EKK0361C040CBSMsg.HOSML_KRISHA_MAIL_BOX_CAPA_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.ダイヤルパッドメールアドレス → ダイヤルパッドメールアドレス のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.DPAD_MLAD_ERR))
		{
			if (!childInMap.containsKey("dpad_mlad_err"))
			{
				childInMap.put("dpad_mlad_err", template.getString(EKK0361C040CBSMsg.DPAD_MLAD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.VoIPユーザーID → VoIPユーザーID のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.VOIP_USER_ID_ERR))
		{
			if (!childInMap.containsKey("voip_user_id_err"))
			{
				childInMap.put("voip_user_id_err", template.getString(EKK0361C040CBSMsg.VOIP_USER_ID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.VOIP電話番号 → VOIP電話番号 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.VOIP_TELNO_ERR))
		{
			if (!childInMap.containsKey("voip_telno_err"))
			{
				childInMap.put("voip_telno_err", template.getString(EKK0361C040CBSMsg.VOIP_TELNO_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ管理者ID → メールゲートウェイ管理者ID のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID_ERR))
		{
			if (!childInMap.containsKey("mail_gw_krisha_id_err"))
			{
				childInMap.put("mail_gw_krisha_id_err", template.getString(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ管理者IDパスワード → メールゲートウェイ管理者IDパスワード
		// のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID_PWD_ERR))
		{
			if (!childInMap.containsKey("mail_gw_krisha_id_pwd_err"))
			{
				childInMap.put("mail_gw_krisha_id_pwd_err", template.getString(EKK0361C040CBSMsg.MAIL_GW_KRISHA_ID_PWD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ管理者メールアドレス → メールゲートウェイ管理者メールアドレス
		// のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MAIL_GW_KRISHA_MLAD_ERR))
		{
			if (!childInMap.containsKey("mail_gw_krisha_mlad_err"))
			{
				childInMap.put("mail_gw_krisha_mlad_err", template.getString(EKK0361C040CBSMsg.MAIL_GW_KRISHA_MLAD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ受信メールサーバーIPアドレス →
		// メールゲートウェイ受信メールサーバーIPアドレス のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MAIL_GW_RCV_MSERVER_IP_AD_ERR))
		{
			if (!childInMap.containsKey("mail_gw_rcv_mserver_ip_ad_err"))
			{
				childInMap.put("mail_gw_rcv_mserver_ip_ad_err", template.getString(EKK0361C040CBSMsg.MAIL_GW_RCV_MSERVER_IP_AD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイ送信メールサーバーIPアドレス →
		// メールゲートウェイ送信メールサーバーIPアドレス のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.MAIL_GW_SEND_MSERVER_IP_AD_ERR))
		{
			if (!childInMap.containsKey("mail_gw_send_mserver_ip_ad_err"))
			{
				childInMap.put("mail_gw_send_mserver_ip_ad_err", template.getString(EKK0361C040CBSMsg.MAIL_GW_SEND_MSERVER_IP_AD_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.メールゲートウェイアカウント数 → メールゲートウェイアカウント数 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.ML_GW_ACCOUNT_CNT_ERR))
		{
			if (!childInMap.containsKey("ml_gw_account_cnt_err"))
			{
				childInMap.put("ml_gw_account_cnt_err", template.getString(EKK0361C040CBSMsg.ML_GW_ACCOUNT_CNT_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.公衆網電話番号 → 公衆網電話番号 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.KOSHUMO_TELNO_ERR))
		{
			if (!childInMap.containsKey("koshumo_telno_err"))
			{
				childInMap.put("koshumo_telno_err", template.getString(EKK0361C040CBSMsg.KOSHUMO_TELNO_ERR));
			}
		}
		// 〜.オプションサービス契約＜ISP＞開始.即時/翌月 → 即時/翌月 のエラー情報返却
		if (!template.isNull(EKK0361C040CBSMsg.SKJ_YKGT_ERR))
		{
			if (!childInMap.containsKey("skj_ykgt_err"))
			{
				childInMap.put("skj_ykgt_err", template.getString(EKK0361C040CBSMsg.SKJ_YKGT_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * オプションサービス契約＜ISP＞登録処理の結果をマッピングします。<br>
	 * <br>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param count リスト内の何番目のデータかを表す
	 * @throws Throwable
	 * @return 業務データ取得・書込用I/F
	 * @since 2011.05.24
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0361D010CBS(Map<?, ?> msgList, IRequestParameterReadWrite param, int count) throws Throwable
	{
		
		// 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);
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		
		/* 作業領域データ設定 */
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		// 作業項目リスト.オプションサービス契約番号 ← オプションサービス契約番号
		if (parentTemplate.isNull(EKK0361D010CBSMsg.OP_SVC_KEI_NO))
		{
			dataMap.put("op_svc_kei_no", "");
		}
		else
		{
			dataMap.put("op_svc_kei_no", parentTemplate.getString(EKK0361D010CBSMsg.OP_SVC_KEI_NO));
		}
		// 作業項目リスト.世代登録年月日時分秒（オプションサービス契約） ← 世代登録年月日時分秒(オプションサービス契約)
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KK0351_GENE_ADD_DTM))
		{
			dataMap.put("kk0351_gene_add_dtm", new String());
		}
		else
		{
			dataMap.put("kk0351_gene_add_dtm", parentTemplate.getString(EKK0361D010CBSMsg.KK0351_GENE_ADD_DTM));
		}
		// 作業項目リスト.更新年月日時分秒（オプションサービス契約） ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0361D010CBSMsg.UPD_DTM))
		{
			dataMap.put("op_svc_kei_upd_dtm", new String());
		}
		else
		{
			dataMap.put("op_svc_kei_upd_dtm", parentTemplate.getString(EKK0361D010CBSMsg.UPD_DTM));
		}
		
		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("JKKOpsvkeIkttrkToStaCC", dataMap);
		}
		
		List childList = (List)dataMap.get("EKK0361C040CBSMsg1List");
		if (childList == null)
		{
			childList = new ArrayList();
			param.setData("EKK0361C040CBSMsg1List", childList);
		}
		HashMap childDataMap = null;
		if (childList.size() <= count)
		{
			childDataMap = new HashMap();
			childList.add(childDataMap);
		}
		childDataMap = (HashMap)childList.get(count);
		
		// 〜.オプションサービス契約＜ISP＞登録.オプションサービス契約ステータス ← オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0361D010CBSMsg.OP_SVC_KEI_STAT))
		{
			childDataMap.put("op_svc_kei_stat", new String());
		}
		else
		{
			childDataMap.put("op_svc_kei_stat", parentTemplate.getString(EKK0361D010CBSMsg.OP_SVC_KEI_STAT));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0361D010CBSMsg.RSV_APLY_YMD))
		{
			childDataMap.put("rsv_aply_ymd", new String());
		}
		else
		{
			childDataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0361D010CBSMsg.RSV_APLY_YMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0361D010CBSMsg.RSV_APLY_CD))
		{
			childDataMap.put("rsv_aply_cd", new String());
		}
		else
		{
			childDataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0361D010CBSMsg.RSV_APLY_CD));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.登録年月日時分秒 ← 登録年月日時分秒
		if (parentTemplate.isNull(EKK0361D010CBSMsg.ADD_DTM))
		{
			childDataMap.put("add_dtm", new String());
		}
		else
		{
			childDataMap.put("add_dtm", parentTemplate.getString(EKK0361D010CBSMsg.ADD_DTM));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.登録オペレータアカウント ← 登録オペレータアカウント
		if (parentTemplate.isNull(EKK0361D010CBSMsg.ADD_OPEACNT))
		{
			childDataMap.put("add_opeacnt", new String());
		}
		else
		{
			childDataMap.put("add_opeacnt", parentTemplate.getString(EKK0361D010CBSMsg.ADD_OPEACNT));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0361D010CBSMsg.UPD_OPEACNT))
		{
			childDataMap.put("upd_opeacnt", new String());
		}
		else
		{
			childDataMap.put("upd_opeacnt", parentTemplate.getString(EKK0361D010CBSMsg.UPD_OPEACNT));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.無効フラグ ← 無効フラグ
		if (parentTemplate.isNull(EKK0361D010CBSMsg.MK_FLG))
		{
			childDataMap.put("mk_flg", new String());
		}
		else
		{
			childDataMap.put("mk_flg", parentTemplate.getString(EKK0361D010CBSMsg.MK_FLG));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.世代登録年月日時分秒（オプションサービス契約＜ISP＞） ←
		// 世代登録年月日時分秒(オプションサービス契約<ISP>)
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KK0361_GENE_ADD_DTM))
		{
			childDataMap.put("kk0361_gene_add_dtm", new String());
		}
		else
		{
			childDataMap.put("kk0361_gene_add_dtm", parentTemplate.getString(EKK0361D010CBSMsg.KK0361_GENE_ADD_DTM));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.メーリングリスト名（出力） ← メーリングリスト名（出力）
		if (parentTemplate.isNull(EKK0361D010CBSMsg.MLLIST_NM_O))
		{
			childDataMap.put("mllist_nm_o", new String());
		}
		else
		{
			childDataMap.put("mllist_nm_o", parentTemplate.getString(EKK0361D010CBSMsg.MLLIST_NM_O));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.課金先番号 ← 課金先番号
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KAKINS_NO))
		{
			childDataMap.put("kakins_no", new String());
		}
		else
		{
			childDataMap.put("kakins_no", parentTemplate.getString(EKK0361D010CBSMsg.KAKINS_NO));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.課金先適用開始年月日 ← 課金先適用開始年月日
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KAKINS_TSTAYMD))
		{
			childDataMap.put("kakins_tstaymd", new String());
		}
		else
		{
			childDataMap.put("kakins_tstaymd", parentTemplate.getString(EKK0361D010CBSMsg.KAKINS_TSTAYMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.課金先適用終了年月日 ← 課金先適用終了年月日
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KAKINS_TENDYMD))
		{
			childDataMap.put("kakins_tendymd", new String());
		}
		else
		{
			childDataMap.put("kakins_tendymd", parentTemplate.getString(EKK0361D010CBSMsg.KAKINS_TENDYMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.サブオプションサービス契約番号 ← サブオプションサービス契約番号
		if (parentTemplate.isNull(EKK0361D010CBSMsg.SBOP_SVC_KEI_NO))
		{
			childDataMap.put("sbop_svc_kei_no", new String());
		}
		else
		{
			childDataMap.put("sbop_svc_kei_no", parentTemplate.getString(EKK0361D010CBSMsg.SBOP_SVC_KEI_NO));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.世代登録年月日時分秒(サブオプションサービス契約)  ← 世代登録年月日時分秒(サブオプションサービス契約) 
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KK0401_GENE_ADD_DTM))
		{
			childDataMap.put("kk0401_gene_add_dtm", new String());
		}
		else
		{
			childDataMap.put("kk0401_gene_add_dtm", parentTemplate.getString(EKK0361D010CBSMsg.KK0401_GENE_ADD_DTM));
		}
		
		// 〜.オプションサービス契約＜ISP＞登録.更新年月日時分秒（サブオプションサービス契約） ← 更新年月日時分秒（サブオプションサービス契約）
		if (parentTemplate.isNull(EKK0361D010CBSMsg.KK0401_UPD_DTM))
		{
			childDataMap.put("kk0401_upd_dtm", new String());
		}
		else
		{
			childDataMap.put("kk0401_upd_dtm", parentTemplate.getString(EKK0361D010CBSMsg.KK0401_UPD_DTM));
		}
		
		// エラー情報の設定
		param = editErrorInfo_EKK0361D010CBS(param, templates, (Integer)return_code);
		
		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0361D010CBSMsg.STATUS)));
		}
		
		return param;
	}
	
	/**
	 * オプションサービス契約＜ISP＞照査締結処理の結果をマッピングします。<br>
	 * <br>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param count リスト内の何番目のデータかを表す
	 * @throws Throwable
	 * @return 業務データ取得・書込用I/F
	 * @since 2011.05.24
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0361C030CBS(Map<?, ?> msgList, IRequestParameterReadWrite param, int count) throws Throwable
	{
		
		// 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);
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		
		/* 作業領域データ設定 */
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		// 作業項目リスト.オプションサービス契約番号 ← オプションサービス契約番号
		if (parentTemplate.isNull(EKK0361C030CBSMsg.OP_SVC_KEI_NO))
		{
			dataMap.put("op_svc_kei_no", "");
		}
		else
		{
			dataMap.put("op_svc_kei_no", parentTemplate.getString(EKK0361C030CBSMsg.OP_SVC_KEI_NO));
		}
		// 作業項目リスト.世代登録年月日時分秒（オプションサービス契約） ← 世代登録年月日時分秒(オプションサービス契約)
		if (parentTemplate.isNull(EKK0361C030CBSMsg.KK0351_GENE_ADD_DTM))
		{
			dataMap.put("kk0351_gene_add_dtm", new String());
		}
		else
		{
			dataMap.put("kk0351_gene_add_dtm", parentTemplate.getString(EKK0361C030CBSMsg.KK0351_GENE_ADD_DTM));
		}
		
		// 作業項目リスト.更新年月日時分秒（オプションサービス契約） ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0361C030CBSMsg.UPD_DTM))
		{
			dataMap.put("op_svc_kei_upd_dtm", new String());
		}
		else
		{
			dataMap.put("op_svc_kei_upd_dtm", parentTemplate.getString(EKK0361C030CBSMsg.UPD_DTM));
		}
		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("JKKOpsvkeIkttrkToStaCC", dataMap);
		}
		
		List childList = (List)dataMap.get("EKK0361C030CBSMsg1List");
		if (childList == null)
		{
			childList = new ArrayList();
			param.setData("EKK0361C030CBSMsg1List", childList);
		}
		HashMap childDataMap = null;
		if (childList.size() <= count)
		{
			childDataMap = new HashMap();
			childList.add(childDataMap);
		}
		childDataMap = (HashMap)childList.get(count);
		
		// 〜.オプションサービス契約＜ISP＞照査締結.オプションサービス契約ステータス ← オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0361C030CBSMsg.OP_SVC_KEI_STAT))
		{
			childDataMap.put("op_svc_kei_stat", new String());
		}
		else
		{
			childDataMap.put("op_svc_kei_stat", parentTemplate.getString(EKK0361C030CBSMsg.OP_SVC_KEI_STAT));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHOSA_YMD))
		{
			childDataMap.put("shosa_ymd", new String());
		}
		else
		{
			childDataMap.put("shosa_ymd", parentTemplate.getString(EKK0361C030CBSMsg.SHOSA_YMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHOSA_CL_YMD))
		{
			childDataMap.put("shosa_cl_ymd", new String());
		}
		else
		{
			childDataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0361C030CBSMsg.SHOSA_CL_YMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0361C030CBSMsg.KEI_CNC_YMD))
		{
			childDataMap.put("kei_cnc_ymd", new String());
		}
		else
		{
			childDataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0361C030CBSMsg.KEI_CNC_YMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0361C030CBSMsg.RSV_APLY_YMD))
		{
			childDataMap.put("rsv_aply_ymd", new String());
		}
		else
		{
			childDataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0361C030CBSMsg.RSV_APLY_YMD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0361C030CBSMsg.RSV_APLY_CD))
		{
			childDataMap.put("rsv_aply_cd", new String());
		}
		else
		{
			childDataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0361C030CBSMsg.RSV_APLY_CD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.登録年月日時分秒 ← 登録年月日時分秒
		if (parentTemplate.isNull(EKK0361C030CBSMsg.ADD_DTM))
		{
			childDataMap.put("add_dtm", new String());
		}
		else
		{
			childDataMap.put("add_dtm", parentTemplate.getString(EKK0361C030CBSMsg.ADD_DTM));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.登録オペレータアカウント ← 登録オペレータアカウント
		if (parentTemplate.isNull(EKK0361C030CBSMsg.ADD_OPEACNT))
		{
			childDataMap.put("add_opeacnt", new String());
		}
		else
		{
			childDataMap.put("add_opeacnt", parentTemplate.getString(EKK0361C030CBSMsg.ADD_OPEACNT));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0361C030CBSMsg.UPD_OPEACNT))
		{
			childDataMap.put("upd_opeacnt", new String());
		}
		else
		{
			childDataMap.put("upd_opeacnt", parentTemplate.getString(EKK0361C030CBSMsg.UPD_OPEACNT));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.無効フラグ ← 無効フラグ
		if (parentTemplate.isNull(EKK0361C030CBSMsg.MK_FLG))
		{
			childDataMap.put("mk_flg", new String());
		}
		else
		{
			childDataMap.put("mk_flg", parentTemplate.getString(EKK0361C030CBSMsg.MK_FLG));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.世代登録年月日時分秒（オプションサービス契約＜ISP＞） ←
		// 世代登録年月日時分秒(オプションサービス契約<ISP>)
		if (parentTemplate.isNull(EKK0361C030CBSMsg.KK0361_GENE_ADD_DTM))
		{
			childDataMap.put("kk0361_gene_add_dtm", new String());
		}
		else
		{
			childDataMap.put("kk0361_gene_add_dtm", parentTemplate.getString(EKK0361C030CBSMsg.KK0361_GENE_ADD_DTM));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.初期POPIDパスワード ← 初期POPIDパスワード
		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHK_POP_ID_PWD))
		{
			childDataMap.put("shk_pop_id_pwd", new String());
		}
		else
		{
			childDataMap.put("shk_pop_id_pwd", parentTemplate.getString(EKK0361C030CBSMsg.SHK_POP_ID_PWD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.メールアドレス ← メールアドレス
		if (parentTemplate.isNull(EKK0361C030CBSMsg.MLAD))
		{
			childDataMap.put("mlad", new String());
		}
		else
		{
			childDataMap.put("mlad", parentTemplate.getString(EKK0361C030CBSMsg.MLAD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.POPID ← POPID
		if (parentTemplate.isNull(EKK0361C030CBSMsg.POP_ID))
		{
			childDataMap.put("pop_id", new String());
		}
		else
		{
			childDataMap.put("pop_id", parentTemplate.getString(EKK0361C030CBSMsg.POP_ID));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.初期WebIDパスワード ← 初期WebIDパスワード
		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHK_WEB_ID_PWD))
		{
			childDataMap.put("shk_web_id_pwd", new String());
		}
		else
		{
			childDataMap.put("shk_web_id_pwd", parentTemplate.getString(EKK0361C030CBSMsg.SHK_WEB_ID_PWD));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.WebID ← WebID
		if (parentTemplate.isNull(EKK0361C030CBSMsg.WEB_ID))
		{
			childDataMap.put("web_id", new String());
		}
		else
		{
			childDataMap.put("web_id", parentTemplate.getString(EKK0361C030CBSMsg.WEB_ID));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.ダイヤルパッドID（出力） ← ダイヤルパッドID（出力）
		if (parentTemplate.isNull(EKK0361C030CBSMsg.DPAD_ID_O))
		{
			childDataMap.put("dpad_id_o", new String());
		}
		else
		{
			childDataMap.put("dpad_id_o", parentTemplate.getString(EKK0361C030CBSMsg.DPAD_ID_O));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.ダイヤルパッドMAPID ← ダイヤルパッドMAPID
		if (parentTemplate.isNull(EKK0361C030CBSMsg.DPAD_MAPID))
		{
			childDataMap.put("dpad_mapid", new String());
		}
		else
		{
			childDataMap.put("dpad_mapid", parentTemplate.getString(EKK0361C030CBSMsg.DPAD_MAPID));
		}
		
		// 〜.オプションサービス契約＜ISP＞照査締結.ダイヤルアップ接続用認証ID ← ダイヤルアップ接続用認証ID
		if (parentTemplate.isNull(EKK0361C030CBSMsg.DUPCON_NINSHO_ID))
		{
			childDataMap.put("dupcon_ninsho_id", new String());
		}
		else
		{
			childDataMap.put("dupcon_ninsho_id", parentTemplate.getString(EKK0361C030CBSMsg.DUPCON_NINSHO_ID));
		}
		
		// エラー情報の設定
		editErrorInfo_EKK0361C030CBS(param, templates, (Integer)return_code);
		
		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0361C030CBSMsg.STATUS)));
		}
		return param;
	}
	
	/**
	 * オプションサービス契約＜ISP＞開始処理の結果をマッピングします。<br>
	 * <br>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param count リスト内の何番目のデータかを表す
	 * @throws Throwable
	 * @return 業務データ取得・書込用I/F
	 * @since 2011.05.24
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0361C040CBS(Map<?, ?> msgList, IRequestParameterReadWrite param, int count) throws Throwable
	{
		
		// 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);
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		
		/* 作業領域データ設定 */
		dataMap = (HashMap)workMap.get("WORK");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			workMap.put("WORK", dataMap);
		}
		// 作業項目リスト.オプションサービス契約番号 ← オプションサービス契約番号
		if (parentTemplate.isNull(EKK0361C040CBSMsg.OP_SVC_KEI_NO))
		{
			dataMap.put("op_svc_kei_no", "");
		}
		else
		{
			dataMap.put("op_svc_kei_no", parentTemplate.getString(EKK0361C040CBSMsg.OP_SVC_KEI_NO));
		}
		// 作業項目リスト.世代登録年月日時分秒（オプションサービス契約） ← 世代登録年月日時分秒(オプションサービス契約)
		if (parentTemplate.isNull(EKK0361C040CBSMsg.KK0351_GENE_ADD_DTM))
		{
			dataMap.put("kk0351_gene_add_dtm", new String());
		}
		else
		{
			dataMap.put("kk0351_gene_add_dtm", parentTemplate.getString(EKK0361C040CBSMsg.KK0351_GENE_ADD_DTM));
		}
		
		// 作業項目リスト.更新年月日時分秒（オプションサービス契約） ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0361C040CBSMsg.UPD_DTM))
		{
			dataMap.put("op_svc_kei_upd_dtm", new String());
		}
		else
		{
			dataMap.put("op_svc_kei_upd_dtm", parentTemplate.getString(EKK0361C040CBSMsg.UPD_DTM));
		}
		
		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("JKKOpsvkeIkttrkToStaCC", dataMap);
		}
		
		List childList = (List)dataMap.get("EKK0361C040CBSMsg1List");
		if (childList == null)
		{
			childList = new ArrayList();
			param.setData("EKK0361C040CBSMsg1List", childList);
		}
		HashMap childDataMap = null;
		if (childList.size() <= count)
		{
			childDataMap = new HashMap();
			childList.add(childDataMap);
		}
		childDataMap = (HashMap)childList.get(count);
		
		// オプションサービス契約＜ISP＞開始.オプションサービス契約ステータス ← オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0361C040CBSMsg.OP_SVC_KEI_STAT))
		{
			childDataMap.put("op_svc_kei_stat", new String());
		}
		else
		{
			childDataMap.put("op_svc_kei_stat", parentTemplate.getString(EKK0361C040CBSMsg.OP_SVC_KEI_STAT));
		}
		
		// オプションサービス契約＜ISP＞開始.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0361C040CBSMsg.RSV_APLY_CD))
		{
			childDataMap.put("rsv_aply_cd", new String());
		}
		else
		{
			childDataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0361C040CBSMsg.RSV_APLY_CD));
		}
		
		// オプションサービス契約＜ISP＞開始.プラン終了年月日 ← プラン終了年月日
		if (parentTemplate.isNull(EKK0361C040CBSMsg.PLAN_ENDYMD))
		{
			childDataMap.put("plan_endymd", new String());
		}
		else
		{
			childDataMap.put("plan_endymd", parentTemplate.getString(EKK0361C040CBSMsg.PLAN_ENDYMD));
		}
		
		// オプションサービス契約＜ISP＞開始.プラン課金終了年月日 ← プラン課金終了年月日
		if (parentTemplate.isNull(EKK0361C040CBSMsg.PLAN_CHRG_ENDYMD))
		{
			childDataMap.put("plan_chrg_endymd", new String());
		}
		else
		{
			childDataMap.put("plan_chrg_endymd", parentTemplate.getString(EKK0361C040CBSMsg.PLAN_CHRG_ENDYMD));
		}
		// オプションサービス契約＜ISP＞開始.サービス開始年月日 ← サービス開始年月日
		if (parentTemplate.isNull(EKK0361C040CBSMsg.SVC_STAYMD))
		{
			childDataMap.put("svc_staymd", new String());
		}
		else
		{
			childDataMap.put("svc_staymd", parentTemplate.getString(EKK0361C040CBSMsg.SVC_STAYMD));
		}
		// オプションサービス契約＜ISP＞開始.サービス課金開始年月日 ← サービス課金開始年月日
		if (parentTemplate.isNull(EKK0361C040CBSMsg.SVC_CHRG_STAYMD))
		{
			childDataMap.put("svc_chrg_staymd", new String());
		}
		else
		{
			childDataMap.put("svc_chrg_staymd", parentTemplate.getString(EKK0361C040CBSMsg.SVC_CHRG_STAYMD));
		}
		// オプションサービス契約＜ISP＞開始.サービス終了年月日 ← サービス終了年月日
		if (parentTemplate.isNull(EKK0361C040CBSMsg.SVC_ENDYMD))
		{
			childDataMap.put("svc_endymd", new String());
		}
		else
		{
			childDataMap.put("svc_endymd", parentTemplate.getString(EKK0361C040CBSMsg.SVC_ENDYMD));
		}
		
		// オプションサービス契約＜ISP＞開始.サービス課金終了年月日 ← サービス課金終了年月日
		if (parentTemplate.isNull(EKK0361C040CBSMsg.SVC_CHRG_ENDYMD))
		{
			childDataMap.put("svc_chrg_endymd", new String());
		}
		else
		{
			childDataMap.put("svc_chrg_endymd", parentTemplate.getString(EKK0361C040CBSMsg.SVC_CHRG_ENDYMD));
		}
		
		// オプションサービス契約＜ISP＞開始.登録年月日時分秒 ← 登録年月日時分秒
		if (parentTemplate.isNull(EKK0361C040CBSMsg.ADD_DTM))
		{
			childDataMap.put("add_dtm", new String());
		}
		else
		{
			childDataMap.put("add_dtm", parentTemplate.getString(EKK0361C040CBSMsg.ADD_DTM));
		}
		
		// オプションサービス契約＜ISP＞開始.登録オペレータアカウント ← 登録オペレータアカウント
		if (parentTemplate.isNull(EKK0361C040CBSMsg.ADD_OPEACNT))
		{
			childDataMap.put("add_opeacnt", new String());
		}
		else
		{
			childDataMap.put("add_opeacnt", parentTemplate.getString(EKK0361C040CBSMsg.ADD_OPEACNT));
		}
		
		// オプションサービス契約＜ISP＞開始.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0361C040CBSMsg.UPD_OPEACNT))
		{
			childDataMap.put("upd_opeacnt", new String());
		}
		else
		{
			childDataMap.put("upd_opeacnt", parentTemplate.getString(EKK0361C040CBSMsg.UPD_OPEACNT));
		}
		
		// オプションサービス契約＜ISP＞開始.無効フラグ ← 無効フラグ
		if (parentTemplate.isNull(EKK0361C040CBSMsg.MK_FLG))
		{
			childDataMap.put("mk_flg", new String());
		}
		else
		{
			childDataMap.put("mk_flg", parentTemplate.getString(EKK0361C040CBSMsg.MK_FLG));
		}
		
		// オプションサービス契約＜ISP＞開始.世代登録年月日時分秒（オプションサービス契約＜ISP＞） ←
		// 世代登録年月日時分秒(オプションサービス契約<ISP>)
		if (parentTemplate.isNull(EKK0361C040CBSMsg.KK0361_GENE_ADD_DTM))
		{
			childDataMap.put("kk0361_gene_add_dtm", new String());
		}
		else
		{
			childDataMap.put("kk0361_gene_add_dtm", parentTemplate.getString(EKK0361C040CBSMsg.KK0361_GENE_ADD_DTM));
		}
		
		
		// オプションサービス契約＜ISP＞開始.ホスティングメール管理者ID ← ホスティングメール管理者ID
		if (parentTemplate.isNull(EKK0361C040CBSMsg.HOSML_KRISHA_ID))
		{
			childDataMap.put("hosml_krisha_id", new String());
		}
		else
		{
			childDataMap.put("hosml_krisha_id", parentTemplate.getString(EKK0361C040CBSMsg.HOSML_KRISHA_ID));
		}
		
		// オプションサービス契約＜ISP＞開始.ホスティング初期メール管理者IDパスワード ← ホスティング初期メール管理者IDパスワード
		if (parentTemplate.isNull(EKK0361C040CBSMsg.HOSTING_SHKM_KRISHA_ID_PWD))
		{
			childDataMap.put("hosting_shkm_krisha_id_pwd", new String());
		}
		else
		{
			childDataMap.put("hosting_shkm_krisha_id_pwd", parentTemplate.getString(EKK0361C040CBSMsg.HOSTING_SHKM_KRISHA_ID_PWD));
		}
		
		// オプションサービス契約＜ISP＞開始.ホスティングメール管理者POPID ← ホスティングメール管理者POPID
		if (parentTemplate.isNull(EKK0361C040CBSMsg.HOSML_KRISHA_POP_ID))
		{
			childDataMap.put("hosml_krisha_pop_id", new String());
		}
		else
		{
			childDataMap.put("hosml_krisha_pop_id", parentTemplate.getString(EKK0361C040CBSMsg.HOSML_KRISHA_POP_ID));
		}
		
		// オプションサービス契約＜ISP＞開始.ホスティング初期メール管理者POPIDパスワード ←
		// ホスティング初期メール管理者POPIDパスワード
		if (parentTemplate.isNull(EKK0361C040CBSMsg.HOS_SHKM_KRISHA_POP_ID_PWD))
		{
			childDataMap.put("hos_shkm_krisha_pop_id_pwd", new String());
		}
		else
		{
			childDataMap.put("hos_shkm_krisha_pop_id_pwd", parentTemplate.getString(EKK0361C040CBSMsg.HOS_SHKM_KRISHA_POP_ID_PWD));
		}
		
		// エラー情報の設定
		editErrorInfo_EKK0361C040CBS(param, templates, (Integer)return_code);
		
		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0361C040CBSMsg.STATUS)));
		}
		
		return param;
	}
	
	/**
	 * オプションサービス契約作成数を取得します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private long getOpvkCnt(IRequestParameterReadOnly param) throws RequestParameterException
	{
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		
		// オプションサービス契約作成数
		long opsvke_cnt = 0;
		if (inMap == null || inMap.get("opsvke_cnt") == null || "".equals(inMap.get("opsvke_cnt")))
		{
			opsvke_cnt = 0;
		}
		else
		{
			opsvke_cnt = (Long)inMap.get("opsvke_cnt");
		}
		
		return opsvke_cnt;
		
	}
	
	/**
	 * サービス契約ステータスを取得します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private String getSvcKeiStat(IRequestParameterReadOnly param) throws RequestParameterException
	{
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		
		// サービス契約ステータス
		String svcKeiStat = null;
		if (inMap == null || inMap.get("svc_kei_stat") == null || "".equals(inMap.get("svc_kei_stat")))
		{
			svcKeiStat = "";
		}
		else
		{
			svcKeiStat = (String)inMap.get("svc_kei_stat");
		}
		
		return svcKeiStat;
		
	}
	
	/**
	 * 実施オプションサービス契約ステータスを取得します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	private String getJssiOpSvcKeiStat(IRequestParameterReadOnly param) throws RequestParameterException
	{
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("JKKOpsvkeIkttrkToStaCC");
		
		// サービス契約ステータス
		String jssi_op_svc_kei_stat = null;
		if (inMap == null || inMap.get("jssi_op_svc_kei_stat") == null || "".equals(inMap.get("jssi_op_svc_kei_stat")))
		{
			jssi_op_svc_kei_stat = "";
		}
		else
		{
			jssi_op_svc_kei_stat = (String)inMap.get("jssi_op_svc_kei_stat");
		}
		
		return jssi_op_svc_kei_stat;
		
	}
	
	/**
	 * データ登録内容(CAANMsg)からサービスI/F実行用のマップを作成します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> getSearchParamMap(IRequestParameterReadOnly param, CAANMsg msg) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = msg;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
		
	}

	/**
	 * 呼び出したサービスIFの処理結果を判定します。
	 * 
	 * @param result
	 * @throws Throwable
	 */
	private void checkExecutionResult(Map<?, ?> result) throws Throwable
	{
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		Integer status = templates[0].getInt(JCMConstants.STATUS_INT_KEY);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

}
