/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKDslRunCC
*   ソースファイル名：JKKDslRunCC.java
*   作成者          ：富士通
*   日付            ：2011年11月15日
*＜機能概要＞
*   解約実行CCクラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/11/15   FJ）        新規作成
*   v9.00.00    2014/06/16   FJ）藤田    【ANK-2079-00-00】解約予約が入っていても即時解約の投入を可能とする
*   v72.00.00   2024/04/11   FJ）大路    【ANK-4494-00-00】【eo定期】 双方向番ポ対応 
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.constant.JKKDslRunConstCC;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;

/**
 * 解約実行処理です。<p>
 * <br>
 * @author FJ
 */
public class JKKDslRunCC extends AbstractCommonComponent
{
	
	/** サービスインタフェース呼び出しで使用するマッパー群 */
	private JKKDslRunMapperCC mapper = null;

	/**
	 * 解約実行の初期処理です。
	 * 
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return void
	 * @throws Throwable 
	 */
	private void init(IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// マッパーの初期化
		if (null == this.mapper)
		{
			this.mapper = new JKKDslRunMapperCC();
		}
		
		// コントロールマップのエラー情報を初期化
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, new ArrayList<Object>());
	}

	/**
	 * 解約実行のチェック処理です。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws Throwable 
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable
	{
		// 初期処理
		init(param, fixedText);

		HashMap inMap = (HashMap)param.getData(fixedText);
		String svcKeiNo = (String)inMap.get(JKKDslRunConstCC.SVC_KEI_NO);
		HashMap<String, Object> paramMap = this.mapper.editInMsgEKK0081A010(param, fixedText, svcKeiNo);
		return paramMap;
	}

	/**
	 *<DL>
	 *<DT>解約実行のエラー転記処理です。
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{

		this.mapper.editResultRPEKK0081A010ErrMap(param, templates, returnCode, fixedText);
		return param;
	}

	/**
	 * 解約実行処理です。
	 * 
	 * パラメータの異動区分に従って解約処理を実行します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite runDsl(SessionHandle handle, 	IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 初期処理
		init(param, fixedText);
		
		// リクエストパラメータの取得処理
		HashMap inMap = (HashMap)param.getData(fixedText);
		
		// 解約実行処理を呼び出す
		JKKBpCommon.runDsl(handle, param, inMap, fixedText);
		
		return param;
	}

	// ANK-2079-00-00 解約予約が入っていても即時解約の投入を可能とする 2014/06/16 藤田 ADD START
	/**
	 * 解約実行前チェック処理
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite runDslPreChk(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 初期処理
		init(param, fixedText);
		// 解約実行処理を呼び出す
		JKKBpCommon.runDslPreChk(handle, param, fixedText);
		return param;
	}
	// ANK-2079-00-00 解約予約が入っていても即時解約の投入を可能とする 2014/06/16 藤田 ADD END
	
	// ANK-4494-00-00 ADD START
	/**
	 * 光電話・番号解約処理のチェック処理
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite checkHteldel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 初期処理
		init(param, fixedText);
		
		// 光電話・番号解約処理のチェック処理を呼び出す
		JKKBpCommon.checkHteldel(handle, param, fixedText);
		return param;
	}
	// ANK-4494-00-00 ADD END
}
