/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JECKA9010002TPMA
*   ソースファイル名：JECKA9010002TPMA.java
*   作成者          ：EK942336
*   日付            ：2019年11月12日
*＜機能概要＞
*   AXM会員情報照会依頼独自処理部品クラス.
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v47.00.00   2019/11/12  FJ)三原     新規作成(ANK-3706-00-00_ｅｏＩＤログインのセキュリティ強化対応)
*	v48.00.00	2020/02/25	FJ)張本		【ANK-3771-00-00】ソーシャルIDログイン機能導入対応
*	v60.00.00	2022/08/05	FJ)北村		【ANK-4236-00-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.ECKA9010002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9010002CBSMsg1List;
import eo.ejb.common.JCKLcsRenkeiUtil;


/**
 * <p>
 * AXM会員情報照会依頼独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECKA9010002TPMA implements TemplateMainHandler
{
	public static String PGID = "JECKA9010002TPMA";

	/**
	 * コンストラクタ.
	 */
	public JECKA9010002TPMA()
	{
		super();
	}

	/**
	 * AXM会員情報照会依頼独自処理部品です。
	 * @param inCBSMsg CAANメッセージ
	 * @param inContext コンテキスト
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws Exception
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JECKA9010002TPMA#invoke start");
		
		Map<String, Object> retMap = new HashMap<String, Object>();
		
		// パラメータチェックがOKの時のみ連携を実行
		if (inCBSMsg != null)
		{
			// パラメータからSYSIDを取得する
			String sysid = inCBSMsg.getString(ECKA9010002CBSMsg.KEY_SYSID);
			
			try
			{
				// iDAのWebAPIへの照会依頼
				retMap = JCKLcsRenkeiUtil.requestiDAWebApiSearch(sysid);
			}
			catch (Exception e)
			{
				printErrorLog(e, "AXM会員情報更新依頼（検索）でエラー発生", sysid);
			}
		}
		
		// iDAからの照会結果が取得できた場合
		if (retMap != null)
		{
			CAANMsg[] ecka9010002list = new CAANMsg[1];
			
			CAANMsg msg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECKA9010002CBSMsg1List");
			
			// ＳＹＳＩＤ
			msg.set(ECKA9010002CBSMsg1List.SYSID, (String)retMap.get(ECKA9010002CBSMsg1List.SYSID));
			// ニックネーム
			msg.set(ECKA9010002CBSMsg1List.NK_NM, (String)retMap.get(ECKA9010002CBSMsg1List.NK_NM));
			// 会員種別
			msg.set(ECKA9010002CBSMsg1List.KIIN_SHUBT, (String)retMap.get(ECKA9010002CBSMsg1List.KIIN_SHUBT));
			// 連絡先メールアドレス
			msg.set(ECKA9010002CBSMsg1List.RNRKSK_MR, (String)retMap.get(ECKA9010002CBSMsg1List.RNRKSK_MR));
			// 年齢フラグ
			msg.set(ECKA9010002CBSMsg1List.AGE_FLG, (String)retMap.get(ECKA9010002CBSMsg1List.AGE_FLG));
			// 性別
			msg.set(ECKA9010002CBSMsg1List.SIBT, (String)retMap.get(ECKA9010002CBSMsg1List.SIBT));
			// 登録フラグ
			msg.set(ECKA9010002CBSMsg1List.TURK_FLG, (String)retMap.get(ECKA9010002CBSMsg1List.TURK_FLG));
			// ISP利用停止フラグ
			msg.set(ECKA9010002CBSMsg1List.ISP_RYU_TIS_FLG, (String)retMap.get(ECKA9010002CBSMsg1List.ISP_RYU_TIS_FLG));
			// 標準コンテンツ規約同意フラグ
			msg.set(ECKA9010002CBSMsg1List.HYOJUN_KNTNT_DUI_FLG, (String)retMap.get(ECKA9010002CBSMsg1List.HYOJUN_KNTNT_DUI_FLG));
			// テストIDフラグ
			msg.set(ECKA9010002CBSMsg1List.TST_ID_FLG, (String)retMap.get(ECKA9010002CBSMsg1List.TST_ID_FLG));
			// 会員状態
			msg.set(ECKA9010002CBSMsg1List.JYOUTAI, (String)retMap.get(ECKA9010002CBSMsg1List.JYOUTAI));
			// 会員種別特定フラグ
			msg.set(ECKA9010002CBSMsg1List.KIIN_TOKUTEI, (String)retMap.get(ECKA9010002CBSMsg1List.KIIN_TOKUTEI));
			// 更新年月日時分秒
			msg.set(ECKA9010002CBSMsg1List.U_DATE, (String)retMap.get(ECKA9010002CBSMsg1List.U_DATE));
			// ログイン認証レベル
			msg.set(ECKA9010002CBSMsg1List.AUTHENTICATION_LEVEL, (String)retMap.get(ECKA9010002CBSMsg1List.AUTHENTICATION_LEVEL));
			// ワンタイムキー送付先優先区分
			msg.set(ECKA9010002CBSMsg1List.ONETIMEKEY_DESTINATION, (String)retMap.get(ECKA9010002CBSMsg1List.ONETIMEKEY_DESTINATION));
			// 契約者携帯電話番号
			msg.set(ECKA9010002CBSMsg1List.MOBILE_NUMBER, (String)retMap.get(ECKA9010002CBSMsg1List.MOBILE_NUMBER));
// v48.00.00 ANK-3771-00-00 ADD START
			// sub値（Google）
			msg.set(ECKA9010002CBSMsg1List.SUB_GOOGLE, (String)retMap.get(ECKA9010002CBSMsg1List.SUB_GOOGLE));
			// sub値（Yahoo!）
			msg.set(ECKA9010002CBSMsg1List.SUB_YAHOO, (String)retMap.get(ECKA9010002CBSMsg1List.SUB_YAHOO));
			// sub値（Facebook）
			msg.set(ECKA9010002CBSMsg1List.SUB_FACEBOOK, (String)retMap.get(ECKA9010002CBSMsg1List.SUB_FACEBOOK));
			// sub値（Apple）
			msg.set(ECKA9010002CBSMsg1List.SUB_APPLE, (String)retMap.get(ECKA9010002CBSMsg1List.SUB_APPLE));
// v48.00.00 ANK-3771-00-00 ADD END
// v60.00.00 ANK-4236-00-00 ADD START
			// パスワード有効フラグ
			msg.set(ECKA9010002CBSMsg1List.ENABLE_PASSWORD_FLG, (String)retMap.get(ECKA9010002CBSMsg1List.ENABLE_PASSWORD_FLG));
// v60.00.00 ANK-4236-00-00 ADD END
			
			ecka9010002list[0] = msg;
			
			inCBSMsg.set(ECKA9010002CBSMsg.ECKA9010002CBSMSG1LIST, ecka9010002list);
		}
		// iDAからの照会結果が取得できなかった場合
		else
		{
			// 空のリストを返却する
			inCBSMsg.set(ECKA9010002CBSMsg.ECKA9010002CBSMSG1LIST, new ArrayList<Hashtable<String, Object>>());
		}
		
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JECKA9010002TPMA#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());
	}
}
