/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JBSbatKKAxMRenkeiUtil
*	ソースファイル名：JBSbatKKAxMRenkeiUtil.java
*	作成者			：富士通
*	日付			：2012年05月08日
*＜機能概要＞
*	業務サービススーパークラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/05/08	富士通		新規作成
*
**********************************************************************/
package eo.business.common;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.util.table.JBSbatKK_T_AUTO_SHOSA_RSLT;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JCCBatchEsbInterface;



/**
 * 指示書ＡｘＭ連携に関する共通機能を取りまとめました
 * 
 * @author 富士通
 * @since 2012-05-08 巻@　指示書CC取込み対応
 */
public class JBSbatKKAxMRenkeiUtil
{

	private ArrayList<String> sysidStack = null;


	/**
	 * コンストラクタ
	 */
	public JBSbatKKAxMRenkeiUtil()
	{
		super();

		initSysidStack();
	}


	/**
	 * 
	 */
	public void initSysidStack()
	{
		this.sysidStack = new ArrayList<String>();
	}


	/**
	 * @param sysidStack セットする sysidStack
	 */
	public void setSysidStack(String sysid)
	{
		if (!this.sysidStack.contains(sysid))
		{
			this.sysidStack.add(sysid);
		}
	}


	/**
	 * @return sysidStack
	 */
	public String[] getSysidStack()
	{
		String[] ret = new String[sysidStack.size()];
		return sysidStack.toArray(ret);
	}


	/**
	 * 指示書のＡｘＭ（認証システム）データ連携のため、
	 * CKSV9001会員情報更新依頼BPサービスを呼び出す
	 * 
	 * @param sysid ＳＹＳＩＤ
	 * @return 出力マップ
	 * @throws Exception 任意の例外
	 * @since 2012-05-08 巻@　指示書CC取込み対応
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<HashMap<String, String>> callCKSV9001(String sysid, JBSbatCommonItem commonItem, String who) throws Exception
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "CKSV9001");
		
		// サービスに渡す業務データを格納するMAPです。
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// inputMapに設定するデータをHashMapで構築する。
		HashMap<String, String> dataMap = new HashMap<String, String>();
		// 2012/10/30 IT1-2012-0001701 DEL START 処理対象コードは不要
//		//処理コード
//		dataMap.put("trn_cd", "N01");
		// 2012/10/30 IT1-2012-0001701 DEL END 処理対象コードは不要
		//対象テーブルＩＤ
		//（未指定）
		//更新対象ＳＹＳＩＤ
		dataMap.put("upd_trgt_sysid", sysid);
		//会員情報更新依頼マップ
		inputMap.put("CKSV900101CC", dataMap);

		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		//サービス契約照査チェック(API)を呼び出します。
		JCCBatchEsbInterface.invokeService(commonItem, paramMap, inputMap, outputMap);
		
		// リターンコードが正常以外の場合、エラー
//		String returnCode = outputMap.get(JCCBatchEsbInterface.RETURN_CODE).toString();
//		if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
//		{
//			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0270CE, new String[]{who});
//		}
		
		// サービスの処理結果が格納されたoutputMapから指定したキーで値を取得する。
		HashMap<String, String> resultMap = (HashMap<String, String>)outputMap.get("CKSV900101CC");
		
		ArrayList<HashMap<String, String>> resultData = new ArrayList<HashMap<String, String>>();
		resultData.add(resultMap);
		
		return resultData;
	}

}
