/*******************************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 * システム名        ：eo顧客基幹システム
 * モジュール名      ：JZMEnumSwitchCC
 * ソースファイル名  ：JZMEnumSwitchCC.java
 * 作成者            ：富士通
 * 日付              ：2024年04月01日
 *＜機能概要＞
 * ENUM切替CC
 *＜修正履歴＞
 *   バージョン    修正日      修正者      修正内容
 *  v72.00.00      2024/04/01  FJ)寺田     新規作成 【ANK-4494-00-00】双方向番ポ STEP1
 *  v72.00.00      2024/08/22  FJ)寺田     ANK-4494-00-00_【eo定期】 双方向番ポ対応 STEP2
 *  
 ********************************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKTelnoStatJudgeConstCC;
import com.fujitsu.futurity.bp.custom.constant.JZMEnumSwitchConstCC;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.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 com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0081B033CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B040CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0151C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111E010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121E011CBSMsg;
/**
 * ENUM切替部品クラス
 * 
 * @author FJ)寺田
 * 
 */
public class JZMEnumSwitchCC extends AbstractCommonComponent {

	/**
	 * コンストラクタ. <br>
	 */
	public JZMEnumSwitchCC() {
	}

	/** 申請内容フラグ_1：ポートアウト(ＯＰＴ電話番号) */
	private static final String SINSEI_NAIYO_FLG_1 = "1";
	/** 申請内容フラグ_2：事業者間移転(ＯＰＴ電話番号) */
	private static final String SINSEI_NAIYO_FLG_2 = "2";
	/** 申請内容フラグ_3：番ポ廃止(他社受付) */
	private static final String SINSEI_NAIYO_FLG_3 = "3";
	/** 申請内容フラグ_4：事業者間移転(他社電話番号) */
	private static final String SINSEI_NAIYO_FLG_4 = "4";
	/** 申請内容フラグ_5：ポートアウト(ＯＰＴ電話番号)・取消 */
	private static final String SINSEI_NAIYO_FLG_5 = "5";
	/** 申請内容フラグ_6：事業者間移転(ＯＰＴ電話番号)・取消 */
	private static final String SINSEI_NAIYO_FLG_6 = "6";
	/** 申請内容フラグ_7：番ポ廃止(他社受付)・取消 */
	private static final String SINSEI_NAIYO_FLG_7 = "7";

	
	/*******************************************************************/
	/** テンプレートＩＤ **/
	/*******************************************************************/
	/** エイジング一意照会 */
	private static final String TEMPLATE_ID_EZM0111A010 = "EZM0111A010";

	/** エイジング対象使用終了 */
	private static final String TAMPLATE_ID_EZM0111C010 = "EZM0111C010";
	/** エイジング対象回復 */
	private static final String TAMPLATE_ID_EZM0111C020 = "EZM0111C020";
	/** エイジング回復可能期間終了 */
	private static final String TAMPLATE_ID_EZM0111C030 = "EZM0111C030";
	/** エイジング対象登録 */
	private static final String TAMPLATE_ID_EZM0111D010 = "EZM0111D010";
	/** エイジング削除 */
	private static final String TAMPLATE_ID_EZM0111E010 = "EZM0111E010";

	/** サービス契約一覧照会（電話番号） */
	private static final String TEMPLATE_ID_EKK0081B033 = "EKK0081B033";

	/** サービス契約内訳＜eo光電話＞一意照会 */
	private static final String TEMPLATE_ID_EKK0191A010 = "EKK0191A010";
	/** サービス契約内訳<eo光電話>一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0191B001 = "EKK0191B001";
	/** サービス契約内訳＜eo光電話＞一意照会（電話番号） */
	private static final String TEMPLATE_ID_EKK0191B040 = "EKK0191B040";

	/** 電話番号変更 */
	private static final String TAMPLATE_ID_EZM0121C010 = "EZM0121C010";
	/** 電話番号物理削除 */
	private static final String TAMPLATE_ID_EZM0121E011 = "EZM0121E011";

	/** ポート受付情報変更 */
	private static final String TAMPLATE_ID_ETU0151C010 = "ETU0151C010";

	
	/**
	 * エラーメッセージ
	 * /
	/** 正常終了 */
	public static final String NORMAL_END = "NORMAL_END";
	/** 解約・休止トーキ中エラー */
	public static final String ERROR_DSL_PAUSE_TOKI = "ERROR_DSL_PAUSE_TOKI";
	/** 移転先開通後トーキ中エラー */
	public static final String ERROR_ITENS_OPAF_TOKI = "ERROR_ITENS_OPAF_TOKI";

	/** 電話番号状態判定_対象外状態フラグ */
	public String NOT_JUDGE = "0";

	/** 電話番号状態判定_チェックフラグ：1 ポートアウト中 */
	public static final String TELNOSTATJUDGE_01 = "01";

	/** 電話番号状態判定_チェックフラグ：2 ポートアウト中以外 */
	public static final String TELNOSTATJUDGE_02 = "02";
	
	/** エラー用 */
	private static final String SC_ERROR_STRING = "サービスコンポーネントエラー";
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>デバッグログを出力します<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param dumpObj 出力するオブジェクト
	 */
	private void printlnEjbLog(Object dumpObj) {
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), dumpObj, null, null, null);
	}

	/**
	 * ENUM切替処理をする。
	 * 
	 * <br>
	 * 
	 * @param param モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param fixedText ユーザ任意文字列()
	 * @throws Exception 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite enumSwitch(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {

		printlnEjbLog("JZMEnumSwitchCC:start");

		HashMap<String, Object> inMap = (HashMap<String, Object>) param.getData(fixedText);

		if (inMap == null) {
			inMap = new HashMap<String, Object>();
			param.setData(fixedText, inMap);
		}

		// 機能コード ← ENUM切替処理マップ．機能コード
		String funcCd = (String) inMap.get(JZMEnumSwitchConstCC.FUNC_CODE);

		// 機能コードが"0"の場合、処理せずに終了
		if ("0".equals(funcCd)) {
			return param;
		}

		// 申請内容フラグ ← ENUM切替処理マップ．申請内容フラグ
		String shinsei_naiyou = (String) inMap.get(JZMEnumSwitchConstCC.KEY_SINSEI_NAIYO_FLG);
		printlnEjbLog("JZMEnumSwitchCC:enumSwitch: " + "申請内容フラグ: " + shinsei_naiyou);

		ArrayList childList = null;
		childList = (ArrayList) inMap.get(JZMEnumSwitchConstCC.ENUMSWITCHCC_LIST);

		if (childList == null) {
			childList = new ArrayList();
		}

		HashMap<Object, Object> map = new HashMap<Object, Object>();

		if (shinsei_naiyou == null || "".equals(shinsei_naiyou) || JZMEnumSwitchConstCC.SINSEI_NAIYO_FLG_9.equals(shinsei_naiyou)) {

			// null or 空 or "9"の場合は、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_0001);

			return param;
		}
		else if (SINSEI_NAIYO_FLG_1.equals(shinsei_naiyou)) {
			// ポートアウト(ＯＰＴ電話番号)
			portOut_OPTtelno(handle, param, fixedText, funcCd, inMap);
		}
		else if (SINSEI_NAIYO_FLG_2.equals(shinsei_naiyou)) {
			// 事業者間移転(ＯＰＴ電話番号)の場合、
			interCompany_OPTtelno(handle, param, fixedText, funcCd, inMap);
		}
		else if (SINSEI_NAIYO_FLG_3.equals(shinsei_naiyou)) {
			// 番ポ廃止(他社受付)の場合、
			bmpAbolition_OtherComp(handle, param, fixedText, funcCd, inMap);
		}
		else if (SINSEI_NAIYO_FLG_4.equals(shinsei_naiyou)) {
			// 事業者間移転(他社電話番号)の場合、
			interCompany_Othertelno(handle, param, fixedText, funcCd, inMap);
		}
		else if (SINSEI_NAIYO_FLG_5.equals(shinsei_naiyou)) {
			// ポートアウト(ＯＰＴ電話番号)・取消の場合、
			portOut_OPTtelno_Cancel(handle, param, fixedText, funcCd, inMap);
		}
		else if (SINSEI_NAIYO_FLG_6.equals(shinsei_naiyou)) {
			// 事業者間移転(ＯＰＴ電話番号)・取消の場合、
			interCompany_OPTtelno_Cancel(handle, param, fixedText, funcCd, inMap);
		}
		else if (SINSEI_NAIYO_FLG_7.equals(shinsei_naiyou)) {
			// 番ポ廃止(他社受付)・取消の場合、
			bmpAbolition_OtherComp_Cancel(handle, param, fixedText, funcCd, inMap);
		}

		// 返却処理
		childList.add(map);
		inMap.put(JZMEnumSwitchConstCC.ENUMSWITCHCC_LIST, childList);

		printlnEjbLog("JZMEnumSwitchCC:end");
		return param;
	}

	/**
	 * 申請内容_1：ポートアウト(ＯＰＴ電話番号)処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite portOut_OPTtelno(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:portOut_OPTtelno:start");

		// 申請内容：ポートアウト(ＯＰＴ電話番号) の場合、

		// 関連チェック--------------------
		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_1001);
			param.setData(fixedText, inMap);
			return param;
		}

		// トーキ登録済みチェック
		if (!chkItenToki(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// トーキ中の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_1002);
			param.setData(fixedText, inMap);
			return param;
		}

		// 電話番号状態チェック
		if (!telnoStatJudge(handle, param, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO), TELNOSTATJUDGE_01)) {
			if ("1".equals(this.NOT_JUDGE)) {
				// 電話番号状態判定：判定対象外の場合、エラーフラグを持たせて呼出元へ返す。
				inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_0002);
				param.setData(fixedText, inMap);
				return param;
			}
			// ポートアウト中の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_1003);
			param.setData(fixedText, inMap);
			return param;
		}

// ANK-4494-00-00 STEP2 ADD START
		// エイジングステータス
		String agingStat = "";
// ANK-4494-00-00 STEP2 ADD END
		
// ANK-4494-00-00 STEP2 MOD START
//		// エイジングステータスチェック
//		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_200)) {
//			// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
//			// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスが回復可能以外の場合、エラーフラグを持たせて呼出元へ返す。
//			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_1004);
//			param.setData(fixedText, inMap);
//			return param;
//		}

		// エイジングステータスチェック
		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_200))
		{
			if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_300))
			{
				// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
				// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスが回復可能・エイジング中以外の場合、エラーフラグを持たせて呼出元へ返す。
				inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_1004);
				param.setData(fixedText, inMap);
				return param;
			}
			else
			{
				// エイジングステータスが300 エイジング中と判定
				agingStat = JZMEnumSwitchConstCC.AGING_STAT_300;
				printlnEjbLog("JZMEnumSwitchCC:portOut_OPTtelno:agingStatCheck:AGING_STAT_300");
			}
		}
		else
		{
			// エイジングステータスが200 回復可能と判定
			agingStat = JZMEnumSwitchConstCC.AGING_STAT_200;
			printlnEjbLog("JZMEnumSwitchCC:portOut_OPTtelno:agingStatCheck:AGING_STAT_200");
		}
// ANK-4494-00-00 STEP2 MOD END
		
		// 発行・更新処理--------------------
		// ENUM登録SOD発行CC(ポートアウトの開始)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:更新 ポートアウト受付情報ステータス:"050"(工事完了)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 更新
		callEZM0121C010(handle, param, fixedText, funcCd);

// ANK-4494-00-00 STEP2 MOD START
//		// エイジングスキーマ．エイジングステータス「回復可能」→「使用中」に更新
//		callEZM0111C020(handle, param, fixedText, funcCd);

		if (JZMEnumSwitchConstCC.AGING_STAT_200.equals(agingStat))
		{
			// エイジングスキーマ．エイジングステータス「回復可能」→「使用中」に更新
			callEZM0111C020(handle, param, fixedText, funcCd);
		}
		else if (JZMEnumSwitchConstCC.AGING_STAT_300.equals(agingStat))
		{
			// エイジングスキーマ．エイジングステータス「エイジング」→「使用終了」へデータ削除
			callEZM0111E010(handle, param, fixedText, funcCd);
			if ("1".equals(funcCd))
			{
				// 業務コードが1の場合、↓処理をする。(業務コード2の場合は、↑削除処理がされてないため)
				// エイジングスキーマ．エイジングステータス「使用終了」→「使用中」へデータ登録
				callEZM0111D010(handle, param, fixedText, funcCd);
			}
		}
// ANK-4494-00-00 STEP2 MOD END
		
		printlnEjbLog("JZMEnumSwitchCC:portOut_OPTtelno:end");
		return param;
	}
	
	
	/**
	 * 申請内容_2：事業者間移転(ＯＰＴ電話番号)処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite interCompany_OPTtelno(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:interCompany_OPTtelno:start");

		// 申請内容：事業者間移転(ＯＰＴ電話番号)の場合、

		// 関連チェック--------------------
		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_2001);
			param.setData(fixedText, inMap);
			return param;
		}

		// 電話番号状態チェック
		if (!telnoStatJudge(handle, param, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO), TELNOSTATJUDGE_02)) {
			if ("1".equals(this.NOT_JUDGE)) {
				// 電話番号状態判定：判定対象外の場合、エラーフラグを持たせて呼出元へ返す。
				inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_0002);
				param.setData(fixedText, inMap);
				return param;
			}
			// ポートアウト中でない場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_2002);
			param.setData(fixedText, inMap);
			return param;
		}

		// エイジングステータスチェック
		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_100)) {
			// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
			// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスが使用中以外の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_2003);
			param.setData(fixedText, inMap);
			return param;
		}

		// 発行・更新処理--------------------
		// ENUM消去SOD発行(ポートアウトの終了)
		// ENUM登録SOD発行(ポートアウトの開始)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:更新 ポートアウト受付情報ステータス:"050"(工事完了)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 更新
		callEZM0121C010(handle, param, fixedText, funcCd);
		
		printlnEjbLog("JZMEnumSwitchCC:interCompany_OPTtelno:end");
		return param;
	}

	/**
	 * 申請内容_3：番ポ廃止(他社受付)処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite bmpAbolition_OtherComp(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:bmpAbolition_OtherComp:start");

		// 申請内容：番ポ廃止(他社受付)の場合、

		// 関連チェック--------------------
		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_3001);
			param.setData(fixedText, inMap);
			return param;
		}

		// エイジングステータスチェック
		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_100)) {
			// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
			// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスが使用中以外の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_3002);
			param.setData(fixedText, inMap);
			return param;
		}

		// 発行・更新処理--------------------
		// ENUM消去SOD発行(ポートアウトの終了)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:更新 ポートアウト受付情報ステータス:"050"(工事完了)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 更新
		callEZM0121C010(handle, param, fixedText, funcCd);

		// エイジングスキーマ．エイジングステータス「使用中」→「回復可能」に更新
		callEZM0111C010(handle, param, fixedText, funcCd);

		if ("1".equals(funcCd)) {
			// 業務コードが1の場合、↓処理をする。(業務コード2の場合は、↑更新処理がされてないため)
			// エイジングスキーマ．エイジングステータス「回復可能」→「エイジング中」に更新
			HashMap<String, Object> outMap = (HashMap<String, Object>) param.getData(fixedText);

			callEZM0111C030(handle, param, fixedText, funcCd, (String) outMap.get("ezm0111_get_upd_dtm"));
		}

		printlnEjbLog("JZMEnumSwitchCC:bmpAbolition_OtherComp:end");
		return param;
	}

	/**
	 * 申請内容_4：事業者間移転(他社電話番号)処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite interCompany_Othertelno(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:interCompany_Othertelno:start");

		// 申請内容：事業者間移転(他社電話番号)の場合、

		// 関連チェック--------------------
		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_4001);
			param.setData(fixedText, inMap);
			return param;
		}

		// トーキ登録済みチェック
		if (!chkItenToki(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// トーキ中の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_4002);
			param.setData(fixedText, inMap);
			return param;
		}

		// 発行・更新処理--------------------
		// ENUM消去SOD発行(ポートアウトの終了)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:更新 ポートアウト受付情報ステータス:"050"(工事完了)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 物理削除
		callEZM0121E011(handle, param, fixedText, funcCd);

		printlnEjbLog("JZMEnumSwitchCC:interCompany_Othertelno:end");
		return param;
	}

	/**
	 * 申請内容_5：ポートアウト(ＯＰＴ電話番号)・取消処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite portOut_OPTtelno_Cancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:portOut_OPTtelno_Cancel:start");

		// 申請内容：ポートアウト(ＯＰＴ電話番号) ・取消の場合、

		// 関連チェック--------------------
		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_5001);
			param.setData(fixedText, inMap);
			return param;
		}

		// 電話番号状態チェック
		if (!telnoStatJudge(handle, param, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO), TELNOSTATJUDGE_02)) {
			if ("1".equals(this.NOT_JUDGE)) {
				// 電話番号状態判定：判定対象外の場合、エラーフラグを持たせて呼出元へ返す。
				inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_0002);
				param.setData(fixedText, inMap);
				return param;
			}
			// ポートアウト中でない場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_5002);
			param.setData(fixedText, inMap);
			return param;
		}

		// エイジングステータスチェック
		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_100)) {
			// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
			// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスが使用中以外の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_5003);
			param.setData(fixedText, inMap);
			return param;
		}

		// 発行・更新処理--------------------
		// ENUM消去SOD発行(ポートアウトの終了)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:クリア ポートアウト受付情報ステータス:"030"(CSV出力済)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 更新
		callEZM0121C010(handle, param, fixedText, funcCd);

		// エイジングスキーマ．エイジングステータス「使用中」→「回復可能」に更新
		callEZM0111C010(handle, param, fixedText, funcCd);

		printlnEjbLog("JZMEnumSwitchCC:portOut_OPTtelno_Cancel:end");
		return param;
	}
	
	/**
	 * 申請内容_6：事業者間移転(ＯＰＴ電話番号)・取消処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite interCompany_OPTtelno_Cancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:interCompany_OPTtelno_Cancel:start");

		// 申請内容：事業者間移転(ＯＰＴ電話番号) ・取消の場合、

		// 関連チェック--------------------

		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_6001);
			param.setData(fixedText, inMap);
			return param;
		}

		// 電話番号状態チェック
		if (!telnoStatJudge(handle, param, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO), TELNOSTATJUDGE_02)) {
			if ("1".equals(this.NOT_JUDGE)) {
				// 電話番号状態判定：判定対象外の場合、エラーフラグを持たせて呼出元へ返す。
				inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_0002);
				param.setData(fixedText, inMap);
				return param;
			}
			// ポートアウト中でない場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_6002);
			param.setData(fixedText, inMap);
			return param;
		}

		// エイジングステータスチェック
		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_100)) {
			// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
			// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスが使用中以外の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_6003);
			param.setData(fixedText, inMap);
			return param;
		}

		// 発行・更新処理--------------------
		// ENUM消去SOD発行(ポートアウトの終了)
		// ENUM登録SOD発行(ポートアウトの開始)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:クリア ポートアウト受付情報ステータス:"030"(CSV出力済)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 更新
		callEZM0121C010(handle, param, fixedText, funcCd);

		printlnEjbLog("JZMEnumSwitchCC:interCompany_OPTtelno_Cancel:end");
		return param;
	}
	
	/**
	 * 申請内容_7：番ポ廃止(他社受付)・取消処理 <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 業務コード
	 * @param inMap パラメータMAP
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite bmpAbolition_OtherComp_Cancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, HashMap<String, Object> inMap) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:bmpAbolition_OtherComp_Cancel:start");

		// 申請内容：番ポ廃止(他社受付)・取消の場合、

		// 関連チェック--------------------
		// 電話番号サービス契約ステータスチェック
		if (!serviceKeiStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// サービス契約内訳データがある場合、エラー(ステータスが010~220を取得するSIF)。エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_7001);
			param.setData(fixedText, inMap);
			return param;
		}

		// トーキ登録済みチェック
		if (!chkItenToki(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_TELNO))) {
			// トーキ中の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_7002);
			param.setData(fixedText, inMap);
			return param;
		}

		// エイジングステータスチェック
		if (!agingStatCheck(handle, param, fixedText, (String) inMap.get(JZMEnumSwitchConstCC.KEY_AGING_NO), JZMEnumSwitchConstCC.AGING_STAT_300)) {
			// Key_エイジング番号がnull または、空の場合、エイジングスキーマにデータ無しと判定し、エラーフラグを持たせて呼出元へ返す。
			// Key_エイジング番号がある場合、エイジング一意照会で取得し、ステータスがエイジング中以外の場合、エラーフラグを持たせて呼出元へ返す。
			inMap.put(JZMEnumSwitchConstCC.ERR_FLG, JZMEnumSwitchConstCC.ENUMCC_ERR_FLG_7003);
			param.setData(fixedText, inMap);
			return param;
		}

		// 発行・更新処理--------------------
		// ENUM消去SOD発行(ポートアウトの終了)
		// ENUM登録SOD発行(ポートアウトの開始)
		callJKKHakkoSODCC(handle, param, fixedText);

		// ポートアウト受付情報 切替SOD発行年月日時分秒:クリア ポートアウト受付情報ステータス:"030"(CSV出力済)に更新
		callETU0151C010(handle, param, fixedText, funcCd);

		// 電話番号マスタ 更新
		callEZM0121C010(handle, param, fixedText, funcCd);

		// エイジングスキーマ．エイジングステータス「エイジング」→「使用終了」へデータ削除
		callEZM0111E010(handle, param, fixedText, funcCd);

		if ("1".equals(funcCd)) {
			// 業務コードが1の場合、↓処理をする。(業務コード2の場合は、↑削除処理がされてないため)
			// エイジングスキーマ．エイジングステータス「使用終了」→「使用中」へデータ登録

			callEZM0111D010(handle, param, fixedText, funcCd);
		}

		printlnEjbLog("JZMEnumSwitchCC:bmpAbolition_OtherComp_Cancel:end");
		return param;
	}
	
	/**
	 * サービス契約ステータスチェック <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param telno Key_電話番号
	 * @return Boolean
	 * @throws Throwable
	 */
	private Boolean serviceKeiStatCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String telno) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:serviceKeiStatCheck:start");

		// ■サービス契約内訳＜eo光電話＞一覧照会（電話番号）を実施
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();

		HashMap<String, Object> inMapEKK0191B040 = EnumSwitchMapper.editInMsgEKK0191B040(param, telno);
		CAANMsg outMapEKK0191B040 = callSvcInter(handle, param, inMapEKK0191B040, fixedText);

		// あった場合、エラー
		CAANMsg[] rsltEKK0191B040List = outMapEKK0191B040.getCAANMsgList(EKK0191B040CBSMsg.EKK0191B040CBSMSG1LIST);
		if (rsltEKK0191B040List != null && rsltEKK0191B040List.length > 0) {
			printlnEjbLog("JZMEnumSwitchCC:serviceKeiStatCheck:false_01_end");
			return false;
		}
		printlnEjbLog("JZMEnumSwitchCC:serviceKeiStatCheck:true_end");
		return true;
	}
	
	
	/**
	 * トーキ登録済みチェック処理<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param telno Key_電話番号
	 * @return Boolean
	 * @throws Throwable 
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private Boolean chkItenToki(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String telno) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:chkItenToki:start");

		JZMEnumSwitchMapperCC enumSwitchMapper = new JZMEnumSwitchMapperCC();

		/* ◇上りマッピング処理（サービス契約一覧照会（電話番号）） */
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> inMapEKK0081B033 = enumSwitchMapper.editInMsgEKK0081B033(param, telno);

		/* ◇ＳＣ呼出実行（サービス契約一覧照会（電話番号）） */
		CAANMsg outCAANMsgEKK0081B033 = callSvcInter(handle, param, inMapEKK0081B033, fixedText);
		CAANMsg[] ekk0081B033OutList = outCAANMsgEKK0081B033.getCAANMsgList(EKK0081B033CBSMsg.EKK0081B033CBSMSG1LIST);

		if (ekk0081B033OutList != null && ekk0081B033OutList.length > 0) {
			for (int idx = 0; idx < ekk0081B033OutList.length; idx++) {
				HashMap ekk0081B033Map = ekk0081B033OutList[idx].getMsgData();

				/* ◇上りマッピング処理（サービス契約内訳<eo光電話>一覧照会（サービス契約番号）） */
				HashMap<String, Object> kk191b001_paramMap = enumSwitchMapper.editInMsgEKK0191B001(param, (String) ekk0081B033Map.get("svc_kei_no"));
				/* ◇ＳＣ呼出実行（サービス契約内訳<eo光電話>一覧照会（サービス契約番号） ） */
				CAANMsg outCAANMsgEKK0191B001 = callSvcInter(handle, param, kk191b001_paramMap, fixedText);
				CAANMsg[] ekk0191B001OutList = outCAANMsgEKK0191B001.getCAANMsgList(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST);

				if (ekk0191B001OutList != null && ekk0191B001OutList.length > 0) {
					for (int idx2 = 0; idx2 < ekk0191B001OutList.length; idx2++) {
						HashMap ekk0191B001Map = ekk0191B001OutList[idx2].getMsgData();

						// 電話番号チェック(更新対象の電話番号と一致していること)
						String getTelNo = (String) ekk0191B001Map.get("telno");
						if (!getTelNo.equals(telno)) {
							continue;
						}

						/* ◇上りマッピング処理（サービス契約内訳＜eo光電話＞一意照会） */
						// リクエストパラメータを引数に上りマッピング処理メソッドを実行
						HashMap<String, Object> inMapEKK0191A010 = enumSwitchMapper.editInMsgEKK0191A010(param, (String) ekk0191B001Map.get("svc_kei_ucwk_no"));

						/* ◇ＳＣ呼出実行（サービス契約内訳＜eo光電話＞一意照会） */
						CAANMsg outCAANMsgEKK0191A010 = callSvcInter(handle, param, inMapEKK0191A010, fixedText);

						CAANMsg[] ekk0191A010OutList = outCAANMsgEKK0191A010.getCAANMsgList(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);

						if (ekk0191A010OutList != null && ekk0191A010OutList.length > 0) {
							for (int idx3 = 0; idx3 < ekk0191A010OutList.length; idx3++) {
								HashMap ekk0191A010Map = ekk0191A010OutList[idx3].getMsgData();

								// -------------------------------------------------
								// トーキ登録済みチェック
								// -------------------------------------------------

								// 解約・休止トーキ種別コード,解約・休止トーキ終了年月日,移転先開通後トーキ種別コード,移転先開通後トーキ終了年月日
								String dsl_pause_toki_sbt_cd = (String) ekk0191A010Map.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_SBT_CD);
								String dsl_pause_toki_end_ymd = (String) ekk0191A010Map.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_END_YMD);
								String itens_opaf_toki_sbt_cd = (String) ekk0191A010Map.get(EKK0191A010CBSMsg1List.ITENS_OPAF_TOKI_SBT_CD);
								String itens_opaf_toki_end_ymd = (String) ekk0191A010Map.get(EKK0191A010CBSMsg1List.ITENS_OPAF_TOKI_END_YMD);

								// 移転元解約によるトーキ中または移転先開始によるトーキ中の場合エラー
								if ((dsl_pause_toki_sbt_cd != null && !"".equals(dsl_pause_toki_sbt_cd) 
									&& (dsl_pause_toki_end_ymd == null || "".equals(dsl_pause_toki_end_ymd)))
											|| (itens_opaf_toki_sbt_cd != null && !"".equals(itens_opaf_toki_sbt_cd) 
											&& (itens_opaf_toki_end_ymd == null || "".equals(itens_opaf_toki_end_ymd)))) {
									printlnEjbLog("JZMEnumSwitchCC:chkItenToki:false_01_end");
									return false;
								}
							}
						}
					}
				}
			}
		}
		printlnEjbLog("JZMEnumSwitchCC:chkItenToki:true_end");
		return true;
	}
	
	/**
	 * 電話番号状態判定CC<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param telno Key_電話番号
	 * @param chk_flg チェック内容
	 * @return Boolean
	 * @throws Throwable 
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	private Boolean telnoStatJudge(SessionHandle handle, IRequestParameterReadWrite param, String telno, String chk_flg) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:telnoStatJudge:start");

		HashMap<String, Object> ccMap = new HashMap<String, Object>();
		ccMap.put(JKKTelnoStatJudgeConstCC.TELNO, telno);
		param.setData("TELNOSTATJUDGECC", ccMap);
		JKKTelnoStatJudgeCC jkkTelnoStatJudgeCC = new JKKTelnoStatJudgeCC();
		// ◇ CC呼出実行
		jkkTelnoStatJudgeCC.telnoStatJudge(handle, param, "TELNOSTATJUDGECC");

		ArrayList childList = null;

		HashMap ccOutMap = (HashMap) param.getData("TELNOSTATJUDGECC");
		childList = (ArrayList) ccOutMap.get("TELNOSTATJUDGECC_LIST");

		for (int i = 0; i < childList.size(); i++) {
			HashMap childMap = (HashMap) childList.get(i);

			if (JKKStringUtil.isNullBlank((String) childMap.get(JKKTelnoStatJudgeConstCC.PORTOUTSTATUM))) {
				// 判定外の場合、エラーとする。
				// 判定対象外フラグを立てる
				this.NOT_JUDGE = "1";
				
				printlnEjbLog("JZMEnumSwitchCC:telnoStatJudge:false_01_end");
				return false;
			}
			else if (TELNOSTATJUDGE_01.equals(chk_flg) && JKKTelnoStatJudgeConstCC.PORTOUTSTATUM_ARI.equals((String) childMap.get(JKKTelnoStatJudgeConstCC.PORTOUTSTATUM))) {
				// ポートアウト中の場合、エラーとする。

				printlnEjbLog("JZMEnumSwitchCC:telnoStatJudge:false_02_end");
				return false;
			}
			else if (TELNOSTATJUDGE_02.equals(chk_flg) && JKKTelnoStatJudgeConstCC.PORTOUTSTATUM_NASHI.equals((String) childMap.get(JKKTelnoStatJudgeConstCC.PORTOUTSTATUM))) {
				// ポートアウト中でない場合、エラーとする。

				printlnEjbLog("JZMEnumSwitchCC:telnoStatJudge:false_03_end");
				return false;
			}
		}
		
		printlnEjbLog("JZMEnumSwitchCC:telnoStatJudge:true_end");
		return true;
	}

	/**
	 * エイジングステータスチェック <br>
	 * 
	 * @param map 電話番号状態判定MAP
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param aging_no Key_エイジング番号
	 * @param funcCd 業務コード
	 * @param chk_stat エイジングステータス
	 * @return Boolean
	 * @throws Throwable
	 */
	private Boolean agingStatCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String aging_no, String chk_stat) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:agingStatCheck:start");

		if (StringUtils.isEmpty(aging_no)) {
			// エイジング番号が無ければ、データなしと判断しエラー
			return false;
		}
		// ■エイジング一意照会を実施
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();

		HashMap<String, Object> inMapEZM0111A010 = EnumSwitchMapper.editInMsgEZM0111A010(param, aging_no);
		CAANMsg outMapEZM0111A010 = callSvcInter(handle, param, inMapEZM0111A010, fixedText);
		CAANMsg[] rsltEZM0111A010List = outMapEZM0111A010.getCAANMsgList(EZM0111A010CBSMsg.EZM0111A010CBSMSG1LIST);

		if (rsltEZM0111A010List != null && rsltEZM0111A010List.length > 0) {
			// エイジングスキーマにデータあり、
			HashMap ezm0111A010Map = rsltEZM0111A010List[0].getMsgData();
			if (!chk_stat.equals((String) ezm0111A010Map.get(EZM0111A010CBSMsg1List.AGING_STAT))) {
				// 該当したステータス以外の場合、エラー

				printlnEjbLog("JZMEnumSwitchCC:agingStatCheck:false_01_end");
				return false;
			}
		}
		else {
			// エイジングスキーマにデータが無い場合、エラー
			printlnEjbLog("JZMEnumSwitchCC:agingStatCheck:false_02_end");
			return false;
		}
		
		printlnEjbLog("JZMEnumSwitchCC:agingStatCheck:true_end");
		return true;
	}

	//-----更新・登録系

	/**
	 * 発行SODCC<br>
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText サービスメッセージ
	 * @throws Throwable
	 */
	private void callJKKHakkoSODCC(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callJKKHakkoSODCC:start");

		JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();
		// 呼出元で設定済みのため、呼び出すのみ
		hakkoSODCC.hakkoSOD(handle, param, fixedText);
		
		printlnEjbLog("JZMEnumSwitchCC:callJKKHakkoSODCC:end");
	}

	/**
	 * ETU0151C010:ポートアウト受付情報変更の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callETU0151C010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callETU0151C010:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// ポートアウト受付情報変更
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInETU0151C010Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);
		
		printlnEjbLog("JZMEnumSwitchCC:callETU0151C010:end");
	}

	/**
	 * EZM0121C010:電話番号変更の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0121C010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0121C010:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// 電話番号変更
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0121C010Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);
		
		printlnEjbLog("JZMEnumSwitchCC:callEZM0121C010:end");
	}

	/**
	 * EZM0121E011:電話番号物理削除の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0121E011(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0121E011:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// 電話番号物理削除
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0121E011Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);

		printlnEjbLog("JZMEnumSwitchCC:callEZM0121E011:end");
	}

	/**
	 * EZM0111C010:エイジング対象使用終了の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0111C010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111C010:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// ********************************************************
		// エイジング対象回復
		// ********************************************************
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0111C010Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.aging_editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);
		
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111C010:end");
	}

	/**
	 * EZM0111C020:エイジング対象回復の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0111C020(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111C020:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// ********************************************************
		// エイジング対象回復
		// ********************************************************
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0111C020Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.aging_editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);
		
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111C020:end");
	}
	
	/**
	 * EZM0111C030:回復可能期間終了の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0111C030(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd, String upd_dtm) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111C030:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// ********************************************************
		// エイジング対象回復
		// ********************************************************
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0111C030Msg(param, fixedText, funcCd, upd_dtm); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.aging_editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);

		printlnEjbLog("JZMEnumSwitchCC:callEZM0111C030:end");
	}

	/**
	 * EZM0111E010:エイジング削除の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0111E010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111E010:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// ********************************************************
		// エイジング対象回復
		// ********************************************************
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0111E010Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.editOutMsg(result, param, fixedText); // 下りマッピング (ここでは、エイジング用の下りは入れない 後処理の登録後のエイジング番号を引き継ぐようにする)
		checkReturnCode(param);
		
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111E010:end");
	}

	/**
	 * EZM0111D010:エイジング対象登録の呼び出しを行います。 <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	private void callEZM0111D010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String funcCd) throws Throwable {
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111D010:start");

		// SC呼び出し用
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// パラメータマップ用
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		// SC結果格納用
		Map<?, ?> result = null;
		// マッピング用
		CAANMsg template = null;

		// ********************************************************
		// エイジング対象回復
		// ********************************************************
		JZMEnumSwitchMapperCC EnumSwitchMapper = new JZMEnumSwitchMapperCC();
		template = EnumSwitchMapper.editInEZM0111D010Msg(param, fixedText, funcCd); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		EnumSwitchMapper.aging_editOutMsg(result, param, fixedText); // 下りマッピング
		checkReturnCode(param);
		
		printlnEjbLog("JZMEnumSwitchCC:callEZM0111D010:end");
	}


	/**
	 * サービスインターフェース呼び出し処理です。 <br>
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param siInMap サービスインターフェースの入力マップ
	 * @return 業務データ
	 * @throws Throwable
	 */
	private CAANMsg callSvcInter(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> siInMap, String fixedText) throws Throwable {
		// サービスI/F実行するサービスを生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// サービスインターフェースの呼び出し
		Map<?, ?> rsltMap = scCall.run(siInMap, handle);
		// エラーマッピング処理
		editResultRP(rsltMap, param, fixedText);
		// エラーチェック処理
		errChk(rsltMap);
		// 業務データ取得処理
		CAANMsg workData = getWorkCAANMsg(rsltMap);

		return workData;
	}

	/**
	 * 業務データの取得処理です。 <br>
	 * 
	 * @param workMapKey 業務データのマップキー
	 * @param rslt SVIFの実行結果データ
	 * @return 業務データ
	 */
	private CAANMsg getWorkCAANMsg(Map<?, ?> rslt) {
		CAANMsg[] templates = (CAANMsg[]) rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		return parentTemplate;
	}

	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * </pre>
	 * 
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		// テンプレートID、ステータス取得
		String templateId = template.getString(JCMConstants.TEMPLATE_ID_KEY);
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		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 = (HashMap) param.getData(fixedText);

		// ユーザデータ情報にエラー情報をマッピング
		// 項目の配列を取得
		Object[][] contents = getContents(templateId);
		// エラーIDをマッピング
		mappingErrId(inMap, template, contents);

		// 明細に対するマッピング処理
		// ※明細1のみ対応
		String msg1ListId = templateId + "CBSMsg1List";
		CAANMsg[] templateArray = template.getCAANMsgList(msg1ListId);
		if (templateArray != null) {
			ArrayList inList = (ArrayList) inMap.get(msg1ListId);
			if (inList == null) {
				inList = new ArrayList();
				inMap.put(msg1ListId, inList);
			}

			for (int i = 0; i < templateArray.length; i++) {
				if (i >= inList.size()) {
					inList.add(new HashMap());
				}

				HashMap childMap = (HashMap) inList.get(i);
				CAANMsg childTemplate = templateArray[i];

				Object[][] msg1ListContents = getContents(msg1ListId);

				mappingErrId(childMap, childTemplate, msg1ListContents);
			}
		}

		// エラー情報のマップを取得
		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));

		return param;
	}

	/**
	 * エラーチェック処理です。 <br>
	 * 
	 * @param msgList サービスインタフェース実行結果
	 * @return void
	 * @throws SCCallException
	 */
	private void errChk(Map<?, ?> msgList) throws SCCallException {
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス取得
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if ((0 != returnCode.intValue()) || (0 != templateStatus)) {
			String errMsg = JZMEnumSwitchConstCC.ERR_MSG;
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}

	/**
	 * 各S/IFのエラーIDをマッピングする
	 * 
	 * @param inMap 入力マップ
	 * @param template サービスIFマップ
	 * @param contents サービスIFの項目配列
	 */
	@SuppressWarnings("unchecked")
	private void mappingErrId(HashMap inMap, CAANMsg template, Object[][] contents) {
		for (int i = 0; contents != null && i < contents.length; i++) {
			String element = null;
			element = (String) contents[i][0];
			if (element.endsWith("_err")) {
				if (!template.isNull(element)) {
					if (!inMap.containsKey(element)) {
						inMap.put(element, template.getString(element));
					}
				}
			}
		}
	}

	/**
	 * 各S/IFが保持する項目の配列を取得する
	 * 
	 * @param templateId サービスIF_ID
	 * @return 項目の配列
	 */
	private Object[][] getContents(String templateId) {
		Object[][] contents = null;

		if (TEMPLATE_ID_EKK0081B033.equals(templateId)) {
			contents = new EKK0081B033CBSMsg().getContents();
		}
		else if (TEMPLATE_ID_EKK0191A010.equals(templateId)) {
			contents = new EKK0191A010CBSMsg().getContents();
		}
		else if (TEMPLATE_ID_EKK0191B001.equals(templateId)) {
			contents = new EKK0191B001CBSMsg().getContents();
		}
		else if (TEMPLATE_ID_EKK0191B040.equals(templateId)) {
			contents = new EKK0191B040CBSMsg().getContents();
		}
		else if (TEMPLATE_ID_EZM0111A010.equals(templateId)) {
			contents = new EZM0111A010CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0111C010.equals(templateId)) {
			contents = new EZM0111C010CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0111C020.equals(templateId)) {
			contents = new EZM0111C020CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0111C030.equals(templateId)) {
			contents = new EZM0111C030CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0111D010.equals(templateId)) {
			contents = new EZM0111D010CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0111E010.equals(templateId)) {
			contents = new EZM0111E010CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0121C010.equals(templateId)) {
			contents = new EZM0121C010CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_EZM0121E011.equals(templateId)) {
			contents = new EZM0121E011CBSMsg().getContents();
		}
		else if (TAMPLATE_ID_ETU0151C010.equals(templateId)) {
			contents = new ETU0151C010CBSMsg().getContents();
		}
		return contents;
	}

	/**
	 * SCインプット共通データ設定処理を行います。
	 * <br>
	 * @param param
	 * @param paramMap
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> setSCInputCommonData(IRequestParameterReadWrite param, HashMap<String, Object> paramMap) throws RequestParameterException {

		/* 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));

		return paramMap;
	}
	
	/**
	 * SCのリターンコードをチェックし、正常でない場合は例外を送出します。
	 * <br>
	 * @param param リクエストパラメータ
	 * @throws CCException 
	 * @throws RequestParameterException 
	 */
	private void checkReturnCode(IRequestParameterReadWrite param) throws RequestParameterException, CCException
	{
		if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{
			// ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
	}

	/**
	 * SCの実行ステータスの取得処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @return SCの実行ステータス
	 * @throws RequestParameterException 
	 */
	private int getReturnCode(IRequestParameterReadWrite param) throws RequestParameterException
	{
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			return -1;
		}
		else
		{
			return Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
	}
	
	/**
	 * CAANMsgに必要なデータのマッピング処理を行います。
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException
	{
		//BPチェックは行わない
		
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{});

		return paramMap;
	}
	
	/**
	 * 単一CAANMsgのマッピング処理を行います。
	 * <br>
	 * @param paramMap パラメータマップ
	 * @param template テンプレート
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> putParamMap(HashMap<String, Object> paramMap, CAANMsg template) throws RequestParameterException
	{
		CAANMsg[] templates = { template };
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param リクエストパラメータ
	 * @param templates テンプレート
	 * @param returnCode リターンコード
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException RequestParameterException
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
			throws RequestParameterException
	{
		//BPチェックは行わない

		return param;
	}
	
}
