/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JFUFUSV012718ReqChk
*	ソースファイル名：JFUFUSV012718ReqChk.java
*	作成者			：FJ
*	日付			：2016年04月13日
*＜機能概要＞
*	STB追加情報登録実行判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v25.00      2016/04/13  FJ）岡井    【ANK-2530-00-00】ＴＶ新コースおよびＶＯＤ導入
*   v25.00      2016/07/06  FJ) 岡井    【OM-2016-0001732】VOD異動予約登録不具合
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.x21.bpm.common.AbstractCustomReqChk;
import com.fujitsu.futurity.bp.x21.bpm.common.IConditionValue;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.reqchk.exception.ReqChkException;

import eo.common.constant.JFUStrConst;

/**
 * STB追加情報登録実行判定部品です。
 * <BR>
 * @author 富士通
 */
public class JFUFUSV012718ReqChk extends AbstractCustomReqChk
{
	/** FUSV012711CC */
	private static final String FUSV012711CC = "FUSV012711CC";
	/** func_code */
	private static final String FUNC_CODE = "func_code";
	/** cclist_stb_mskm_list */
	private static final String CCLIST_STB_MSKM_LIST = "cclist_stb_mskm_list";
	/** bspt_mskm_flg */
	private static final String BSPT_MSKM_FLG = "bspt_mskm_flg";

	/**
	 * STB追加情報登録実行判定部品です。
	 * <BR>
	 * STB追加情報登録の実行判定をします。
	 * <BR>
	 * @param  irp  リクエストパラメータ
	 * @param  conditionvalue  判定値格納クラス
	 * @return true:実行する / false:実行しない
	 * @throws ReqChkException
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException
	{
		// 判定結果格納
		Boolean result = true;

		try
		{
			// BP定義ツールでセットしている値の取得
			String key = conditionvalue.get(null);
			// 実行判定用マップ取得
			HashMap parentMap = (HashMap)irp.getData(FUSV012711CC);

			if (parentMap == null || parentMap.size() == 0)
			{
				// STB追加情報が設定されていない場合、実行しない
				return false;
			}

			// STB追加リストを取得
			ArrayList list = (ArrayList)parentMap.get(CCLIST_STB_MSKM_LIST);
			// BSパススルー申込フラグを取得
			String bsptFlg = (String)parentMap.get(BSPT_MSKM_FLG);
			// 機能コードを取得
			String funcCd = (String)parentMap.get(FUNC_CODE);

			// STB追加リストが設定されている
			// または、BSパススルーを申し込む
			if ((list.size() > 0 || JFUStrConst.CD00002_1.equals(bsptFlg)) && key.equals(funcCd))
			{
				// 判定結果を設定
				result = true;
			}
		}
		catch (RequestParameterException e)
		{
			return false;
		}

		return result;
	}
}
