/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUSV0178ReqChk
*   ソースファイル名：JFUSV0178ReqChk.java
*   作成者          ：富士通
*   日付            ：2011年10月27日
*＜機能概要＞
*   実行判定部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/27   FJ）赤井    新規作成
*
**********************************************************************/
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;

/**
 * FUSV0184SCの実行条件判定クラス
 * 
 * <br>
 * @author 富士通
 */
public class JFUSV018401ReqChk extends AbstractCustomReqChk 
{
	
	/**
	 * サービスIFの実行判定を実施する。
	 * @param irp
	 * @param conditionvalue
	 * @return 判定結果(条件を満たすtrue/満たさないfalse)
	 * @throws ReqChkException
	 */
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException 
	{
		boolean ret = true;
		try
		{
			// BP定義ツールでセットしている値の取得
			String key = conditionvalue.get(null);
			
			// SCマップ格納用
			HashMap fusv018401scMap = null;
			HashMap fusv018405scMap = null;
			
			// SYSID
			String sysid = "";
			// 申込番号
			String mskmNo = "";
			// 申込明細番号
			String mskmDtlNo = "";
			
			fusv018401scMap = (HashMap)irp.getData("FUSV018401SC");
			ArrayList childList = (ArrayList)fusv018401scMap.get("EKK0021B501CBSMsg1List");

			// FUSV018401SCの検索結果が0件の場合falseを返却
			if (childList == null || childList.size() == 0)
			{
				ret = false;
			}
			else
			{
				HashMap childMap = (HashMap)childList.get(0);
				sysid = (String)childMap.get("sysid");
				mskmNo = (String)childMap.get("mskm_no");
				mskmDtlNo = (String)childMap.get("mskm_dtl_no");
				
				// コードが"sysid"で、SYSIDが取得できなかった場合、falseを返却
				if ("sysid".equals(key) && (sysid == null || "".equals(sysid)))
				{
					ret = false;
				} 
				else if ("mskm_no".equals(key) && (mskmNo == null || "".equals(mskmNo))) 
				{
					// コードが"mskm_no"で、申込番号が取得できなかった場合、falseを返却
					ret = false;
				} 
				else if ("mskm_dtl_no".equals(key) && (mskmDtlNo == null || "".equals(mskmDtlNo))) 
				{
					// コードが"mskm_dtl_no"で、申込明細番号が取得できなかった場合、falseを返却
					ret = false;
				} 
				else if ("FUSV018406SC".equals(key))
				{
					// FUSV018406SC実行判定
					fusv018405scMap = (HashMap)irp.getData("FUSV018405SC");
					ArrayList childList2 = (ArrayList)fusv018405scMap.get("EKK0251B002CBSMsg1List");
					
					// FUSV018405SCの検索結果が0件の場合falseを返却
					if (childList2 == null || childList2.size() == 0)
					{
						ret = false;
					}
					else
					{
						HashMap childMap2 = (HashMap)childList2.get(0);
						String svcKeiKaisenUcwkNo = (String)childMap2.get("svc_kei_kaisen_ucwk_no");
						// 申込明細番号またはサービス契約回線内訳番号が取得できなかった場合はfalseを返却
						if (mskmDtlNo == null || "".equals(mskmDtlNo) || svcKeiKaisenUcwkNo == null || "".equals(svcKeiKaisenUcwkNo))
						{
							ret = false;
						}
					}
				}
			}
		}
		catch (RequestParameterException e)
		{
			throw new ReqChkException(e.getMessage(), e);
		}

		return ret;
	}

}
