/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JFUWorkParamChk
 *   ソースファイル名：JFUWorkParamChk.java
 *   作成者          ：富士通
 *   日付            ：2018年08月29日
 *＜機能概要＞
 *   業務パラメータチェック部品です（View）。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v39.00.00   2018/08/29   FJ）美濃原    【ANK-3488-00-00】４KSTB（ACASチップ）導入対応
 *   
**********************************************************************/
package eo.web.webview.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.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SWebLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;

/**
 * 業務パラメータチェック部品です。
 * <br>
 * @author 富士通
 */
public class JFUWorkParamChk
{

	/**  業務パラメータチェック部品マップキー名（JFUWorkParamKnriCC.getWorkParamKnri） */
	private static final String CC_TITLE_FUSV032401 = "FUSV032401CC";

	/** サービスID */
	private static final String SVC_ID_FUSV0324 = "FUSV0324";

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** INPUT：業務パラメータID */
	private static final String IN_WORK_PARAM_ID = "key_work_param_id";
	/** OUTPUT:業務パラメータ設定値 */
	private static final String SETTE_VALUE = "work_param_sette_value";

	/**
	/**
	 * 業務パラメータ取得を行います。
	 * 
	 * <br>
	 * @param bl 実行中のVIEWロジックインスタンス
	 * @param key_work_param_id ＫＥＹ＿業務パラメータID
	 * @return 戻り値 カンマ区切りの項目をリスト型で返却。有効期間考慮。
	 */
	public List<String> getWorkParamSplit(X31BWebBusinessLogic bl, String key_work_param_id)
	{
		X31SWebLog.DEBUG_LOG.debug("■■■■■☆☆☆ JFUWorkParamChk(getWorkParamSplit) 処理実行開始！☆☆☆■■■■■");
		List<String> resultList = new ArrayList<String>();
		try
		{
			String rtnValue = callWorkParamKnri(bl, key_work_param_id);

			if (!JFUStrConst.EMPTY.equals(rtnValue))
			{
				String[] wRtnStr = rtnValue.split(JFUStrConst.COMMA, 0);
				resultList = Arrays.asList(wRtnStr);
			}
			X31SWebLog.DEBUG_LOG.debug("■■■■■☆☆☆ JFUWorkParamChk(getWorkParamSplit) 処理実行終了！☆☆☆■■■■■");
		}
		catch (JCCWebServiceException jwse)
		{
			// 上記以外はシステムエラー
			X31SWebLog.DEBUG_LOG.debug(" JFUWorkParamChk(getWorkParamSplit) 【システムエラー】");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
		return resultList;
	}

	/**
	 * 業務パラメータ管理スキーマの情報取得サービスを呼び出します。
	 * <br>
	 * @param bl 実行中のVIEWロジックインスタンス
	 * @param key_work_param_id ＫＥＹ＿業務パラメータID
	 * @param 戻り値
	 */
	@SuppressWarnings("unchecked")
	private String callWorkParamKnri(X31BWebBusinessLogic bl, String key_work_param_id)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 機能コード
		parentMap.put(FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		// ■ＫＥＹ＿業務パラメータID
		parentMap.put(IN_WORK_PARAM_ID, key_work_param_id);

		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<Object, Object> outputMap = new HashMap<Object, Object>();

		inputMap.put(CC_TITLE_FUSV032401, parentMap);

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_FUSV0324);

		// サービス呼び出し
		bl.invokeService(paramMap, inputMap, outputMap);

		HashMap resultMap = (HashMap)outputMap.get(CC_TITLE_FUSV032401);
		String result = (String)resultMap.get(SETTE_VALUE);
		return result;
	}

}
