/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JECKA9010003TPMA
*   ソースファイル名：JECKA9010003TPMA.java
*   作成者          ：EK942336
*   日付            ：2019年11月12日
*＜機能概要＞
*   信頼済端末全削除依頼顧客独自処理部品クラス.
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v47.00.00   2019/11/12  FJ)三原     新規作成(ANK-3706-00-00_ｅｏＩＤログインのセキュリティ強化対応)
*
**********************************************************************/

package eo.ejb.cbs.mainproc;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbs.cbsmsg.ECKA9010003CBSMsg;
import eo.ejb.common.JCKLcsRenkeiUtil;


/**
 * <p>
 * 信頼済端末全削除依頼顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECKA9010003TPMA implements TemplateMainHandler
{
	public static String PGID = "JECKA9010003TPMA";

	/**
	 * コンストラクタ.
	 */
	public JECKA9010003TPMA()
	{
		super();
	}

	/**
	 * 信頼済端末全削除依頼顧客独自処理部品です。
	 * @param inCBSMsg CAANメッセージ
	 * @param inContext コンテキスト
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws Exception
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JECKA9010003TPMA#invoke start");
		
		Map<String, Object> retMap = new HashMap<String, Object>();
		
		// パラメータチェックがOKの時のみ連携を実行
		if (inCBSMsg != null)
		{
			// パラメータからSYSIDを取得する
			String sysid = inCBSMsg.getString(ECKA9010003CBSMsg.KEY_SYSID);
			
			try
			{
				// iDAのWebAPIへの照会依頼
				retMap = JCKLcsRenkeiUtil.requestiDAWebApiDeleteTrustedDevice(sysid);
			}
			catch (Exception e)
			{
				printErrorLog(e, "信頼済端末全削除でエラー発生", sysid);
			}
		}
		
		// iDAからの照会結果が取得できた場合
		if (retMap != null && retMap.containsKey("RETURN_CODE"))
		{
			// 戻りコード
			inCBSMsg.set(ECKA9010003CBSMsg.RETURN_CD, retMap.get("RETURN_CODE"));
			// 返却メッセージ
			inCBSMsg.set(ECKA9010003CBSMsg.RETURN_MSG, retMap.get("RETURN_MSG"));
			// APIプロセスID
			inCBSMsg.set(ECKA9010003CBSMsg.API_PID, retMap.get("API_PID"));
		}
		// iDAからの照会結果が取得できなかった場合
		else
		{
			// 値を空で設定する
			// 戻りコード
			inCBSMsg.set(ECKA9010003CBSMsg.RETURN_CD, "");
			// 戻りコード
			inCBSMsg.set(ECKA9010003CBSMsg.RETURN_MSG, "");
			// 戻りコード
			inCBSMsg.set(ECKA9010003CBSMsg.API_PID, "");
		}
		
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JECKA9010003TPMA#invoke end");
	}

	/**
	 * エラーログ出力
	 * @param e 発生した例外
	 * @param errTitle エラータイトル
	 * @param sysid SYSID
	 */
	private void printErrorLog(Exception e, String errTitle, String sysid)
	{
		StringBuffer sb = new StringBuffer();
		sb.append(e.getMessage()+ "\n");
		StackTraceElement[] steAll = e.getStackTrace();
		for (StackTraceElement ste : steAll) {
			sb.append("	at " + ste.getClassName() + "." + ste.getMethodName() + "(" + ste.getFileName() + ":" + ste.getLineNumber()+")"+ "\n");
		}
		JSYejbLog.println(JSYejbLog.ERROR, this.getClass(), errTitle + "(SYSID:" + sysid + ")" + "\n" + sb.toString());
	}
}
