/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKMineoSetPlanWribCC
*   ソースファイル名：JKKMineoSetPlanWribCC.java
*   作成者          ：富士通
*   日付            ：2018年07月04日
*＜機能概要＞
*   mineoセット割申込割引情報取得コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者       修正内容
*   v38.00.00   2018/07/04   FJ) 和田(さ) 【ANK-3436-00-00】eo光×eo電気×mineoセット割対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.AbstractCommonComponent;
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.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0841A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0841A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg1List;

/**
 * mineoセット割申込割引情報取得コモンコンポーネント部品です。
 * <br>
 * @author 富士通
 */

@SuppressWarnings("unchecked")
public class JKKMineoSetPlanWribCC extends AbstractCommonComponent
{

	/* ■□ IN項目 ■□ */
	/** IN：ＫＥＹ＿確認区分 */
	private static final String KEY_CHK_KBN = "key_chk_kbn";
	/** ＫＥＹ＿確認区分　"1"（業務パラメータ確認） */
	private static final String KEY_CHK_KBN_1 = "1";
	/** ＫＥＹ＿確認区分　"2"（mineo/電気確認） */
	private static final String KEY_CHK_KBN_2 = "2";

	/* ■□ OUT項目 ■□ */
	/** OUT：処理結果 */
	private static final String RESULT = "result";
	/** OUT：表示用キャンペーンコード */
	private static final String DSP_CAMPAIGN_CD = "dsp_campaign_cd";
	/** OUT：割引サービス名 */
	private static final String WRIB_SVC_NM = "wrib_svc_nm";
	/** OUT：割引サービスコード */
	private static final String WRIB_SVC_CD = "wrib_svc_cd";

	/** 処理結果　"0"（正常終了/対象） */
	private static final String RESULT_NORMAL = "0";
	/** 処理結果　"9"（パラメータエラー） */
	private static final String RESULT_ERR_9 = "9";

	//-------------------------------------------------------------------------------------------------//
	/* 【マスタ】■□ EZM0321B010_業務パラメータ管理一覧照会 ■□ */
	//-------------------------------------------------------------------------------------------------//
	/** 業務パラメータ管理一覧照会 */
	private static final String TEMPLATE_ID_EZM0321B010 = "EZM0321B010";

	/** 業務パラメータ管理一覧照会（ＫＥＹ＿業務パラメータID） */
	private static final String KEY_WORK_PARAM_ID_EZM0321B010 = "^KK_SETWARI_";

	/** 業務パラメータ設定値 キャンペーンコード */
	private static final int SETTE_VALUE_DSP_CAMPAIGN_CD = 0;
	/** 業務パラメータ設定値 割引サービスコード */
	private static final int SETTE_VALUE_WRIB_SVC_CD = 1;
	/** 業務パラメータ設定値 キャンペーン種類 */
	private static final int SETTE_VALUE_CAMPAIGN_KIND = 3;
	/** 業務パラメータ設定値 Web可否フラグ */
	private static final int SETTE_VALUE_WEB_KAHI = 4;

	/** 業務パラメータ設定値 キャンペーン種類（商品券） */
	private static final String SETTE_VALUE_CAMPAIGN_KIND_SHOHINK = "2";

	//-------------------------------------------------------------------------------------------------//
	/* 【マスタ】■□ EKK0841A010_割引サービス一意照会 ■□ */
	//-------------------------------------------------------------------------------------------------//
	/** 割引サービス一意照会 */
	private static final String TEMPLATE_ID_EKK0841A010 = "EKK0841A010";
	/** 割引サービス一意照会.明細 */
	private static final String TEMPLATE_ID_EKK0841A010_DTL = EKK0841A010CBSMsg.EKK0841A010CBSMSG1LIST;


	/** 業務データ取得用I/F */
	private static ThreadLocal<IRequestParameterReadWrite> cmnParam = new ThreadLocal<IRequestParameterReadWrite>();

	static final int DEFAULT_ARRAY_SIZE = 100;
	static final int DEFAULT_HASH_SIZE = 50;

	/**
	 * メイン処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		try
		{
			HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

			// パラメータチェック処理
			if (isParamChkErr(inMap))
			{
				resultSet(param, fixedText, RESULT_ERR_9, null);
				return param;
			}

			// 業務パラメータ取得処理
			List<HashMap<String, Object>> workParamList = new ArrayList<HashMap<String, Object>>();
			getWorkParamKnri(handle, param, fixedText, workParamList);

			// キャンペーン0件チェック
			if (isListEmpty(workParamList))
			{
				resultSet(param, fixedText, RESULT_NORMAL, null);
				return param;
			}

			// オンライン運用日付
			String opeDate = JFUBPCommon.getOpeDate(null);

			// 割引サービス取得処理
			List<HashMap<String, Object>> wribSvcList = new ArrayList<HashMap<String, Object>>();
			for (HashMap<String, Object> workParamMap : workParamList)
			{
				getWribSvc(handle, param, fixedText, wribSvcList, workParamMap, opeDate);
			}
			resultSet(param, fixedText, RESULT_NORMAL, wribSvcList);
		}
		finally
		{
		}
		return param;
	}

	/**
	 * パラメータチェック処理。
	 * 
	 * <br>
	 * @param inMap inMap
	 * @return true：エラー、false：正常
	 */
	private boolean isParamChkErr(HashMap<String, Object> inMap)
	{
		if (inMap == null)
		{
			return true;
		}
		String key_chk_kbn = (String)inMap.get(KEY_CHK_KBN);
		if (KEY_CHK_KBN_1.equals(key_chk_kbn))
		{
			return false;
		}
		if (KEY_CHK_KBN_2.equals(key_chk_kbn))
		{
			return false;
		}
		return true;
	}

	/**
	 * 【マスタ】業務パラメータ取得処理（上り）
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Throwable 
	 */
	private void getWorkParamKnri(SessionHandle handle,
								   IRequestParameterReadWrite param,
								   String fixedText,
								   List<HashMap<String, Object>> resultList)
			throws Throwable
	{
		// リクエストパラメータをフィールドの変数に設定
		cmnParam.set(param);

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EZM0321B010CBSMsg.class, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿業務パラメータID
		MsgEditer.set(msg, EZM0321B010CBSMsg.KEY_WORK_PARAM_ID, KEY_WORK_PARAM_ID_EZM0321B010);

		// サービスIFの呼び出し
		CAANMsg invokedResult = invokeSvcIFSingle(msg,handle,TEMPLATE_ID_EZM0321B010);

		// 結果の取得
		CAANMsg[] resultList1 = invokedResult.getCAANMsgList("EZM0321B010CBSMsg1List");
		getInMapWorkParamKnri(param, fixedText, resultList,resultList1);
	}

	
	/** 下りマッピング項目設定(EZM0321B010_業務パラメータ管理一覧照会）
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @throws RequestParameterException
	*/
	private void getInMapWorkParamKnri(
			IRequestParameterReadWrite param, String fixedText,List<HashMap<String, Object>> resultList,CAANMsg[] resultList1)
			throws RequestParameterException
	{
		for (CAANMsg msg : resultList1) {
			// ●結果分ループ（「EZM0321B010 業務パラメータ管理一覧照会」の業務パラメータ管理一覧照会明細件数分）
			HashMap<String, Object> childMap = new HashMap<String, Object>();

			if (!JFUBPCommon.isNull(msg.getString(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE)))
			{
				String setValue = msg.getString(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE);

				String[] setValAry = setValue.split(JFUStrConst.COMMA);
				// 業務パラメータ設定値数が不足している場合
				if (setValAry.length < SETTE_VALUE_WEB_KAHI)
				{
					continue;
				}
				// キャンペーン種類「2:商品券」は除く
				if (SETTE_VALUE_CAMPAIGN_KIND_SHOHINK.equals(setValAry[SETTE_VALUE_CAMPAIGN_KIND]))
				{
					continue;
				}

				// 業務パラメータID
				if (!JFUBPCommon.isNull(msg.getString(EZM0321B010CBSMsg1List.WORK_PARAM_ID)))
				{
					childMap.put(EZM0321B010CBSMsg1List.WORK_PARAM_ID, msg.getString(EZM0321B010CBSMsg1List.WORK_PARAM_ID));
				}
					else
				{
					childMap.put(EZM0321B010CBSMsg1List.WORK_PARAM_ID, JFUStrConst.EMPTY);
				}
				// 業務パラメータ設定値
				childMap.put(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE, msg
						.getString(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE));

				childMap.put(WRIB_SVC_CD, setValAry[SETTE_VALUE_WRIB_SVC_CD]);
				childMap.put(DSP_CAMPAIGN_CD, setValAry[SETTE_VALUE_DSP_CAMPAIGN_CD]);
				resultList.add(childMap);
			}
		}
	}

	/**
	 * サービスIFを単独で呼び出し、その結果を取得する。
	 * 
	 * @param parameter
	 *            サービスIFパラメータ
	 * @param handle セッションハンドル
	 * @return result 結果が格納されたCAANMsg
	 * @throws Throwable 
	 */
	private CAANMsg invokeSvcIFSingle(CAANMsg parameter, SessionHandle handle, String mapName) throws Throwable {
		
		ArrayList<CAANMsg> parameters = new ArrayList<CAANMsg>(DEFAULT_ARRAY_SIZE);

		parameters.add(parameter);
		ArrayList<CAANMsg> results = invokeSvcIFBulk(parameters, mapName,handle);
		CAANMsg result = results.get(0);
		return result;
	}
	
	/**
	 * サービスIFを一括して呼び出し、その結果を取得する。
	 * 
	 * @param msgList
	 *            サービスIFリスト
	 * @param mapName
	 *            SCマップ名
	 * @param handle セッションハンドル
	 * @return templateList 結果が格納されたリスト
	 * @throws Throwable 
	 */
	private ArrayList<CAANMsg> invokeSvcIFBulk(ArrayList<CAANMsg> msgList, String mapName, SessionHandle handle)
			throws Throwable {
		HashMap<String, Object> paramMap = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		CAANMsg[] msgs = msgList.toArray(new CAANMsg[0]);

		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, cmnParam.get()
				.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, cmnParam.get().getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, cmnParam.get()
				.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, cmnParam.get().getCallType());

		try {
			// **********************************************
			// 【取得元：ユーザエリア(コントロールマップ)】
			// **********************************************
			// 依頼先ホスト名
			paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
			// 依頼元IPアドレス
			paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
			// 依頼元画面ID
			paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.REQ_VIEWID));
			// オペレータID
			paramMap.put(JCMConstants.OPERATOR_ID_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		} catch (RequestParameterException e) {
			throw new RuntimeException(e);
		}

		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, msgs);

		// SC呼出実行
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> rsltMap = scCall.run(paramMap, handle);
		
		cmnParam.set(editResultRP(rsltMap, cmnParam.get(), mapName));

		// SCの返却したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		// 異常の場合、SCCallExceptionを生成してスローする
		checkExecutionResult(rsltMap);

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] results = (CAANMsg[]) rsltMap
				.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<CAANMsg> resultList = new ArrayList<CAANMsg>(Arrays
				.asList(results));

		return resultList;
	}
	
	
	/**
	 * 処理結果の判定
	 * 
	 * @param result
	 * @throws SCCallException 
	 */
	public void checkExecutionResult(Map<?, ?> result) throws SCCallException {
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		CAANMsg[] templates = (CAANMsg[]) result
				.get(JCMConstants.TEMPLATE_LIST_KEY);
		Integer status = templates[0].getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status.intValue())) {
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode,
					status);
			throw scCallEx;
		}
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param mapName (I) SCマップ名
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 * @since 2012.01.07
	 */
	public IRequestParameterReadWrite editResultRP(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapName) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapName);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapName, dataMap);
		}
        
        // エラー情報の設定
        param = editErrorInfo(param, templates, (Integer)return_code, mapName);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param
	 *            (I) 業務データ取得・書込用I/F
	 * @param templates
	 *            (I) CAANMsgクラス配列
	 * @param returnCode
	 *            (I) リターンコード
	 * @param mapName
	 *            (I) SCマップ名
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 * @since 2012.01.07
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode,
			String mapName)
	throws Throwable {
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EZM0321B010CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapName);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapName, inMap);
		}

		String svcIf = null;
		if (svcIf == null)
		{
			
		}
		else if (TEMPLATE_ID_EZM0321B010.equals(svcIf))
		{
			// 業務パラメータ管理一覧照会マップ.ＫＥＹ＿業務パラメータID → ＫＥＹ＿業務パラメータID のエラー情報返却
			if (!template.isNull(EZM0321B010CBSMsg.KEY_WORK_PARAM_ID_ERR)) {
				if (!inMap.containsKey("key_work_param_id")) {
					inMap.put("key_work_param_id", template.getString(EZM0321B010CBSMsg.KEY_WORK_PARAM_ID_ERR));
				}
			}
		}
		return param;
	}

	/**
	 * 【マスタ】割引サービス取得処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param workParamMap 業務パラメータ
	 * @param opeDate オンライン運用日付
	 * @throws Throwable 例外
	 *  
	 */
	private void getWribSvc(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, List<HashMap<String, Object>> resultList,
			HashMap<String, Object> workParamMap, String opeDate) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0841A010CBSMsg.class, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿割引サービスコード
		MsgEditer.set(msg, EKK0841A010CBSMsg.KEY_WRIB_SVC_CD, (String)workParamMap.get(WRIB_SVC_CD));
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, EKK0841A010CBSMsg.KEY_RSV_APLY_YMD, opeDate);

		// サービスIFの呼び出し
		CAANMsg invokedResult = invokeSvcIFSingle(msg,handle,TEMPLATE_ID_EKK0841A010);

		// 結果の取得
		CAANMsg[] resultList1 = invokedResult.getCAANMsgList(TEMPLATE_ID_EKK0841A010_DTL);
		getInMapWribSvc(param, fixedText, resultList,resultList1);
	}

	/** 下りマッピング項目設定(EKK0841A010_割引サービス一意照会）です
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param resultList 結果リスト
	* @throws RequestParameterException
	*/
	private void getInMapWribSvc(IRequestParameterReadWrite param, String fixedText, List<HashMap<String, Object>> resultList,CAANMsg[] resultList1)
			throws RequestParameterException
	{
		// ●結果分ループ（「EKK0841A010_割引サービス一意照会」割引サービス一意照会明細の件数分）
		if (resultList1 != null){
			for (CAANMsg msg : resultList1) 
			{
				HashMap<String, Object> childMap = new HashMap<String, Object>();

				// 表示用キャンペーンコード
				if (!JFUBPCommon.isNull(EKK0841A010CBSMsg1List.DSP_CAMPAIGN_CD))
				{
					childMap.put(EKK0841A010CBSMsg1List.DSP_CAMPAIGN_CD, msg.getString(EKK0841A010CBSMsg1List.DSP_CAMPAIGN_CD));
				}
				else
				{
					childMap.put(EKK0841A010CBSMsg1List.DSP_CAMPAIGN_CD, JFUStrConst.EMPTY);
				}
				// 割引サービス名
				if (!JFUBPCommon.isNull(EKK0841A010CBSMsg1List.WRIB_SVC_NM))
				{
					childMap.put(EKK0841A010CBSMsg1List.WRIB_SVC_NM, msg.getString(EKK0841A010CBSMsg1List.WRIB_SVC_NM));
				}
				else
				{
					childMap.put(WRIB_SVC_NM, JFUStrConst.EMPTY);
				}
				resultList.add(childMap);
			}
		}
	}

	/**
	 * List項目がnullか判定
	 * 
	 * <br>
	 * @param paramList
	 * @return true：null又は空
	 */
	private boolean isListEmpty(List<HashMap<String, Object>> paramList)
	{
		if (paramList == null || paramList.size() == 0)
		{
			return true;
		}
		return false;
	}

	/**
	 * 処理結果設定
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param result リターンコード
	 * @param wribMap 割引サービス情報
	 * @throws RequestParameterException 
	 */
	private void resultSet(IRequestParameterReadWrite param, String fixedText, String result, List<HashMap<String, Object>> wribMapList)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		String dsp_campaign_cd = JFUStrConst.EMPTY;
		String wrib_svc_nm = JFUStrConst.EMPTY;

		ArrayList childList_KKSV091004CC = null;
		childList_KKSV091004CC = new ArrayList<Map<String, String>>();
		
		
		if (wribMapList != null && wribMapList.size() > 0)
		{
			for(int i=0; i<wribMapList.size(); i++){
				Map<String, String> rslt = new HashMap<String, String>();
				
				dsp_campaign_cd = (String)wribMapList.get(i).get(DSP_CAMPAIGN_CD);
				wrib_svc_nm = (String)wribMapList.get(i).get(WRIB_SVC_NM);
				
				// OUT項目:表示用キャンペーンコード
				rslt.put(DSP_CAMPAIGN_CD, dsp_campaign_cd);
				// OUT項目:割引サービス名
				rslt.put(WRIB_SVC_NM, wrib_svc_nm);
				
				childList_KKSV091004CC.add(rslt);
			}
		}
		// OUT項目:処理結果
		inMap.put(RESULT, result);
		inMap.put(TEMPLATE_ID_EKK0841A010_DTL, childList_KKSV091004CC);
	}
}
