/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKKA1890002TPMA
*	ソースファイル名：JEKKA1890002TPMA.java
*	作成者			：FJ）北川
*	日付			：2022年07月13日
*＜機能概要＞
*	MT管理情報更新(MANMOS)共通処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v60.00.00	2022/07/16	FJ）北川	【ANK-4244-00-00】MT既設賃貸
********************************************************************************/
package eo.ejb.cbs.mainproc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.ejb.cbs.cbsmsg.EKKA1890002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA1890002CBSMsg1List;
import gyomu.JKKcommonApiKKA1890002;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;
import com.k_opti.api_parts.client.constant.ApiClientConst;

public class JEKKA1890002TPMA implements TemplateMainHandler
{
	
	/**
	 * MT管理情報更新(MANMOS)連携の実行
	 * <br>
	 * @param inCBSMsg
	 * @param inContext
	 */
	public static void executeKKIFE497(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		HashMap<String, Object> serviceMap = new HashMap<String,Object>();
		serviceMap.put(JKKcommonApiKKA1890002.FUNC_CODE, inCBSMsg.getString(EKKA1890002CBSMsg.FUNC_CODE));
		serviceMap.put(JKKcommonApiKKA1890002.PID, inCBSMsg.getString(EKKA1890002CBSMsg.KEY_PID));
		serviceMap.put(JKKcommonApiKKA1890002.SEQ, inCBSMsg.getString(EKKA1890002CBSMsg.KEY_SEQ));
		serviceMap.put(JKKcommonApiKKA1890002.TOU_NO, inCBSMsg.getString(EKKA1890002CBSMsg.TOU_NO));
		serviceMap.put(JKKcommonApiKKA1890002.RM_NO, inCBSMsg.getString(EKKA1890002CBSMsg.RM_NO));
		serviceMap.put(JKKcommonApiKKA1890002.MAE_KOJI_NO, inCBSMsg.getString(EKKA1890002CBSMsg.MAE_KOJI_NO));
		serviceMap.put(JKKcommonApiKKA1890002.CFM_RSLT_CD, inCBSMsg.getString(EKKA1890002CBSMsg.CFM_RSLT_CD));
		serviceMap.put(JKKcommonApiKKA1890002.SPMPORT_MAX, inCBSMsg.getString(EKKA1890002CBSMsg.SPMPORT_MAX));
		serviceMap.put(JKKcommonApiKKA1890002.SPMPORT_USE, inCBSMsg.getString(EKKA1890002CBSMsg.SPMPORT_USE));
		serviceMap.put(JKKcommonApiKKA1890002.SEKOU_NG_FLG, inCBSMsg.getString(EKKA1890002CBSMsg.SEKOU_NG_FLG));
		serviceMap.put(JKKcommonApiKKA1890002.CCT_SET_CD, inCBSMsg.getString(EKKA1890002CBSMsg.CCT_SET_CD));
		serviceMap.put(JKKcommonApiKKA1890002.BIKO, inCBSMsg.getString(EKKA1890002CBSMsg.BIKO));
		
		try
		{
			JKKcommonApiKKA1890002 instance = new JKKcommonApiKKA1890002();
			
			Map<String, Object> resposeMap = instance.callApiKKA1890002(serviceMap);
			// 結果を受信
			inCBSMsg.set(EKKA1890002CBSMsg.RESULTCODE, (String)resposeMap.get(ApiClientConst.IF_HEADER_RESULTCODE));
			inCBSMsg.set(EKKA1890002CBSMsg.RESULTDETAILCODE, (String)resposeMap.get(ApiClientConst.IF_HEADER_RESULTDETAILCODE));
			ArrayList<CAANMsg> errList = new ArrayList<CAANMsg>();
			ArrayList<?> gyoumErrorList = (ArrayList<?>)resposeMap.get(ApiClientConst.IF_HEADER_GYOMUERRORLIST);
			if (gyoumErrorList != null)
			{
				for (Object obj : gyoumErrorList)
				{
					if (obj instanceof HashMap)
					{
						CAANMsg msg = new CAANMsg(EKKA1890002CBSMsg1List.class.getName());
						HashMap<?, ?> errMap = (HashMap<?, ?>)obj;
						msg.set(EKKA1890002CBSMsg1List.ERRORCODE, toStingObj(errMap.get(JKKcommonApiKKA1890002.ERR_CODE)));
						msg.set(EKKA1890002CBSMsg1List.ERRORMESSAGE, toStingObj(errMap.get(JKKcommonApiKKA1890002.ERR_MESSAGE)));
						errList.add(msg);
					}
				}
				if (errList.size() > 0)
				{
					inCBSMsg.set(EKKA1890002CBSMsg.EKKA1890002CBSMSG1LIST, errList.toArray(new CAANMsg[0]));
				}
			}
			HashMap<?,?> bodyMap = (HashMap<?,?>)resposeMap.get(ApiClientConst.IF_BODY);
			if (bodyMap != null)
			{
				Object resultCnt = bodyMap.get(JKKcommonApiKKA1890002.RESLT_CNT);
				inCBSMsg.set(EKKA1890002CBSMsg.RESLT_CNT, toStingObj(resultCnt));
			}
		}
		catch (Exception e)
		{
			inCBSMsg.set(EKKA1890002CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
		}
		
	}
	
	/**
	 * 文字に変換する。
	 * <br>
	 * @param obj 対象のオブジェクト
	 * @return 文字列
	 */
	private static String toStingObj(Object obj)
	{
		if (obj == null)
		{
			return "";
		}
		return obj.toString();
	}
}