/** ***************************************************************************
/* KKSV0118OPOperation.java All Rights reserved,Copyright (c) K-Opticom
/*****************************************************************************/
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.custom.constant.JKKSvkeiShosaChkConstCC;
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.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.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0091C012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0101C012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0111C012CBSMsg;


/**
 * サービス契約照査チェックで使用するマッパーです。<p>
 * <BR>
 * @ author FJ
 */
public class JKKSvkeiShosaChkShosaClChkMapperCC {
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0081A010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
		
		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード（デフォルト：１）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0081A010);

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		String operateDate = JCCBPCommon.getOpeDate(null);
		
		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0081A010);

		// サービス契約一意照会.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO))) {
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}
			
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, operateDate);

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光ネット＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0091C012(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0091C012CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0091C012CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0091C012CBSMsg.TEMPLATEID, "EKK0091C012");

		// 機能コード（デフォルト：１）
		template.set(EKK0091C012CBSMsg.FUNC_CODE, funcCode);

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// 機能コード
		template.set(EKK0091C012CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0091C012CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0091C012CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0091C012CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0091C012CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光TV＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0101C012(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0101C012CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0101C012CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0101C012CBSMsg.TEMPLATEID, "EKK0101C012");

		// 機能コード（デフォルト：１）
		template.set(EKK0101C012CBSMsg.FUNC_CODE, funcCode);

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// 機能コード
		template.set(EKK0101C012CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0101C012CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0101C012CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0101C012CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0101C012CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光電話＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0111C012(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0111C012CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0111C012CBSMsg().getContents());
		
		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
		if (null == funcCode)
		{
			funcCode = JKKSvkeiShosaChkConstCC.FUNC_CODE_SHOSA;
		}

		// テンプレートID
		template.set(EKK0111C012CBSMsg.TEMPLATEID, "EKK0111C012");

		// 機能コード（デフォルト：１）
		template.set(EKK0111C012CBSMsg.FUNC_CODE, funcCode);

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// 機能コード
		template.set(EKK0111C012CBSMsg.FUNC_CODE, funcCode);

		// サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO)))
		{
			template.setNull(EKK0111C012CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0111C012CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}

		// 起動元コード
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.KIDO_CD)))
		{
			template.setNull(EKK0111C012CBSMsg.KIDO_CD);
		}
		else
		{
			template.set(EKK0111C012CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaChkConstCC.KIDO_CD));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoモバイル＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0121C012(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

//		CAANMsg template = new CAANMsg(EKK0121C012CBSMsg.class.getName());
//		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
//
//		//nullを設定
//		fillCAANMSGNullMapping(template, new EKK0121C012CBSMsg().getContents());
//		
//		// ユーザデータ情報
//		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);
//
//		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);
//
//		svkeiData = (HashMap)shosaList.get(userDataIndex);
//
//		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
//		if (null == funcCode)
//		{
//			funcCode = JKKSvkeiShosaChkConstCC.FUNC_CODE_SHOSA;
//		}

//		// テンプレートID
//		template.set(EKK0121C012CBSMsg.TEMPLATEID, "EKK0121C012");
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0121C012CBSMsg.FUNC_CODE, funcCode);
//
//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//		// 機能コード
//		template.set(EKK0121C012CBSMsg.FUNC_CODE, funcCode);
//
//		// サービス契約番号
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO)))
//		{
//			template.setNull(EKK0121C012CBSMsg.SVC_KEI_NO);
//		}
//		else
//		{
//			template.set(EKK0121C012CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
//		}
//
//		// 起動元コード
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SHORI_DIV)))
//		{
//			template.setNull(EKK0121C012CBSMsg.KIDO_CD);
//		}
//		else
//		{
//			template.set(EKK0121C012CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaChkConstCC.SHORI_DIV));
//		}
//
//		templateList.add(template);
//
//		return templateList;
		
		return null;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoADSL＞照査チェック
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0141C012(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

//		CAANMsg template = new CAANMsg(EKK0141C012CBSMsg.class.getName());
//		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
//
//		//nullを設定
//		fillCAANMSGNullMapping(template, new EKK0121C012CBSMsg().getContents());
//		
//		// ユーザデータ情報
//		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);
//
//		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);
//
//		svkeiData = (HashMap)shosaList.get(userDataIndex);
//
//		String funcCode = (String)userMap.get(JCMConstants.FUNC_CODE_KEY);
//		if (null == funcCode)
//		{
//			funcCode = JKKSvkeiShosaChkConstCC.FUNC_CODE_SHOSA;
//		}
//		// テンプレートID
//		template.set(EKK0141C012CBSMsg.TEMPLATEID, "EKK0141C012");
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0141C012CBSMsg.FUNC_CODE, funcCode);
//
//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//		// 機能コード
//		template.set(EKK0141C012CBSMsg.FUNC_CODE, funcCode);
//
//		// サービス契約番号
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO)))
//		{
//			template.setNull(EKK0141C012CBSMsg.SVC_KEI_NO);
//		}
//		else
//		{
//			template.set(EKK0141C012CBSMsg.SVC_KEI_NO, svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
//		}
//
//		// 起動元コード
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SHORI_DIV)))
//		{
//			template.setNull(EKK0141C012CBSMsg.KIDO_CD);
//		}
//		else
//		{
//			template.set(EKK0141C012CBSMsg.KIDO_CD, svkeiData.get(JKKSvkeiShosaChkConstCC.SHORI_DIV));
//		}
//
//		templateList.add(template);
//
//		return templateList;
		
		return null;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光ネット＞照査チェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0091C012(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0091C012CBSMsg.STATUS);
		if (returnCode.intValue() != 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;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0091C012CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0091C012CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0091C012CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0091C012CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光TV＞照査チェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0101C012(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0101C012CBSMsg.STATUS);
		if (returnCode.intValue() != 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;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0101C012CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0101C012CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0101C012CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0101C012CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eo光電話＞照査チェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0111C012(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0111C012CBSMsg.STATUS);
		if (returnCode.intValue() != 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;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		// サービス契約番号エラー
		if (!template.isNull(EKK0111C012CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0111C012CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 起動元コードエラー
		if (!template.isNull(EKK0111C012CBSMsg.KIDO_CD_ERR)) {
			if (!inMap.containsKey("kido_cd_err")) {
				inMap.put("kido_cd_err", template.getString(EKK0111C012CBSMsg.KIDO_CD_ERR));
			}
		}
		
		// コントロールマップに設定するエラーデータを生成
		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoモバイル＞照査チェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0121C012(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
//		// リターンコード取得
//		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
//
//		int templateStatus = template.getInt(EKK0121C012CBSMsg.STATUS);
//		if (returnCode.intValue() != 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;
//		
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);
//
//		// サービス契約番号エラー
//		if (!template.isNull(EKK0121C012CBSMsg.SVC_KEI_NO_ERR)) {
//			if (!inMap.containsKey("svc_kei_no_err")) {
//				inMap.put("svc_kei_no_err", template.getString(EKK0121C012CBSMsg.SVC_KEI_NO_ERR));
//			}
//		}
//		// 起動元コードエラー
//		if (!template.isNull(EKK0121C012CBSMsg.KIDO_CD_ERR)) {
//			if (!inMap.containsKey("kido_cd_err")) {
//				inMap.put("kido_cd_err", template.getString(EKK0121C012CBSMsg.KIDO_CD_ERR));
//			}
//		}
//		
//		// コントロールマップに設定するエラーデータを生成
//		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約＜eoADSL＞照査チェック
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList 照査マップリスト
	 * @param param 業務データ取得・書込用I/F
	 * @return エラー情報
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Object> editResultRPEKK0141C012(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception {
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errorList = new ArrayList();
		
//		// リターンコード取得
//		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
//
//		int templateStatus = template.getInt(EKK0141C012CBSMsg.STATUS);
//		if (returnCode.intValue() != 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;
//		
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);
//
//		// サービス契約番号エラー
//		if (!template.isNull(EKK0141C012CBSMsg.SVC_KEI_NO_ERR)) {
//			if (!inMap.containsKey("svc_kei_no_err")) {
//				inMap.put("svc_kei_no_err", template.getString(EKK0141C012CBSMsg.SVC_KEI_NO_ERR));
//			}
//		}
//		// 起動元コードエラー
//		if (!template.isNull(EKK0141C012CBSMsg.KIDO_CD_ERR)) {
//			if (!inMap.containsKey("kido_cd_err")) {
//				inMap.put("kido_cd_err", template.getString(EKK0141C012CBSMsg.KIDO_CD_ERR));
//			}
//		}
//		
//		// コントロールマップに設定するエラーデータを生成
//		TemplateErrorUtil.getErrorInfo(msgList, errorList);

		return errorList;
	}
	
	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		
		//要素ごとのループ
		for(int i = 0 ; i < contents.length ; i++)
		{
			
			Object element = null;
			
			//キーに該当する箇所の取得
			element = contents[i][0];

			//Nullでマッピング
			msg.setNull((String)element);
			
		}
	}
	
	/**
	 * 条件部の共通する項目の設定する
	 * 
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editInMsgBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		
		// オペレータ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);
		
	}
}
