/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUTelOptMasterRnkCmpCC
*   ソースファイル名：JFUTelOptMasterRnkCmpCC.java
*   作成者          ：富士通
*   日付            ：2020年07月09日
*＜機能概要＞
*   電話オプション関連マスタ連携（CMP）コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*  v50.00.00    2020/07/09   FJ)張本     ANK-3862-00-00_【CMP】WEB電話オプション外出し対応
**********************************************************************/
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 java.util.Set;
import java.util.Map.Entry;

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.x01.sc.ErrorInfoMapKeys;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ECCM011B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECCM011B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg1List;

/**
 * 電話オプション関連マスタ連携（CMP）コモンコンポーネント部品
 * <br>
 * @author 富士通
 */
public class JFUTelOptMasterRnkCmpCC extends JFUBaseCC
{

	/** テンポラリテンプレート領域キー識別子 */
	private static final String TEMP_TEMPLATE_PRIFIX = "TEMP_TEMPLATE_";
	/** テンポラリテンプレート領域キー識別子区切文字 */
	private static final String TEMP_TEMPLATE_PRIFIX_SEP = "_";

	/** IN項目：スキーマID */
	private static final String IN_SCHMA_ID = "schma_id";
	/** IN項目：条件有無 */
	private static final String IN_WHERE_STAT = "where_stat";

	/** レスポンスキー 処理結果 */
	private static final String OUT_RESULT = "return_code";
	/** レスポンスキー マスタ値リスト */
	private static final String OUT_MASTER_VALUE_LIST = "master_value_list";
	/** レスポンスキー マスタ値 */
	private static final String OUT_MASTER_VALUE = "master_value";
	/** レスポンスキー レコード件数 */
	private static final String OUT_REC_CNT = "rec_cnt";

	//-------------------------------------------------------------------------------------------------//
	/* 【マスタ】■□ EZM0321B010_業務パラメータ管理一覧照会 ■□ */
	//-------------------------------------------------------------------------------------------------//
	/** テンプレートID(業務パラメータ管理一覧照会) */
	private static final String TEMPLATE_ID_EZM0321B010 = "EZM0321B010";
	/** テンプレートID(業務パラメータ管理一覧照会.明細) */
	private static final String TEMPLATE_ID_EZM0321B010_DTL = EZM0321B010CBSMsg.EZM0321B010CBSMSG1LIST;
	/** IN項目リスト(業務パラメータ管理一覧照会) */
	private static final List<String> IN_COLUMN_LIST_EZM0321B010 = Arrays.asList(EZM0321B010CBSMsg.KEY_WORK_PARAM_ID);
	/** 関連チェックエラー項目(業務パラメータ管理一覧照会) */
	private static final String ERROR_COLUMN_EZM0321B010 = EZM0321B010CBSMsg.KEY_WORK_PARAM_ID_ERR;
	/** SC実行結果取得キー(業務パラメータ管理一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_EZM0321B010_PREFIX = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EZM0321B010 + TEMP_TEMPLATE_PRIFIX_SEP;

	//-------------------------------------------------------------------------------------------------//
	/* 【マスタ】■□ ECCM011B010_マスタ一覧照会 ■□ */
	//-------------------------------------------------------------------------------------------------//
	/** テンプレートID(マスタ一覧照会) */
	private static final String TEMPLATE_ID_ECCM011B010 = "ECCM011B010";
	/** テンプレートID(マスタ一覧照会.明細) */
	private static final String TEMPLATE_ID_ECCM011B010_DTL = ECCM011B010CBSMsg.ECCM011B010CBSMSG1LIST;
	/** IN項目リスト(マスタ一覧照会) */
	private static final List<String> IN_COLUMN_LIST_ECCM011B010 =
			Arrays.asList(ECCM011B010CBSMsg.SCHIMA_ID, ECCM011B010CBSMsg.YOUKYU_COLUM_NO, ECCM011B010CBSMsg.CONDITION, ECCM011B010CBSMsg.SORT_COLUMN_CODE);
	/** 関連チェックエラー項目(マスタ一覧照会) */
	private static final String ERROR_COLUMN_ECCM011B010 = ECCM011B010CBSMsg.YOUKYU_COLUM_NO_ERR;
	/** SC実行結果取得キー(マスタ一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_ECCM011B010_PREFIX = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECCM011B010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/** 業務パラメータID取得対象項目識別子 */
	private static final String KEY_WORK_PARAM_SELECT = "FU_MASTRNK_S_";
	/** 業務パラメータID取得条件識別子 */
	private static final String KEY_WORK_PARAM_WHERE = "FU_MASTRNK_W_";
	/** 業務パラメータID取得順序識別子 */
	private static final String KEY_WORK_PARAM_ORDER = "FU_MASTRNK_O_";

	/** CCパラメータ：ボディ情報 */
	private static final String BODY_INFO = "BODY_INFO";
	/** CCパラメータ：エラー情報 */
	private static final String ERROR_INFO = "ERROR_INFO";
	/** CCパラメータ：エラーコード */
	private static final String ERROR_CODE = "errCode";
	/** CCパラメータ：エラーメッセージ */
	private static final String ERROR_MESSAGE = "errMessage";

	/** 属性チェック 半角英数字1 */
	private static final String ATTR_HANNKAKUESUUJI1 = "hannkakuesuuji1";

	/** APIエラーコード_1001：必須チェックエラー */
	private static final String RES_KEY_ERROR_CODE_1001 = "1001";
	/** APIエラーコード_1002：属性チェックエラー */
	private static final String RES_KEY_ERROR_CODE_1002 = "1002";
	/** APIエラーコード_1003：桁数チェックエラー */
	private static final String RES_KEY_ERROR_CODE_1003 = "1003";

	/** APIエラーコード_2001 */
	private static final String RES_KEY_ERROR_CODE_2001 = "2001";
	/** APIエラーコード_2002 */
	private static final String RES_KEY_ERROR_CODE_2002 = "2002";
	/** APIエラーコード_3001 */
	private static final String RES_KEY_ERROR_CODE_3001 = "3001";

	/** 処理結果 正常 */
	private static final String RESULT_OK = "0";
	/** 処理結果 エラー */
	private static final String RESULT_NG = "9";

	/** APIリターンコード_0000 正常終了 */
	private static final String RETURN_CD_0000 = "0000";
	/** APIリターンコード_5000_業務エラー */
	private static final String RETURN_CD_5000 = "5000";
	/** リターンメッセージ_業務エラー */
	private static final String RETURN_MESSAGE_API_ERROR = "業務エラー";

	/**
	 * 電話オプション関連マスタ連携コモンコンポーネント部品実行処理<br>
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite invoke(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 返却用ボディ
		Map<String, Object> bodyMap = new HashMap<String, Object>();

		inMap.put(BODY_INFO, bodyMap);
		// 処理結果
		bodyMap.put(OUT_RESULT, RESULT_NG);
		// レコード件数
		bodyMap.put(OUT_REC_CNT, "");
		// マスター値リスト
		bodyMap.put(OUT_MASTER_VALUE_LIST, new ArrayList<Map<String, Object>>());
		// エラーリスト
		inMap.put(ERROR_INFO, new ArrayList<Map<String, String>>());

		// 単項目チェック
		if (!checkUnitParam(inMap))
		{
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, RETURN_CD_5000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
			return param;
		}
		// 単関連チェック
		if (!checkKnrnParam(inMap))
		{
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, RETURN_CD_5000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
			return param;
		}

		try{

			String schmaId = (String)inMap.get(IN_SCHMA_ID);

			// ○EZM0321B010_業務パラメータ管理一覧照会
			// ユーザデータ初期化
			JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EZM0321B010);
			// 上りマッピング
			setInMapEZM0321B010(param, fixedText, inMap, KEY_WORK_PARAM_SELECT + schmaId);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EZM0321B010, TEMPLATE_ID_EZM0321B010_DTL, IN_COLUMN_LIST_EZM0321B010,
					ERROR_COLUMN_EZM0321B010);
			String columns = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EZM0321B010_PREFIX), TEMPLATE_ID_EZM0321B010_DTL, EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE, 0);

			// ○EZM0321B010_業務パラメータ管理一覧照会
			// ユーザデータ初期化
			JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EZM0321B010);
			// 上りマッピング
			setInMapEZM0321B010(param, fixedText, inMap, KEY_WORK_PARAM_ORDER + schmaId);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EZM0321B010, TEMPLATE_ID_EZM0321B010_DTL, IN_COLUMN_LIST_EZM0321B010,
					ERROR_COLUMN_EZM0321B010);
			String orders = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EZM0321B010_PREFIX), TEMPLATE_ID_EZM0321B010_DTL, EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE, 0);

			String conditions = null;
			if (JFUStrConst.CD00002_1.equals(inMap.get(IN_WHERE_STAT)))
			{
				// ○EZM0321B010_業務パラメータ管理一覧照会
				// ユーザデータ初期化
				JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EZM0321B010);
				// 上りマッピング
				setInMapEZM0321B010(param, fixedText, inMap, KEY_WORK_PARAM_WHERE + schmaId);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_EZM0321B010, TEMPLATE_ID_EZM0321B010_DTL, IN_COLUMN_LIST_EZM0321B010,
						ERROR_COLUMN_EZM0321B010);
				conditions =
						getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EZM0321B010_PREFIX), TEMPLATE_ID_EZM0321B010_DTL,
								EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE, 0);
			}

			// ○ECCM011B010_マスタ一覧照会
			// ユーザデータ初期化
			JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_ECCM011B010);
			// 上りマッピング
			setInMapECCM011B010(param, fixedText, inMap, schmaId, columns, conditions, orders);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ECCM011B010, TEMPLATE_ID_ECCM011B010_DTL, IN_COLUMN_LIST_ECCM011B010,
					ERROR_COLUMN_ECCM011B010);
			List<HashMap> masterList =
					getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECCM011B010_PREFIX), TEMPLATE_ID_ECCM011B010_DTL);

			// 返却用マスター値リスト
			ArrayList<Map<String, Object>> mstValList = new ArrayList<Map<String, Object>>();
			// サービスIF実行結果チェック
			for (HashMap masterMap : masterList)
			{
				// マスター値設定
				Map<String, Object> recMap = new HashMap<String, Object>();
				recMap.put(OUT_MASTER_VALUE, masterMap.get(ECCM011B010CBSMsg1List.RECORD));
				// マスター値リストに設定
				mstValList.add(recMap);
			}

			// レコード件数
			bodyMap.put(OUT_REC_CNT, mstValList.size());
			// マスター値リスト
			bodyMap.put(OUT_MASTER_VALUE_LIST, mstValList);
			// 処理結果
			bodyMap.put(OUT_RESULT, RESULT_OK);

			// 正常終了
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, RETURN_CD_0000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);

		}
		// サービスインターフェース呼び出しでエラーが発生した場合
		catch (CCException ccEx)
		{
			inMap.put(ERROR_INFO, getApiErrInfList(RES_KEY_ERROR_CODE_2002, "取得項目が設定されていません。"));
			// システムエラーを設定する
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, RETURN_CD_5000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, RETURN_MESSAGE_API_ERROR);
		}
		// SQL実行でエラーが発生した場合
		catch (SCCallException sccEx)
		{
			inMap.put(ERROR_INFO, getApiErrInfList(RES_KEY_ERROR_CODE_3001, sccEx.getMessage()));
			// システムエラーを設定する
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, RETURN_CD_5000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, RETURN_MESSAGE_API_ERROR);
		}

		return param;
	}

	/** 
	* 上りマッピング項目設定(EZM0321B010_業務パラメータ管理一覧照会）です
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param workParamId 業務パラメータID
	* @throws RequestParameterException
	*/
	private void setInMapEZM0321B010(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> inMap, String workParamId) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿業務パラメータID
		inMap.put(EZM0321B010CBSMsg.KEY_WORK_PARAM_ID, workParamId);
	}

	/** 
	* 上りマッピング項目設定(ECCM011B010_マスタ一覧照会）です
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param shemaId スキーマID
	* @throws RequestParameterException
	*/
	private void setInMapECCM011B010(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> inMap, String shemaId,
			String columnNo, String condition, String sortColCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿スキーマID
		inMap.put(ECCM011B010CBSMsg.SCHIMA_ID, shemaId);
		// ＫＥＹ＿要求カラムNO
		inMap.put(ECCM011B010CBSMsg.YOUKYU_COLUM_NO, columnNo);
		// ＫＥＹ＿条件
		inMap.put(ECCM011B010CBSMsg.CONDITION, condition);

		if (!JFUBPCommon.isNull(sortColCd))
		{
			// 整列カラムコード
			inMap.put(ECCM011B010CBSMsg.SORT_COLUMN_CODE, Long.parseLong(sortColCd));
		}
	}

	/**
	 * 単項目チェック
	 * 
	 * @param ccMsg
	 * @return チェックの判定
	 * @throws Exception
	 */
	private boolean checkUnitParam(Map<String, Object> ccMsg) throws Exception
	{
		HashMap<String, String> checkUnitParamMap = new HashMap<String, String>();
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();

		// ===========================================================================
		// 単項目チェック
		// ===========================================================================
		checkUnitParamMap.put(IN_SCHMA_ID, "hannkakuesuuji1:1,100");
		checkUnitParamMap.put(IN_WHERE_STAT, "hannkakuesuuji1:1,1");

		checkUnitParam(errList, ccMsg, checkUnitParamMap, true);

		// エラーが存在する場合
		if (errList.size() > 0)
		{
			ccMsg.put(ERROR_INFO, errList);
			return false;
		}

		return true;
	}

	/**
	 * 単項目チェック
	 *
	 * @param errorList
	 * @param ccMsg
	 * @param itemInfoMap
	 * @param isReqChk
	 * @throws Exception
	 */
	private void checkUnitParam(List<Map<String, String>> errorList, Map<String, Object> ccMsg, HashMap<String, String> itemInfoMap, boolean isReqChk) throws Exception
	{
		Set<Entry<String, String>> itemInfoMapEntrySet = itemInfoMap.entrySet();

		for (Entry<String, String> entry : itemInfoMapEntrySet)
		{
			// チェック情報をチェックパターンと桁数値に分割
			String itemCkeckInfo = entry.getValue();
			String[] itemCkeckInfoArray = itemCkeckInfo.split(JFUStrConst.HALF_COLON);

			String itemCkeckPattern = null;
			int itemCkeckLenMin = 0;
			int itemCkeckLenMax = 0;

			if (itemCkeckInfoArray != null && itemCkeckInfoArray.length == 2)
			{
				// チェックパターン
				itemCkeckPattern = itemCkeckInfoArray[0];

				// 桁数値を最小値と最大値に分割
				String[] itemCkeckLenArray = itemCkeckInfoArray[1].split(JFUStrConst.COMMA);
				if (itemCkeckLenArray != null && itemCkeckLenArray.length == 2)
				{
					// 桁数：最小値を取得。
					itemCkeckLenMin = Integer.parseInt(itemCkeckLenArray[0]);
					// 桁数：最大値を取得。
					itemCkeckLenMax = Integer.parseInt(itemCkeckLenArray[1]);
				}
			}

			// 必須チェック
			if (JFUBPCommon.isNull(ccMsg.get(entry.getKey())))
			{
				if (isReqChk)
				{
					// 必須チェックエラー
					errorList.add(getItemErrInfMap(ccMsg, entry.getKey(), RES_KEY_ERROR_CODE_1001));
				}
			}
			else if (itemCkeckPattern != null)
			{
				// 項目値
				String itemName = entry.getKey();
				String itemValue = (String)ccMsg.get(itemName);

				// 属性チェック
				// 各チェックパターンによりチェックを行う
				if (ATTR_HANNKAKUESUUJI1.equals(itemCkeckPattern) && !HalfCharCheck.isEnNumber1Check(itemValue))
				{
					// 属性チェックエラー半角英数字1
					errorList.add(getItemErrInfMap(ccMsg, itemName, RES_KEY_ERROR_CODE_1002));
				}

				// 桁数チェック
				if (itemCkeckLenMax != 0 && !LengthCheck.isLength2Check(itemValue, itemCkeckLenMin, itemCkeckLenMax))
				{
					// 桁数チェックエラー
					errorList.add(getItemErrInfMap(ccMsg, itemName, RES_KEY_ERROR_CODE_1003));
				}
			}
		}
	}


	/**
	 * 単関連チェック
	 * 
	 * @param ccMsg
	 * @return チェックの判定
	 * @throws Exception
	 */
	private boolean checkKnrnParam(Map<String, Object> ccMsg) throws Exception
	{
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();

		// ===========================================================================
		// 単関連チェック（オプションパックリスト）
		// ===========================================================================
		if (!JFUStrConst.CD00001_0.equals(ccMsg.get(IN_WHERE_STAT)) &&
				!JFUStrConst.CD00001_1.equals(ccMsg.get(IN_WHERE_STAT)))
		{
			errList.add(getItemErrInfMap(ccMsg, IN_WHERE_STAT, RES_KEY_ERROR_CODE_2001));
		}

		// エラーが存在する場合
		if (errList.size() > 0)
		{
			ccMsg.put(ERROR_INFO, errList);
			return false;
		}

		return true;
	}

	/**
	 * 単項目チェックの必須エラーマップ作成メソッドです。
	 * 
	 * @param dataMap
	 *            データマップ
	 * @param itemName
	 *            項目名
	 * @param errCode
	 *            エラーコード
	 * @return Map<String, String>
	 */
	@SuppressWarnings("unchecked")
	private Map<String, String> getItemErrInfMap(Map dataMap, String itemName, String errCode)
	{
		Map<String, String> returnMap = new HashMap<String, String>();

		// エラーメッセージ設定
		String errMessage = itemName + JFUStrConst.HALF_COLON + JFUBPCommon.nvl((String)dataMap.get(itemName), "");

		returnMap.put(ERROR_CODE, errCode);
		returnMap.put(ERROR_MESSAGE, errMessage);

		return returnMap;
	}

	/**
	 * 業務エラーのエラーマップ作成メソッドです。
	 * 
	 * @param errCode
	 *            エラーコード
	 * @param errMessage
	 *            エラーメッセージ
	 * @return
	 */
	private List<Map<String, String>> getApiErrInfList(String errCode, String errMessage)
	{
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();

		Map<String, String> returnMap = new HashMap<String, String>();

		returnMap.put(ERROR_CODE, errCode);
		returnMap.put(ERROR_MESSAGE, errMessage);

		errList.add(returnMap);

		return errList;
	}

//	/**
//	 * 項目エラー判定。<br />
//	 * <pre>指定された項目のエラー情報がリクエストパラメータに存在するかどうかを調べる。</pre>
//	 * @param param リクエストパラメータ
//	 * @param errFieldName エラーフィールド名 例) sysid_err
//	 * @return true:エラーあり、false:エラーなし
//	 * @throws RequestParameterException
//	 */
//	@SuppressWarnings("unchecked")
//	private static boolean isErrorField(IRequestParameterReadWrite param, String errFieldName) throws RequestParameterException
//	{
//		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
//		for (Object errObj : errList)
//		{
//			Map errorInfoMap = (Map)errObj;
//			Map itemCheckErrorMap = (Map)errorInfoMap.get(ErrorInfoMapKeys.ITEM_CHECK_ERRORS);
//
//			if (itemCheckErrorMap.containsKey(errFieldName)){
//				return true;
//			}
//		}
//		return false;
//	}

	/**
	 * 項目エラー設定。<br />
	 * <pre>指定された項目のエラー情報を設定する。</pre>
	 * @param param リクエストパラメータ
	 * @param errFieldName エラーフィールド名 例) sysid_err
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unused")
	private static void setErrorField(IRequestParameterReadWrite param, String errFieldName) throws RequestParameterException
	{
		// コントロールマップに設定
		ArrayList<Object> errorInfoArray = new ArrayList<Object>();
		HashMap<String, Object> errorMap = new HashMap<String, Object>();
		HashMap<String, String> errorMapChild = new HashMap<String, String>();
		errorMapChild.put(errFieldName, "EA");
		errorMap.put(ErrorInfoMapKeys.ITEM_CHECK_ERRORS, errorMapChild);
		errorInfoArray.add(errorMap);
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, errorInfoArray);
	}

//	/**
//	 * デバッグ出力処理です。
//	 *
//	 * <br>
//	 * @param obj 出力内容
//	 */
//	private void outDebugLog(Object obj)
//	{
//		// デバッグ出力
//		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), obj, null, null, null);
//	}

	/**
	 * チェック処理（共通処理）です。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@Override
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

}

