/**
 * 
 */
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>
 * KKSV002205SC 固定ＩＰアドレス一意照会<br>
 * <br>
 * 直前の固定ＩＰアドレス一覧照会結果から１件抽出します
 * 
 * @author 富士通
 * @since 2011-08-11
 */
public class JKKSV002205ReqChk extends AbstractCustomReqChk {

	
	/** 固定ＩＰアドレスのキー名称 */
	private static final String KOTEI_IP_AD = "kotei_ip_ad";



	/**
	 * 固定ＩＰアドレス一意照会ＳＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		boolean ret = false;

		try 
		{
			String ipAddress = null;		//固定ＩＰアドレス

			//作業項目リストのマップ
			HashMap dataMap = null;
			HashMap<Object, Object> workMap = (HashMap<Object, Object>)arg0.getMappingWorkArea();
			if (workMap != null)
			{
				dataMap = (HashMap) workMap.get("WORK");
			}
			if (dataMap != null && dataMap.containsKey("EZM0101B010CBSMsg1List"))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = 
					(ArrayList<HashMap<String, Object>>)dataMap.get("EZM0101B010CBSMsg1List");
				for (int i = 0; i < childList.size(); i ++)
				{
					HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(i);
					if (childMap != null)
					{
						//固定ＩＰアドレスを取得
						ipAddress = (String)childMap.get(KOTEI_IP_AD);
						
						break;
					}
				}
			}

			//実行判定
			if (ipAddress != null)
			{
				ret = true;		//OK
				
				//固定ＩＰアドレス一意照会用キーの固定ＩＰアドレスを設定
				dataMap.remove(KOTEI_IP_AD);
				dataMap.put(KOTEI_IP_AD, ipAddress);
			}
		}
		catch (RequestParameterException e) 
		{
			/*NOP*/ ;
		}

		return ret;
	}

}
