/**
 * 
 */
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.constant.KKSV0051_KKSV0051OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0051_KKSV0051OP_KKSV005103SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0051_KKSV0051OP_KKSV005103SC_EKK0241B001CBSMsg1List;
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;


/**
 * KKSV0051 サービス契約更新(eo光電話)初期表示<br>
 * KKSV005108SC 工事案件(eo光ネット)一意照会<br>
 * ホーム／メゾン／マンションのタイプ判定をします<br>
 * マンションタイプでない場合に当ＳＣを実行可能とします。
 * 
 * @author 富士通
 * @since 2011-08-05
 */
public class JKKSV005108ReqChk extends AbstractCustomReqChk {

	/**
	 * 工事案件(eo光ネット)一意照会ＳＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		boolean ret = false;

		//SCマップから必要な情報を取り出す
		HashMap<String, Object> parentMap;
		try 
		{
			//サービス契約回線内訳一覧照会SCのマップ
			parentMap = (HashMap<String, Object>)arg0.getData(KKSV0051_KKSV0051OP.KKSV005103SC);
			if (parentMap != null && parentMap.containsKey(KKSV0051_KKSV0051OP_KKSV005103SC.EKK0241B001CBSMSG1LIST))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = (ArrayList<HashMap<String, Object>>)parentMap.get(KKSV0051_KKSV0051OP_KKSV005103SC.EKK0241B001CBSMSG1LIST);

				//サービス契約番号指定のサービス契約回線内訳一覧照会結果は必ず１件（のハズ）
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(0);
				if (childMap != null)
				{
					//マンション物件番号を取得
					String mansion_bukken_no = (String)childMap.get(KKSV0051_KKSV0051OP_KKSV005103SC_EKK0241B001CBSMsg1List.MANSION_BUKKEN_NO);
					if (mansion_bukken_no == null || "".equals(mansion_bukken_no))
					{
						ret = true;		//マンション物件番号がブランクならホームタイプなので、実行OK
					}
					else {
						//回線コードを取得
						String kaisen_cd = (String)childMap.get(KKSV0051_KKSV0051OP_KKSV005103SC_EKK0241B001CBSMsg1List.KAISEN_CD);
		
						//回線コードが‘光回線’なら、メゾンタイプなので実行ＯＫ
						if (kaisen_cd != null && "1001".equals(kaisen_cd))
						{
							// OM-2013-0003445 2013/10/22 START
							// メゾンの場合は工事案件＜eo光マンションネット＞から取得するべき
							//ret = true;
							ret = false;
							// OM-2013-0003445 2013/10/22 START
						}
					}
				}
			}
		}
		catch (RequestParameterException e) 
		{
			/*NOP*/ ;
		}

		return ret;
	}

}
