/**
 * 
 */
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;


/**
 * KKSV0022 固定グローバルＩＰアドレス情報登録初期表示<br>
 * KKSV002204SC 固定ＩＰアドレス一覧照会<br>
 * <br>
 * サービス契約の料金コースより検索条件を判定します
 * 
 * @author 富士通
 * @since 2011-08-11
 */
public class JKKSV002204ReqChk extends AbstractCustomReqChk {

	
	/** 固定ＩＰ取得種別コードのキー名称 */
	private static final String KEY_KOTEI_IP_STKU_SBT = "key_kotei_ip_stku_sbt_cd";


	/** 料金コースのキー名称 */
	private static final String PCRS_CD = "pcrs_cd";
	

	/**
	 * 固定ＩＰアドレス一覧照会ＳＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		boolean ret = false;

		try 
		{
			String pcrs_cd = null;		//料金コースコード

			//サービス契約一意照会結果明細リストのマップ
			HashMap<String, Object> kk0081Map = (HashMap<String, Object>)arg0.getData("KKSV002201SC");
			if (kk0081Map != null && kk0081Map.containsKey("EKK0081A010CBSMsg1List"))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = 
					(ArrayList<HashMap<String, Object>>)kk0081Map.get("EKK0081A010CBSMsg1List");
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(0);
				if (childMap != null)
				{
					//料金コースコードを取得
					pcrs_cd = (String)childMap.get(PCRS_CD);
				}
			}

			//実行判定
			if (pcrs_cd != null && !"".equals(pcrs_cd))
			{
				ret = true;		//OK
				
				String key_kotei_ip_stku_sbt = null;

				//固定ＩＰ取得種別コードの設定
				if ("A03".equals(pcrs_cd) ||	//100Ｍコース
					"A04".equals(pcrs_cd) ||	//100Ｍプレミアムコース
					"A06".equals(pcrs_cd) ||	//100Ｍコース（ＶＰＮ）
					"A08".equals(pcrs_cd) ||	//メゾンタイプ100Ｍ
					"A09".equals(pcrs_cd))		//メゾンタイプ100Ｍプレミアム
				{
					key_kotei_ip_stku_sbt = "2";		//  2 メガファイバー
				}
				else if ("A05".equals(pcrs_cd) ||	//1ギガコース
						  "A07".equals(pcrs_cd) ||	//200Ｍコース
						  "A10".equals(pcrs_cd) ||	//メゾンタイプ1ギガ
						  "A11".equals(pcrs_cd))	//メゾンタイプ200Ｍ
				{
					key_kotei_ip_stku_sbt = "4";		//  4 １Ｇ
				}
				else
				{
					key_kotei_ip_stku_sbt = "1";		//  1 ＶＲ識別なし
				}

				//固定ＩＰアドレス一覧照会用キーの固定ＩＰ取得種別コードを設定
				HashMap<String, Object> zm0101Map = (HashMap<String, Object>)arg0.getData("KKSV002204SC");
				zm0101Map.remove(KEY_KOTEI_IP_STKU_SBT);
				zm0101Map.put(KEY_KOTEI_IP_STKU_SBT, key_kotei_ip_stku_sbt);
			}
		}
		catch (RequestParameterException e) 
		{
			/*NOP*/ ;
		}

		return ret;
	}

}
