/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUFUSV017002ReqChk
*   ソースファイル名：JFUFUSV017002ReqChk.java
*   作成者          ：富士通
*   日付            ：2011年11月14日
*＜機能概要＞
*   ガイド誌後続SC実行判定部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/11/14   FJ）西川    新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.common.JFUBPCommon;
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;

/**
 * ガイド誌後続SC実行判定部品
 * <br>
 * @author 富士通
 */
public class JFUFUSV017002ReqChk extends AbstractCustomReqChk
{

	/**
	 * 実行判定クラス判定処理
	 * <br/>
	 * @param	irp				(I)リクエストパラメータ操作クラス
	 * @param	conditionvalue	(I)判定値格納クラス
	 * @return	条件を満たすときはtrue、満たさないときはfalse
	 * @throws	ReqChkException
	 */
	@Override
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException
	{
		
		HashMap<String , Object> parentMap1 				= null;		// SCマップ1
		ArrayList<HashMap<String, Object>> childDataList1 	= null;		// 明細リスト1
		HashMap<String , Object> childMap 					= null;		// 明細リストの要素マップ

		HashMap<String , Object> parentMap2 				= null;		// SCマップ2
		ArrayList<HashMap<String, Object>> childDataList2 	= null;		// 明細リスト2

		String op_svc_kei_stat = null;									// オプションサービス契約ステータス

		boolean jdgEKK0351B510CBSMsg1List = true;
		boolean jdgEKK1681B501CBSMsg1List = true;

		try
		{
			// SCマップから必要な情報を取り出す
			//-------------------------------------------------------------------
			// オプションサービス契約＜TV＞一覧照会（ガイド誌）マップ
			//-------------------------------------------------------------------
			//（オプションサービス契約＜TV＞一覧照会（ガイド誌）一覧照会明細）
			parentMap1 = (HashMap<String , Object>)irp.getData("FUSV017001SC");
			childDataList1 = (ArrayList<HashMap<String, Object>>)parentMap1.get("EKK0351B510CBSMsg1List");
			
			//-------------------------------------------------------------------
			// 異動予約一覧照会（オプション解約予定）マップ
			//-------------------------------------------------------------------
			//（異動予約一覧照会（オプション解約予定）一覧照会明細）
			parentMap2 = (HashMap<String , Object>)irp.getData("FUSV017002SC");
			childDataList2 = (ArrayList<HashMap<String, Object>>)parentMap2.get("EKK1681B501CBSMsg1List");

		}
		catch (RequestParameterException e) 
		{
			throw new ReqChkException(e.getMessage(), e);
		}
		
		//-------------------------------------------------------------------
		// 判定処理
		//-------------------------------------------------------------------
		// FUSV017001SC.EKK0351B510CBSMsg1Listが2件以上
		if ((null != childDataList1) && (2 <= childDataList1.size()))
		{
			jdgEKK0351B510CBSMsg1List = false;
		}
		// FUSV017001SC.EKK0351B510CBSMsg1Listが1件
		else if ((null != childDataList1) && (0 < childDataList1.size()))
		{
			
			// オプションサービス契約ステータス
			childMap = childDataList1.get(0);
			op_svc_kei_stat = JFUBPCommon.trim((String)childMap.get("op_svc_kei_stat"));
			
			if (!JFUBPCommon.isNull(op_svc_kei_stat) && !JFUStrConst.CD00037_100.equals(op_svc_kei_stat))
			{
				// "100"(サービス提供中)でない場合
				jdgEKK0351B510CBSMsg1List = false;
			}
		}
		
		// FUSV017002SC.EKK1681B501CBSMsg1Listが0件でない場合
		if ((null != childDataList2) && (0 < childDataList2.size()))
		{
			jdgEKK1681B501CBSMsg1List = false;
		}
		
		return jdgEKK0351B510CBSMsg1List && jdgEKK1681B501CBSMsg1List;
	}

}
