/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JECKA9010005TPMA
*   ソースファイル名：JECKA9010005TPMA.java
*   作成者          ：EK964742
*   日付            ：2022年09月20日
*＜機能概要＞
*   iDA信頼済端末照会依頼独自処理部品クラス.
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*	v61.00.00	2022/09/20	FJ)北川		【ANK-4236-02-00】【eo】生体認証パスワードレス認証導入対応
*
**********************************************************************/

package eo.ejb.cbs.mainproc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
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.ECKA9010005CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9010005CBSMsg1List;
import eo.ejb.common.JCKLcsRenkeiUtil;


/**
 * <p>
 * iDA信頼済端末照会依頼独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECKA9010005TPMA implements TemplateMainHandler
{
	public static String PGID = "JECKA9010005TPMA";

	/**
	 * コンストラクタ.
	 */
	public JECKA9010005TPMA()
	{
		super();
	}

	/**
	 * iDA認証済端末照会依頼独自処理部品です。
	 * @param inCBSMsg CAANメッセージ
	 * @param inContext コンテキスト
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws Exception
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JECKA9010005TPMA#invoke start");
		
		Map<String, Object> retMap = new HashMap<String, Object>();
		
		// パラメータチェックがOKの時のみ連携を実行
		if (inCBSMsg != null)
		{
			// パラメータからSYSIDを取得する
			String sysid = inCBSMsg.getString(ECKA9010005CBSMsg.KEY_SYSID);
			
			try
			{
				// iDAのWebAPIへの照会依頼
				retMap = JCKLcsRenkeiUtil.requestiDAWebApiGetTrustedDevice(sysid);
			}
			catch (Exception e)
			{
				printErrorLog(e, "iDA認証済端末照会でエラー発生", sysid);
			}
		}
		
		// iDAからの照会結果が取得できた場合
		if (retMap != null)
		{
			CAANMsg[] ecka9010005list = new CAANMsg[1];
			
			CAANMsg msg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECKA9010005CBSMsg1List");
			
			// 登録フラグ
			msg.set(ECKA9010005CBSMsg1List.REGIST_FLG, (String)retMap.get(ECKA9010005CBSMsg1List.REGIST_FLG));
			
			ecka9010005list[0] = msg;
			
			inCBSMsg.set(ECKA9010005CBSMsg.ECKA9010005CBSMSG1LIST, ecka9010005list);
		}
		// iDAからの照会結果が取得できなかった場合
		else
		{
			// 空のリストを返却する
			inCBSMsg.set(ECKA9010005CBSMsg.ECKA9010005CBSMSG1LIST, new ArrayList<Hashtable<String, Object>>());
		}
		
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JECKA9010005TPMA#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());
	}
}
