/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKChgTelnoJunCC
*   ソースファイル名：JKKChgTelnoJunCC.java
*   作成者          ：富士通
*   日付            ：2013年03月11日
*＜機能概要＞
*   電話番号順付替えCCクラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v5.00.00	2013/03/11	FJ)立和名	巻取３IT2-2013-0000250対応で新規作成
*
**********************************************************************/
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.KKSV0194_KKSV0194OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK;
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;

import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;




/**
 * eo光電話の電話番号順付替え処理部品クラスです
 * <br>
 * @author 富士通
 * @since 2013-03-11 巻取３IT2-2013-0000250
 */
public class JKKChgTelnoJunCC extends AbstractCommonComponent
{


	/**
	 * 初期処理です。
	 * 
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return void
	 * @throws Throwable 
	 */
	private void init(IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// コントロールマップのエラー情報を初期化
		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
	{
		return null;
	}


	/**
	 *<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
	{
		return param;
	}

	/**
	 * KKSV0194サービス契約＿回復BPサービスからの呼び出しによる、番号回復時実行処理です。
	 * 
	 * パラメータの異動区分に従って解約処理を実行します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 初期処理
		init(param, fixedText);
		
//		Map<?, ?> inMap = (Map<?, ?>) param.getData(fixedText);
		Map<Object, Object> workAreaMap = param.getMappingWorkArea();
		Map<?, ?> workMap = (Map<?, ?>) workAreaMap.get(KKSV0194_KKSV0194OP.WORK);
		
		//異動区分
		String idoDiv = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.IDO_DIV);
		//申込明細番号
		String mskmDtlNo = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.MSKM_DTL_NO);
		//サービス契約内訳番号
		String svcKeiUcwkNo = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.IDO00044_SVC_KEI_UCWK_NO);
		//サービス契約番号
		String svcKeiNo = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.SVC_KEI_NO);
		
		String telnoJun = "1";
		
		CAANMsg kk0191Msg = new CAANMsg(EKK0191A010CBSMsg1List.class.getName());
		
		//サービス契約内訳一意照会結果（番号回復したサービス契約内訳＜eo光電話＞）
		List<?> ekk0191a010List = (List<?>)workMap.get(KKSV0194_KKSV0194OP_WORK.EKK0191A010CBSMSG1LIST);
		if (0 < ekk0191a010List.size())
		{
			HashMap<?, ?> kk0191Map = (HashMap<?, ?>)ekk0191a010List.get(0);
			kk0191Msg.setMsgDataOfAll(kk0191Map);
//			String tmpTelnoJun = (String) kk0191Map.get(EKK0191A010CBSMsg1List.TELNO_JUN);
//			
//			//番号回復したものが順番「１」の場合、今の順番“１”は“２”にすべし
//			if ("1".equals(tmpTelnoJun))
//			{
//				telnoJun = "2";
//			}
		}
		
		// 電話番号順付替え処理を呼び出す
		JKKBpCommon.chgTelnoJun(handle, param, idoDiv, mskmDtlNo, kk0191Msg, telnoJun, svcKeiNo);
		
		return param;
	}

}
