package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
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.reqchk.exception.ReqChkException;

public class JKKSV028301ReqChk extends AbstractCustomReqChk
{

	/*
	 * (非 Javadoc)
	 * 
	 * @see
	 * com.fujitsu.futurity.bp.x21.bpm.common.AbstractCustomReqChk#checkExecution
	 * (com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly,
	 * com.fujitsu.futurity.bp.x21.bpm.common.IConditionValue)
	 */
	@Override
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException
	{
		try
		{
			Map<String, Object> param = (HashMap<String, Object>)irp.getData("trgt_data");
			List<Map<String, Object>> resultList = (ArrayList<Map<String, Object>>)param.get("trgt_data_list");
			if (resultList != null) {
				for (Iterator<Map<String, Object>> iter = resultList.iterator(); iter.hasNext(); ) {
					Map<String, Object> trgtDataListMap = iter.next();
					String errSbtCd = (String)trgtDataListMap.get("shosa_err_sbt_cd");
					String errMsgId = (String)trgtDataListMap.get("shosa_err_msg_id");
					List<Map<String, String>> errList = (ArrayList<Map<String, String>>)trgtDataListMap
							.get("rslt_trgt_data_list");

					// エラーメッセージ種別コードが存在する場合はＮＧ
					if (errSbtCd != null && "".equals(errSbtCd))
					{
						return false;
					}

					// エラーメッセージＩＤが存在する場合はＮＧ
					if (errMsgId != null && "".equals(errMsgId))
					{
						return false;
					}

					// エラーメッセージリストが存在する場合はＮＧ
					if (errList != null && errList.size() > 0)
					{
						return false;
					}
				}
			}
		}
		catch (RequestParameterException e)
		{
			return false;
		}

		return true;
	}

}
