/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*    システム名        ：eo顧客基幹システム
*    モジュール名    ：JFUShkEoidSmsSendCC
*    ソースファイル名：JFUShkEoidSmsSendCC.java
*    作成者            ：FJ
*    日付            ：2024年10月03日
*＜機能概要＞
*    SMS送信連携（初期eoID・初期eoIDパスワード）の共通コンポーネント
*＜修正履歴＞
*    バージョン      修正日      修正者      修正内容
*    v72.0.0       2024/10/03   FJ)飯田     ANK-4598-00-00_量販・訪販WebのeoID取得方法変更
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.SAXException;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JFUCommonUtil;
import eo.common.util.JPCUtilCommon;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECR0521A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECR0521A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EFU0361B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EFU0361B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EFU0361C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EFU0361D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EFU0361E010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA1880001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA1880001CBSMsg1List;

/**
 * SMS送信連携（初期eoID・初期eoIDパスワード）の共通コンポーネントクラスです。
 * <br>
 * @author 富士通
 *
 */
public class JFUShkEoidSmsSendCC extends JFUBaseCC
{
	/** SMS送信結果定数 */
	private static final String SMS_RESULT_OK = "0";
	private static final String SMS_RESULT_NG = "1";
	
	/** インターフェース項目 */
	private static final String KEY_SYSID = "key_sysid";
	private static final String KEY_SKBT_KEY = "key_skbt_key";
	private static final String KEY_ONET_KEY_NINSHO_FLG = "key_onet_key_ninsho_flg";
	private static final String KEY_MSKM_NO = "key_mskm_no";
	private static final String KEY_TELNO = "key_telno";
	private static final String KEY_MODE = "key_mode";
	private static final String MESSAGE = "message";
	private static final String EOAPP_REDIRECT_URL = "EOAPP_REDIRECT_URL";
	private static final String KEY_KANRI_NO = "key_kanri_no";
	private static final String SMS_RESULT = "sms_result";

	/** テンプレートID(EFU0361B010) WEB申込情報一覧照会 */
	private static final String TEMPLATE_ID_EFU0361B010 = "EFU0361B010";
	/** テンプレートID(EFU0361C010) WEB申込情報更新 */
	private static final String TEMPLATE_ID_EFU0361C010 = "EFU0361C010";
	/** テンプレートID(ECK0011A010) お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	/** テンプレートID(ECR0521A010) SMS送信元電話番号一意照会 */
	private static final String TEMPLATE_ID_ECR0521A010 = "ECR0521A010";
	/** テンプレートID(EKKA1880001) SMS送信（SMSプッシュサービス） */
	private static final String TEMPLATE_ID_EKKA1880001 = "EKKA1880001";
	/** テンプレートID(KK0011A010) 申込一意照会 */
	private static final String TEMPLATE_ID_EKK0011A010 = "EKK0011A010";
	/** テンプレートID(KK0011C020) 申込内容変更 */
	private static final String TEMPLATE_ID_EKK0011C020 = "EKK0011C020";

	/** テンプレートID詳細(WEB申込情報一覧照会) */
	private static final String TEMPLATE_ID_EFU0361B010_DETAIL = EFU0361B010CBSMsg.EFU0361B010CBSMSG1LIST;
	/** テンプレートID詳細(お客様一意照会) */
	private static final String TEMPLATE_ID_ECK0011A010_DETAIL = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	/** テンプレートID詳細(SMS送信元電話番号一意照会) */
	private static final String TEMPLATE_ID_ECR0521A010_DETAIL = ECR0521A010CBSMsg.ECR0521A010CBSMSG1LIST;
	/** テンプレートID詳細(SMSプッシュサービス) */
	private static final String TEMPLATE_ID_EKKA1880001_DETAIL = EKKA1880001CBSMsg.EKK1880001CBSMSG1LIST;
	/** テンプレートID詳細(申込一意照会) */
	private static final String TEMPLATE_ID_EKK0011A010_DETAIL = EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST;

	/** 申込内容変更 IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EFU0361B010 = Arrays.asList(
			EFU0361B010CBSMsg.KEY_KANRI_NO
			);

	/** 申込内容変更 IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EFU0361C010 = Arrays.asList(
			EFU0361C010CBSMsg.KANRI_NO,
			EFU0361C010CBSMsg.SKBT_KEY,
			EFU0361C010CBSMsg.SMS_SENDS_TELNO,
			EFU0361C010CBSMsg.ONET_KEY,
			EFU0361C010CBSMsg.ONET_KEY_SEND_TIME,
			EFU0361C010CBSMsg.ONET_KEY_YK_KIGEN,
			EFU0361C010CBSMsg.ONET_KEY_NINSHO_FLG,
			EFU0361C010CBSMsg.EOID,
			EFU0361C010CBSMsg.EOID_PWD,
			EFU0361C010CBSMsg.MLAD,
			EFU0361C010CBSMsg.SOCIAL_ID,
			EFU0361C010CBSMsg.SOCIAL_ID_SBT,
			EFU0361C010CBSMsg.NINSHO_LV,
			EFU0361C010CBSMsg.ONET_KEY_SHS_YUSEN_DIV,
			EFU0361C010CBSMsg.UPD_DTM_BF,
			EFU0361C010CBSMsg.SESSION_INFO
			);

	/** お客様一意照会 IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_ECK0011A010 = Arrays.asList(
			ECK0011A010CBSMsg.KEY_SYSID,
			ECK0011A010CBSMsg.KEY_RSV_APLY_YMD
			);

	/** SMS送信元電話番号一意照会 IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_ECR0521A010 = Arrays.asList(
			ECR0521A010CBSMsg.KEY_SMS_SENDM_TLN_DIV
			);

	/** SMS送信（SMSプッシュサービス） IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKKA1880001 = Arrays.asList(
			EKKA1880001CBSMsg.ADDRESS,
			EKKA1880001CBSMsg.SENDERNAME,
			EKKA1880001CBSMsg.CODINGSCHEME,
			EKKA1880001CBSMsg.MESSAGE,
			EKKA1880001CBSMsg.SENDM_KEY_INF,
			EKKA1880001CBSMsg.SENDM_KEY_INF_SBT_CD
			);

	/** 申込一意照会 IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0011A010 = Arrays.asList(
			EKK0011A010CBSMsg.KEY_MSKM_NO
			);

	/** 申込内容変更 IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0011C020 = Arrays.asList(
			EKK0011C020CBSMsg.MSKM_NO,
			EKK0011C020CBSMsg.MSKM_SBT_CD,
			EKK0011C020CBSMsg.MSKMSHO_ARIV_YMD,
			EKK0011C020CBSMsg.MSKM_UK_DTM,
			EKK0011C020CBSMsg.MSKM_UK_TNT_USER_ID,
			EKK0011C020CBSMsg.MSKM_YMD,
			EKK0011C020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD,
			EKK0011C020CBSMsg.MSKM_RRKS_TELNO,
			EKK0011C020CBSMsg.MSKM_JSSIS_SBT_CD,
			EKK0011C020CBSMsg.CUST_YOBO_JIKO,
			EKK0011C020CBSMsg.TEL_RRK_KIBOD_SBT_CD,
			EKK0011C020CBSMsg.TEL_RRK_KIBO_TIME_CD,
			EKK0011C020CBSMsg.TAKCHO_KIBOD_SBT_CD,
			EKK0011C020CBSMsg.TAKCHO_KIBO_TIME_CD,
			EKK0011C020CBSMsg.REFERER,
			EKK0011C020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM,
			EKK0011C020CBSMsg.SHOSA_BF_RRK_JIKO_YH,
			EKK0011C020CBSMsg.SHOSA_BF_RRK_JIKO,
			EKK0011C020CBSMsg.USE_SVC_KEIZK_SBT_CD,
			EKK0011C020CBSMsg.UK_TNTSHA_SKBT_CD,
			EKK0011C020CBSMsg.KOJI_REQ_INFO_RRK_JIKO,
			EKK0011C020CBSMsg.UPD_DTM_BF,
			EKK0011C020CBSMsg.TKJCP_CD,
			EKK0011C020CBSMsg.TKJCP_NM,
			EKK0011C020CBSMsg.TKJCP_STNEGS_NM,
			EKK0011C020CBSMsg.TKJCPTTS_NM,
			EKK0011C020CBSMsg.TKJCPTTS_SHKSNM,
			EKK0011C020CBSMsg.TKJCPTTS_TLN,
			EKK0011C020CBSMsg.BUNJOCHI_NM,
			EKK0011C020CBSMsg.BUNJOCHI_KKK_NO_MEMO,
			EKK0011C020CBSMsg.NYUKYO_RSV_JK,
			EKK0011C020CBSMsg.AGNT_MKM_UK_EOSTF_USER_ID,
			EKK0011C020CBSMsg.AGNT_MKM_UK_RHSTF_KANA_SEI,
			EKK0011C020CBSMsg.TEGAK_SVC_MSKM_KIKI,
			EKK0011C020CBSMsg.SKBT_KEY
			);

	/**
	 * SMS送信連携（初期eoID・初期eoIDパスワード）を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		String sms_result = SMS_RESULT_OK;
		// リクエストパラメータ（FUSV037901CCマップ）
		HashMap inMap = (HashMap)param.getData(fixedText);
		
		/** WEB申込情報一覧照会 */
		// 管理番号取得
		String kanri_no = (String)inMap.get(KEY_KANRI_NO);
		// 上がりマッピング
		setEFU0361B010(param, fixedText, inMap, TEMPLATE_ID_EFU0361B010, kanri_no);
		// SIF実行
		executeSC(handle, param, TEMPLATE_ID_EFU0361B010, TEMPLATE_ID_EFU0361B010, TEMPLATE_ID_EFU0361B010_DETAIL, IN_COLUMN_LIST_EFU0361B010, BLANK);
		// 実行結果取得
		HashMap efu0361b010Map = (HashMap)param.getData(TEMPLATE_ID_EFU0361B010);
		List<HashMap> efu0361b010List = (List<HashMap>) efu0361b010Map.get(TEMPLATE_ID_EFU0361B010_DETAIL);
		HashMap efu0361b010ListDtlMap = new HashMap();
		if (!JFUBPCommon.isNull(efu0361b010List))
		{
			efu0361b010ListDtlMap = efu0361b010List.get(0);
		}

		/** WEB申込情報更新 */
		// ワンタイムキー認証フラグ
		String onet_key_ninsho_flg = (String)inMap.get(KEY_ONET_KEY_NINSHO_FLG);
		// 上がりマッピング
		setEFU0361C010(param, fixedText, inMap, TEMPLATE_ID_EFU0361C010, efu0361b010ListDtlMap, onet_key_ninsho_flg, IN_COLUMN_LIST_EFU0361C010);
		// SIF実行
		executeSC(handle, param, TEMPLATE_ID_EFU0361C010, TEMPLATE_ID_EFU0361C010, BLANK, IN_COLUMN_LIST_EFU0361C010, BLANK);
		
		/** お客様一意照会（初期eoID,初期eoIDパスワードの取得） */
		// テンプレートID(ECK0011A010)
		String templateId = TEMPLATE_ID_ECK0011A010;
		// 上がりマッピング
		setECK0011A010(param, fixedText, inMap);
		// SIF実行(お客様一意照会)
		executeSC(handle, param, templateId, templateId, TEMPLATE_ID_ECK0011A010_DETAIL, IN_COLUMN_LIST_ECK0011A010, BLANK);
		// 実行結果取得
		HashMap eck0011a010Map = (HashMap)param.getData(templateId);
		List<HashMap> eck0011a010List = (List<HashMap>) eck0011a010Map.get(TEMPLATE_ID_ECK0011A010_DETAIL);
		HashMap eck0011a010DtlMap = eck0011a010List.get(0);
		// 初期eoID,パスワード取得
		String shkeoid = (String) eck0011a010DtlMap.get(ECK0011A010CBSMsg1List.SHK_EOID);
		String shkeoidPass = (String) eck0011a010DtlMap.get(ECK0011A010CBSMsg1List.SHK_EOID_PWD);
		
		/** SMSメッセージの作成 */
		String message = (String)inMap.get(MESSAGE);
		String eoapp_redirect_url = (String)inMap.get(EOAPP_REDIRECT_URL);
		
		ArrayList<String> textList = new ArrayList<String>();
		textList.add(shkeoid);
		textList.add(shkeoidPass);
		textList.add(eoapp_redirect_url);
		
		for (int i = 0; i < textList.size(); i++)
		{
			message = message.replace("%" + String.valueOf(i + 1), textList.get(i));
		}
		outDebugLog(message);
		
		/** SMS送信元電話番号一意照会 */
		// 上がりマッピング
		setECR0521A010(param, fixedText, inMap);
		// SIF実行
		executeSC(handle, param, TEMPLATE_ID_ECR0521A010, TEMPLATE_ID_ECR0521A010, TEMPLATE_ID_ECR0521A010_DETAIL, IN_COLUMN_LIST_ECR0521A010, BLANK);
		// 実行結果取得
		HashMap ecr0521a010Map = (HashMap)param.getData(TEMPLATE_ID_ECR0521A010);
		List<HashMap> ecr0521a010List = (List<HashMap>) ecr0521a010Map.get(TEMPLATE_ID_ECR0521A010_DETAIL);
		String sendername = JFUStrConst.EMPTY;
		if (!JFUBPCommon.isNull(ecr0521a010List))
		{
			HashMap dtlMap = ecr0521a010List.get(0);
			// SMS送信元電話番号番号
			sendername = (String) dtlMap.get(ECR0521A010CBSMsg1List.SMS_SENDM_TLN);
		}
		
		/** SMS送信（SMSプッシュサービス） */
		// 上がりマッピング
		setEKKA1880001(param, fixedText, inMap, message, sendername, kanri_no);
		// SIF実行
		executeSC(handle, param, TEMPLATE_ID_EKKA1880001, TEMPLATE_ID_EKKA1880001, TEMPLATE_ID_EKKA1880001_DETAIL, IN_COLUMN_LIST_EKKA1880001, BLANK);
		// 実行結果取得
		HashMap ekka1880001Map = (HashMap)param.getData(TEMPLATE_ID_EKKA1880001);
		List<HashMap> ekka1880001List = (List<HashMap>) ekka1880001Map.get(TEMPLATE_ID_EKKA1880001_DETAIL);
		String httpStatus = "500";
		if (!JFUBPCommon.isNull(ekka1880001List))
		{
			HashMap dtlMap = ekka1880001List.get(0);
			// httpStatus
			httpStatus = (String) dtlMap.get(EKKA1880001CBSMsg1List.HTTP_STATUS);
		}
		if (!"200".equals(httpStatus))
		{
			sms_result = SMS_RESULT_NG;
		}

		// SMS送信結果設定
		inMap.put(SMS_RESULT, sms_result);
		
		// SMS送信が正常終了している場合、申込スキーマ（KK0011）に識別キーを登録する
		if(SMS_RESULT_OK.equals(sms_result)){
		/** 申込一意照会 */
			// 申込番号
			String mskm_no = (String)inMap.get(KEY_MSKM_NO);
			// 上がりマッピング
			setEKK0011A010(param, fixedText, inMap, mskm_no);
			// SIF実行
			executeSC(handle, param, TEMPLATE_ID_EKK0011A010, TEMPLATE_ID_EKK0011A010, TEMPLATE_ID_EKK0011A010_DETAIL, IN_COLUMN_LIST_EKK0011A010, BLANK);
			// 実行結果取得
			HashMap ekk0011a010Map = (HashMap)param.getData(TEMPLATE_ID_EKK0011A010);
			List<HashMap> ekk0011a010List = (List<HashMap>) ekk0011a010Map.get(TEMPLATE_ID_EKK0011A010_DETAIL);
			HashMap ekk0011a010ListDtlMap = new HashMap();
			if (!JFUBPCommon.isNull(ekk0011a010List))
			{
				ekk0011a010ListDtlMap = ekk0011a010List.get(0);
			}
	
			/** 申込内容変更 */
			// 識別キー
			String skbt_key = (String)inMap.get(KEY_SKBT_KEY);
			// 上がりマッピング
			setEKK0011C020(param, fixedText, inMap, ekk0011a010ListDtlMap, skbt_key, IN_COLUMN_LIST_EKK0011C020);
			// SIF実行
			executeSC(handle, param, TEMPLATE_ID_EKK0011C020, TEMPLATE_ID_EKK0011C020, BLANK, IN_COLUMN_LIST_EKK0011C020, BLANK);
		}

		return param;

	}

	/**
	 * 上りマッピング項目設定(WEB申込情報一覧照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param paramMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEFU0361B010(IRequestParameterReadWrite param, String fixedText, HashMap paramMap, String templateId, String kanriNo)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> efu0361b010Map = (HashMap<String, Object>)param.getData(templateId);
		if (efu0361b010Map == null)
		{
			efu0361b010Map = new HashMap();
			param.setData(templateId, efu0361b010Map);
		}
		
		// 機能コード設定
		setFuncCode(param, templateId, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿SYSID
		efu0361b010Map.put(EFU0361B010CBSMsg.KEY_KANRI_NO, kanriNo);
	}

	/**
	 * 上りマッピング項目設定(WEB申込情報更新)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param paramMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEFU0361C010(IRequestParameterReadWrite param, String fixedText, HashMap paramMap, String templateId,  HashMap dtlMap, String onet_key_ninsho_flg, List<String> keyList)
			throws RequestParameterException
	{
		HashMap<String, Object> efu0361c010Map = (HashMap<String, Object>)param.getData(templateId);
		if (efu0361c010Map == null)
		{
			efu0361c010Map = new HashMap();
			param.setData(templateId, efu0361c010Map);
		}

		// INカラムリストをキーとしてカレントの申込情報を投入値とする
		for(Iterator<String> ite = keyList.iterator(); ite.hasNext();){
			String mapkey = ite.next();
			if(!(isNull(dtlMap.get(mapkey)))){
				efu0361c010Map.put(mapkey, dtlMap.get(mapkey));
			}
		}

		// 機能コード設定
		efu0361c010Map.put(EFU0361C010CBSMsg.FUNC_CODE, "1");
		// 更新年月日時分秒(更新前)
		efu0361c010Map.put(EFU0361C010CBSMsg.UPD_DTM_BF, dtlMap.get(EFU0361C010CBSMsg.UPD_DTM));
		// 変更値設定(ワンタイムキー認証フラグ)
		efu0361c010Map.put(EFU0361C010CBSMsg.ONET_KEY_NINSHO_FLG, onet_key_ninsho_flg);
	}

	/**
	 * 上りマッピング項目設定(お客様一意照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param paramMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setECK0011A010(IRequestParameterReadWrite param, String fixedText, HashMap paramMap)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> eck0011a010Map = (HashMap<String, Object>)param.getData(TEMPLATE_ID_ECK0011A010);
		if (eck0011a010Map == null)
		{
			eck0011a010Map = new HashMap();
			param.setData(TEMPLATE_ID_ECK0011A010, eck0011a010Map);
		}
		
		// 機能コード設定
		setFuncCode(param, TEMPLATE_ID_ECK0011A010, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿SYSID
		eck0011a010Map.put(ECK0011A010CBSMsg.KEY_SYSID, paramMap.get(KEY_SYSID));
		// ＫＥＹ＿予約適用年月日
		eck0011a010Map.put(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	
	/**
	 * 上りマッピング項目設定(SMS送信元電話番号一意照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setECR0521A010(IRequestParameterReadWrite param, String fixedText, HashMap dataMap)
			throws RequestParameterException
	{
		HashMap<String, Object> ecr0521a010Map = (HashMap<String, Object>)param.getData(TEMPLATE_ID_ECR0521A010);
		if (ecr0521a010Map == null)
		{
			ecr0521a010Map = new HashMap();
			param.setData(TEMPLATE_ID_ECR0521A010, ecr0521a010Map);
		}

		// 機能コード設定
		ecr0521a010Map.put(JCMConstants.FUNC_CODE_KEY, "1");
		ecr0521a010Map.put(IGNORE_SEARCH_ERR, true);
		// ＫＥＹ＿SMS送信元電話番号区分
		ecr0521a010Map.put(ECR0521A010CBSMsg.KEY_SMS_SENDM_TLN_DIV, "03");

	}
	
	/**
	 * 上りマッピング項目設定(SMS送信（SMSプッシュサービス）)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @param message
	 * @param sendername
	 * @param kanri_no
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKKA1880001(IRequestParameterReadWrite param, String fixedText, HashMap dataMap, String message, String sendername, String kanri_no)
			throws RequestParameterException
	{
		HashMap<String, Object> ekka1880001Map = (HashMap<String, Object>)param.getData(TEMPLATE_ID_EKKA1880001);
		if (ekka1880001Map == null)
		{
			ekka1880001Map = new HashMap();
			param.setData(TEMPLATE_ID_EKKA1880001, ekka1880001Map);
		}

		// パラメータ取得
		String key_telno = (String)dataMap.get(KEY_TELNO);

		// 機能コード設定
		ekka1880001Map.put(JCMConstants.FUNC_CODE_KEY, "1");
		// 電話番号
		ekka1880001Map.put(EKKA1880001CBSMsg.ADDRESS, key_telno);
		// メッセージ
		ekka1880001Map.put(EKKA1880001CBSMsg.MESSAGE, message);
		// 文字コード
		ekka1880001Map.put(EKKA1880001CBSMsg.CODINGSCHEME, "1");
		// 送信者情報
		ekka1880001Map.put(EKKA1880001CBSMsg.SENDERNAME, sendername);
		// 送信元キー情報
		ekka1880001Map.put(EKKA1880001CBSMsg.SENDM_KEY_INF, kanri_no);
		// 送信元キー情報種別コード
		ekka1880001Map.put(EKKA1880001CBSMsg.SENDM_KEY_INF_SBT_CD, "3");

	}

	/**
	 * 上りマッピング項目設定(申込一意照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0011A010(IRequestParameterReadWrite param, String fixedText, HashMap dataMap, String mskm_no)
			throws RequestParameterException
	{
		HashMap<String, Object> ekk0011a010Map = (HashMap<String, Object>)param.getData(TEMPLATE_ID_EKK0011A010);
		if (ekk0011a010Map == null)
		{
			ekk0011a010Map = new HashMap();
			param.setData(TEMPLATE_ID_EKK0011A010, ekk0011a010Map);
		}

		// 機能コード設定
		ekk0011a010Map.put(EKK0011A010CBSMsg.FUNC_CODE, "2");
		// key_申込番号
		ekk0011a010Map.put(EKK0011A010CBSMsg.KEY_MSKM_NO, mskm_no);
	}

	
	/**
	 * 上りマッピング項目設定(申込内容変更)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0011C020(IRequestParameterReadWrite param, String fixedText, HashMap dataMap, HashMap dtlMap, String skbt_key, List<String> keyList)
			throws RequestParameterException
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(TEMPLATE_ID_EKK0011C020);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(TEMPLATE_ID_EKK0011C020, inMap);
		}

		// INカラムリストをキーとしてカレントの申込情報を投入値とする
		for(Iterator<String> ite = keyList.iterator(); ite.hasNext();){
			String mapkey = ite.next();
			if(!(isNull(dtlMap.get(mapkey)))){
				inMap.put(mapkey, dtlMap.get(mapkey));
			}
		}

		// 機能コード設定
		inMap.put(EKK0011C020CBSMsg.FUNC_CODE, "1");
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0011C020CBSMsg.UPD_DTM_BF, dtlMap.get(EKK0011C020CBSMsg.UPD_DTM));
		// 変更値設定(識別キー)
		inMap.put(EKK0011C020CBSMsg.SKBT_KEY, skbt_key);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * デバッグ出力処理です。
	 * 
	 * <br>
	 * @param obj 出力内容
	 */
	private void outDebugLog(Object obj)
	{
		// デバッグ出力
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), obj, null, null, null);
	}

	/**
	 * オブジェクトに値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private static boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
}