/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCHCHSV002705ReqChk
*   ソースファイル名：JCHCHSV002705ReqChk.java
*   作成者          ：富士通
*   日付            ：2015年06月12日
*＜機能概要＞
*   請求内訳一覧照会SC実行判定部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v16.00.00   2015/06/12   FJ）西面    【ANK-2480-00-00】 新電力対応
*
**********************************************************************/
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.JACStrConst;

/**
 * 料金項目出力名称一覧照会SCの実行条件を判定する独自部品です。<p>
 * <BR>
 * @author 富士通
 */
public class JCHCHSV002705ReqChk extends AbstractCustomReqChk {

	
	@Override
	/**
	 * 実行条件を判定します。
	 * <br>
	 * @param irp リクエストパラメータ操作クラス
	 * @param conditionvalue 判定値格納クラス
	 * @return 判定結果
	 * @throws ReqChkException 
	 */
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException 
	{
		boolean isExec = true;

		HashMap dataMap = null;
		
		try
		{
			dataMap = (HashMap)irp.getData("CHSV002705SC");
		}
		catch (RequestParameterException ex)
		{
			throw new ReqChkException(ex.getMessage(), ex);
		}

		// dataMapが取得できないまたは、空白を選択時を考慮
		if (dataMap ==null || isNullBlank((String)dataMap.get("key_svc_kei_no")))
		{
			isExec = false;
		}
		
		
		//実行対象の場合のみ電気契約か否かの判定を行う。
		if(isExec == true){
		
			isExec = isDenki(irp);
		
		}

		return isExec;
	}
	
	
	/**
	 * eo電気サービス対象か否かの判定を行う
	 * @param リクエストパラメータ操作クラス
	 * @return true（eo電気） false(それ以外)
	 * @throws ReqChkException 
	 */
	public static boolean isDenki(IRequestParameterReadOnly irp) throws ReqChkException
	{

		//サービス契約情報格納用マップ
		HashMap svcMap = null;
		//料金グループ格納用
		String prcGrpCd = null;
		
		//料金グループコードを取得するため、サービス契約マップを取得する
		try
		{
			svcMap = (HashMap)irp.getData("CHSV002701SC");
		}
		catch (RequestParameterException ex)
		{
			throw new ReqChkException(ex.getMessage(), ex);
		}
		
		//サービス契約マップが存在しない場合 falseを返却する
		if(svcMap == null){
			
			return false;
		}
		
		//サービス契約情報リストを取得する
		ArrayList svcList  = (ArrayList)svcMap.get("EKK0081B511CBSMsg1List");
		
		//サービス契約リストがnullでない時のみリストより料金グループコードを取得する
		if(svcList != null){
			
		
			//サービス契約リストが空でない場合、料金グループコードを取得
			if(!svcList.isEmpty())
			{
				//サービス契約リストより、サービス契約マップを取得する
				HashMap childMap = (HashMap)svcList.get(0);
				
				if (childMap != null)
				{
					//サービス契約マップより料金グループコードを取得する
					prcGrpCd = (String)childMap.get("prc_grp_cd");
					
					//料金グループコードが17(eo電気）の場合 trueを返却する
					if(JACStrConst.PRC_GRP_CD_DENKI.equals(prcGrpCd)){
					
						return true;
					}

				}
				

			}
		
		}
		
		return false;
	}
	/**
	 * null又は空文字の場合、trueを返却する
	 * 
	 * @param str 検査対象文字列
	 * @return true:null、又は空文字／false:左記以外
	 */
	public static boolean isNullBlank(String str)
	{
		if (str == null || "".equals(str))
		{
			return true;
		}
		return false;
	}
}

