/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKCancelBmpkj
*   ソースファイル名：JKKCancelBmpkj.java
*   作成者          ：富士通
*   日付            ：2013年03月05日
*＜機能概要＞
*   番ポ工事取消処理部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v5.00.00	2013/03/05	FJ)立和名	ST2-2013-0001271対応で新規作成
*   v13.00.00   2015/05/01  FJ)舘山     【OM-2015-0000324】 サービス契約内訳番号による番ポ工事情報取消対応
**********************************************************************/
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.JKKAddBmpTaiorrkiConstCC;
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.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ETU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0011B018CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0011B018CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0011C021CBSMsg;

import static com.fujitsu.futurity.bp.custom.constant.JKKCancelBmpkjConst.*;



/**
 * 番ポ工事取消処理部品です。
 * 
 * @author 富士通
 * @since 2013-03-05 ロット２ST2-2013-0001271対応
 * @version 5.00.00 2013-03-05
 */
public class JKKCancelBmpkj extends AbstractCommonComponent
{


	/**
	 * 番ポ工事を取り消します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap 当処理の入力マップ
	 * @return 取消した番ポ工事の件数
	 * @throws Throwable 
	 */
	public int cancelBmpkj(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			Map<?, ?> inMap) throws Throwable
	{
		//サービス契約番号
		String svcKeiNo = (String) inMap.get(SVC_KEI_NO);
		
		//取消対象の番ポ電話番号
		String telno = (String) inMap.get(BMP_TELNO);
		
		// ▼▼▼ OM-2015-0000324 2015-05-01 ADD START
		String svcKeiUcwkNo = (String)inMap.get(SVC_KEI_UCWK_NO);
		// ▲▲▲ OM-2015-0000324 2015-05-01 ADD END
		/**
		 * 手順１．番ポ工事ステータスを確認します
		 */
		// ▼▼▼ OM-2015-0000324 2015-05-01 CHANGE START
//		ArrayList<HashMap<String,Object>> bmpkjRecs = callETU0011B018SC(handle, param, svcKeiNo, telno);
		ArrayList<HashMap<String,Object>> bmpkjRecs = callETU0011B018SC(handle, param, svcKeiNo, telno, svcKeiUcwkNo);
		// ▲▲▲ OM-2015-0000324 2015-05-01 CHANGE END

		/**
		 * 手順２．番ポ工事取消依頼S-IFを実行します
		 */
		int cnt = 0;
		for (HashMap<String, Object> etu0011b018Map : bmpkjRecs)
		{
			//番ポ工事一意照会S-IF
			ArrayList<HashMap<String,Object>> etu0011a010List = callETU0011A010SC(handle, param, etu0011b018Map);
			HashMap<String, Object> etu0011a010Map = etu0011a010List.get(0);
			
			//番ポ工事ステータスを確認
			String bmpkjStat = (String) etu0011a010Map.get(ETU0011A010CBSMsg1List.BMP_KOJI_STAT);
			//000	工事希望日未入力	○
			//010	他事業者確認要		○
			//011	他事業者依頼待ち	○
			//012	他事業者依頼済み
			//013	他事業者調整不可
			//021	NTT申請待ち			○
			//022	NTT申請済み
			//023	NTT申請不可
			//031	工事実施依頼待ち	○
			//032	工事実施依頼済み
			//040	SOD発行済み
			//041	SOD発行済み（利用停止）
			//050	番ポ工事完了
			//090	番ポ工事取消
			// OM-2013-0004242 2013/11/27 ADD START
			// 番ポ工事ステータスが「000」工事希望日未入力以外は番ポ取消行わない
//			if ("000".equals(bmpkjStat) || "010".equals(bmpkjStat) || "011".equals(bmpkjStat) || "021".equals(bmpkjStat) || "031".equals(bmpkjStat))
			if ("000".equals(bmpkjStat))
			// OM-2013-0004242 2013/11/27 ADD END
			{
				callETU0011C021SC(handle, param, etu0011a010Map);
				
				cnt ++;
			}
//TODO	キャンセルCCや解約CCで対応履歴登録が実装されているので、ここでの登録は止めておく
//			/**
//			 * 手順３．番ポキャンセルの対応履歴を登録
//			 */
//			addBmpTaioRrk(handle, param, fixedText, svcKeiNo, etu0011a010Map);
		}
		
		return cnt;
	}


	/**
	 * 番ポ対応履歴登録
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText マップキー
	 * @param svcKeiNo サービス契約番号
	 * @param etu0011a010Map 番ポ工事一意照会結果マップ
	 * @throws Throwable 任意の例外
	 */
	private void addBmpTaioRrk(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			String svcKeiNo,
			Map<?, ?> etu0011a010Map) throws Throwable
	{
		/** 番ポキャンセル通知 */
		// 登録種別            ◎
		// お客様名            ◎
		// 申込日              ◎
		// NTT受付番号         △
		// 電話番号            ×
		// 設置場所住所コード  ×
		// ユーザID            ◎
		// サービス契約番号    ◎
		// 工事日時            ×
		
		HashMap<String, Object> taiorrk = new HashMap<String, Object>();
		// 登録種別
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.TRK_SBT, CANCEL_TCHI);
		// SYSID
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.SYSID, null);
		// お客様名
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.CUST_NM, 
				etu0011a010Map.get(ETU0011A010CBSMsg1List.NTT_KEISHA_NM));
		// 申込日
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.MSKM_YMD, JKKBpCommon.getOpeDate(null));
		// NTT受付番号
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.NTT_UKE_NO, 
				etu0011a010Map.get(ETU0011A010CBSMsg1List.NTT_UK_NO));
		// 電話番号
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.TELNO, null);
		// 設置場所住所コード
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.SETPLACE_AD_CD, null);
		// サービス契約番号
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.SVC_KEI_NO, svcKeiNo);
		// ユーザID
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.USER_ID, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 工事日時
		taiorrk.put(JKKAddBmpTaiorrkiConstCC.KOJI_DTM, null);
		
		// 番ポ対応履歴登録部品呼出
		JKKBpCommon.addBmpTaiorrki(handle, param, taiorrk, fixedText);
	}


	/**
	 * ETU0011C021番ポ工事取消依頼S-IF実行
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param etu0011a010Map 番ポ工事一意照会結果レコードのマップ
	 * @return 実行結果リスト
	 * @throws Exception 任意の例外
	 */
	private ArrayList<HashMap<String, Object>> callETU0011C021SC(SessionHandle handle, IRequestParameterReadWrite param,
			Map<String, Object> etu0011a010Map) throws Exception
	{
		CAANMsg template = editInMsgETU0011C021SC(etu0011a010Map);
		editBasicCmn(param, template);

		// サービスIF共通の情報を設定
		HashMap<String, Object> sIFRequest = editInMsgCmn(param);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		Map<?, ?> sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		return editResultRP_ETU0011C021SC(sIFResult, param);
	}


	/**
	 * ETU0011A010番ポ工事一意照会S-IFを実行します
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param etu0011b018Map 番ポ工事一覧照会結果マップ
	 * @return 番ポ工事一意照会結果リスト
	 * @throws Exception 任意の例外
	 */
	private ArrayList<HashMap<String, Object>> callETU0011A010SC(SessionHandle handle, IRequestParameterReadWrite param,
			HashMap<String, Object> etu0011b018Map) throws Exception
	{
		CAANMsg template = editInMsgETU0011A010SC(etu0011b018Map);
		editBasicCmn(param, template);

		// サービスIF共通の情報を設定
		HashMap<String, Object> sIFRequest = editInMsgCmn(param);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		Map<?, ?> sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		return editResultRP_ETU0011A010SC(sIFResult, param);
	}


	/**
	 * ETU0011B018番ポ工事一覧照会S-IF実行
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param svcKeiNo サービス契約番号
	 * @param telno 番ポ電話番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return 照会結果リスト
	 * @throws Exception 任意の例外
	 */
	// ▼▼▼ OM-2015-0000324 2015-05-01 CHANGE START
//	private ArrayList<HashMap<String,Object>> callETU0011B018SC(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String telno) throws Exception
	private ArrayList<HashMap<String,Object>> callETU0011B018SC(SessionHandle handle, IRequestParameterReadWrite param, 
			String svcKeiNo, String telno, String svcKeiUcwkNo) throws Exception
	// ▲▲▲ OM-2015-0000324 2015-05-01 CHANGE END
	{
		// ▼▼▼ OM-2015-0000324 2015-05-01 CHANGE START
//		CAANMsg template = editInMsgETU0011B018SC(svcKeiNo, telno);
		CAANMsg template = editInMsgETU0011B018SC(svcKeiNo, telno, svcKeiUcwkNo);
		// ▲▲▲ OM-2015-0000324 2015-05-01 CHANGE END
		editBasicCmn(param, template);

		// サービスIF共通の情報を設定
		HashMap<String, Object> sIFRequest = editInMsgCmn(param);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		Map<?, ?> sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		return editResultRP_ETU0011B018SC(sIFResult, param);
	}


	/**
	 * ETU0011B018番ポ工事一覧照会S-IF入力マッピング
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param telno 番ポ電話番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return S-IF用テンプレート
	 */
	// ▼▼▼ OM-2015-0000324 2015-05-01 CHANGE START
//	private CAANMsg editInMsgETU0011B018SC(String svcKeiNo, String telno)
	private CAANMsg editInMsgETU0011B018SC(String svcKeiNo, String telno, String svcKeiUcwkNo)
	// ▲▲▲ OM-2015-0000324 2015-05-01 CHANGE END
	{
		CAANMsg template = new CAANMsg(ETU0011B018CBSMsg.class.getName());
		
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new ETU0011B018CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(ETU0011B018CBSMsg.TEMPLATEID, "ETU0011B018");

		//機能コード
		template.set(ETU0011B018CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		//ＫＥＹ＿サービス契約番号
		template.set(ETU0011B018CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		// ▼▼▼ OM-2015-0000324 2015-05-01 ADD START
		// サービス契約内訳番号が設定されていればキーに指定する。
		if (null != svcKeiUcwkNo)
		{
			template.set(ETU0011B018CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		}
		// ▲▲▲ OM-2015-0000324 2015-05-01 ADD END

		//ＫＥＹ＿ＮＴＴ契約回線番号
		if (null != telno)
		{
			template.set(ETU0011B018CBSMsg.KEY_NTT_KEI_TEL_KAISEN_NO, telno);
		}
		
//		//最大検索件数
//		template.set(ETU0011B018CBSMsg.MAX_SEARCH_NUM, "9999");
//		//表示件数
//		template.set(ETU0011B018CBSMsg.DISPLAY_NUM, "9999");
//		//表示ページ番号
//		template.set(ETU0011B018CBSMsg.DISPLAY_PAGE_NUM, "1");
//
//		//検索パターン
//		template.set(ETU0011B018CBSMsg.SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN);
		
		return template;
	}


	/**
	 * ETU0011A010番ポ工事一意照会S-IF入力マッピング
	 * 
	 * @param etu0011b018Map 番ポ工事一覧照会結果マップ
	 * @return S-IFテンプレート
	 */
	private CAANMsg editInMsgETU0011A010SC(HashMap<String, Object> etu0011b018Map)
	{
		CAANMsg template = new CAANMsg(ETU0011A010CBSMsg.class.getName());
		
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new ETU0011A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(ETU0011A010CBSMsg.TEMPLATEID, "ETU0011A010");

		//機能コード
		template.set(ETU0011A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		//ＫＥＹ＿番ポ工事番号
		template.set(ETU0011A010CBSMsg.KEY_BMP_KOJI_NO, 
				etu0011b018Map.get(ETU0011B018CBSMsg1List.BMP_KOJI_NO));
		
		//ＫＥＹ＿世代登録年月日時分秒
		template.set(ETU0011A010CBSMsg.KEY_GENE_ADD_DTM, 
				etu0011b018Map.get(ETU0011B018CBSMsg1List.GENE_ADD_DTM));
		
		return template;
	}


	/**
	 * ETU0011C021番ポ工事取消依頼S-IF入力マッピング
	 * 
	 * @param etu0011a010Map 番ポ工事一意照会結果レコード
	 * @return S-IF実行用テンプレート
	 */
	private CAANMsg editInMsgETU0011C021SC(Map<String, Object> etu0011a010Map)
	{
		CAANMsg template = new CAANMsg(ETU0011C021CBSMsg.class.getName());
		
		//テンプレートID(SIFのID)
		template.set(ETU0011C021CBSMsg.TEMPLATEID, "ETU0011C021");

		//機能コード
		template.set(ETU0011C021CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		//番ポ工事番号
		template.set(ETU0011C021CBSMsg.BMP_KOJI_NO, etu0011a010Map.get(ETU0011A010CBSMsg1List.BMP_KOJI_NO));
		
		//世代登録年月日時分秒
		template.set(ETU0011C021CBSMsg.GENE_ADD_DTM, etu0011a010Map.get(ETU0011A010CBSMsg1List.GENE_ADD_DTM));
		
		//更新前更新年月日時分秒
		template.set(ETU0011C021CBSMsg.UPD_DTM_BF, etu0011a010Map.get(ETU0011A010CBSMsg1List.UPD_DTM));
		
		return template;
	}


	/**
	 * ETU0011B018番ポ工事一覧照会S-IF出力マッピング
	 * 
	 * @param result S-IF実行結果マップ
	 * @param param リクエストパラメータ
	 * @return 照会結果リスト
	 * @throws Exception 任意の例外
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> editResultRP_ETU0011B018SC(Map<?, ?> result, IRequestParameterReadWrite param) throws Exception
	{
		//結果の取得
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		errChk(result, param, template);

		//照会結果を格納
		CAANMsg[] childTemplates = template.getCAANMsgList(ETU0011B018CBSMsg.ETU0011B018CBSMSG1LIST);

		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		for (int i = 0; i < childTemplates.length; i++)
		{
			retList.add(childTemplates[i].getHashMap());
		}

		return retList;
	}


	/**
	 * ETU0011A010番ポ工事一意照会S-IF出力マッピング
	 * 
	 * @param result S-IF実行結果
	 * @param param リクエストパラメータ
	 * @return 実行結果テンプレートのマップリスト
	 * @throws Exception 任意の例外
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> editResultRP_ETU0011A010SC(
			Map<?, ?> result, IRequestParameterReadWrite param) throws Exception 
	{
		//結果の取得
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		errChk(result, param, template);

		//照会結果を格納
		CAANMsg[] childTemplates = template.getCAANMsgList(ETU0011A010CBSMsg.ETU0011A010CBSMSG1LIST);

		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		for (int i = 0; i < childTemplates.length; i++)
		{
			retList.add(childTemplates[i].getHashMap());
		}

		return retList;
	}


	/**
	 * ETU0011C021番ポ工事取消依頼S-IF出力マッピング
	 * 
	 * @param result S-IF実行結果
	 * @param param リクエストパラメータ
	 * @return 実行結果テンプレートのマップリスト
	 * @throws Exception 任意の例外
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> editResultRP_ETU0011C021SC(Map<?, ?> result, IRequestParameterReadWrite param) throws Exception
	{
		//結果の取得
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		errChk(result, param, template);

		//実行結果を格納
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		retList.add(template.getHashMap());

		return retList;
	}


	/**
	 * 共通エラーチェック
	 * 
	 * @param result S-IF実行結果マップ
	 * @param param リクエストパラメータ
	 * @param template S-IF実行テンプレート
	 * @throws Exception 任意の例外
	 */
	@SuppressWarnings("unchecked")
	protected void errChk(Map<?, ?> result, IRequestParameterReadWrite param, CAANMsg template) throws Exception
	{
		//ステータスの検査
		Integer returnCode = (Integer)result.get(JCMConstants.RET_CD_INT_KEY);
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		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);
		}

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		//必要なら例外発生
		if (0 != returnCode || 0 != templateStatus)
		{
			throw new SCCallException("サービスインターフェイス呼出しでエラー発生", returnCode.toString(), Integer.valueOf(templateStatus));
		}
	}


	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	protected 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
	 */
	protected void editBasicCmn(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);
		
	}


	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	protected HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param) 
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		//電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		
		//ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		
		//オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		
		//サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		//依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		
		//依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		
		//依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		
		//オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
				
		return paramMap;
	}


}
