/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JFUSV018901ReqChk
 *   ソースファイル名：JFUSV018901ReqChk.java
 *   作成者          ：富士通
 *   日付            ：2011年11月21日
 *＜機能概要＞
 *   実行判定部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   
 *
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

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.parameter.RequestParameter;
import com.fujitsu.futurity.bp.x21.bpm.reqchk.exception.ReqChkException;

/**
 * 実行判定部品 <BR>
 * 
 * @author FJ
 * 
 */
public class JFUSV020603ReqChk extends AbstractCustomReqChk {

	/**
	 * 同番移転可否確認(住所)実行判定部品 <BR>
	 * 住所コードの件数を判定する。 <BR>
	 * 
	 * @param irp
	 *            リクエストパラメータ
	 * @param conditionvalue
	 *            判定値格納クラス
	 * @return 設定されている場合True
	 * @throws ReqChkException
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException {
		try {
			// SCマップから必要な情報を取り出す
			HashMap<String, Object> parentMap02 = (HashMap<String, Object>) irp
					.getData("FUSV020602SC");
			ArrayList list = (ArrayList) parentMap02
					.get("EZM0081B020CBSMsg1List");
			int ad_cd_cnt = list.size();

			// 03SCで使用する予定の住所コードを取得する。
			HashMap<String, Object> parentMap03 = (HashMap<String, Object>) irp
					.getData("FUSV020603SC");
			String ad_cd = (String) parentMap03.get("key_ad_cd");
			if (ad_cd == null) {
				ad_cd = "";
			}

			// 03で使用する住所コードが今回の検索結果一覧に存在する場合は選択済みとして判定
			// 検索を実施する。
			for (int i = 0; i < ad_cd_cnt; i++) {
				HashMap<String, String> temp = (HashMap) list.get(i);
				if (ad_cd.equals(temp.get("ad_cd"))) {
					return true;
				}
			}

			// 住所コードが2件以上の時実行しない
			if (ad_cd_cnt==0 || ad_cd_cnt >= 2) {
				return false;
			}

		} catch (RequestParameterException e) {
			throw new ReqChkException(e.getMessage(), e);
		}
		return true;
	}
}
