/*********************************************************************
*   All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKUejbRule0050001
*   ソースファイル名：JKUejbRule0050001.java
*   作成者          ：富士通
*   日付            ：2011年07月26日
*＜機能概要＞
*   相関ルールチェック部品クラス
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/07/26  富士通      新規作成
*
**********************************************************************/

package eo.ejb.common.rule;

import java.util.ArrayList;
import java.util.HashMap;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbSokanRuleEngineAccessor;
import com.fujitsu.futurity.rule.common.JRuleXMLHandler;

import eo.common.constant.JRule0050001Const;

/**
 * 相関ルールチェック部品
 * 工事案件種別グループ１、２、工事契約コード１，２をもとに同時工事を判定する
 * @author 富士通
 */
public class JKUejbRule0050001
{
	/**
	 * 相関ルールIDを指定する
	 */
	private static final String RULEID = JRule0050001Const.RULEID;
	
	/**
	 * 相関ルール呼び出しを呼び出します
	 * 工事案件種別グループ１、２、工事契約コード１，２をもとに同時工事を判定する
	 * @param kojiakSbtGrp1 工事案件種別グループ１
	 * @param kojiakSbtGrp2 工事案件種別グループ２
	 * @param kojiKeiSvc1 工事契約コード１
	 * @param kojiKeiSvc2 工事契約コード２
	 * @return true:同時工事である false:同時工事でない
	 */
	public boolean chkSokanRule0050001(String kojiakSbtGrp1, String kojiakSbtGrp2, String kojiKeiSvc1, String kojiKeiSvc2)
	{
		
		// ルールエンジン実行用のハンドラを生成
		JRuleXMLHandler hndl = JSYejbSokanRuleEngineAccessor.createSokanRuleEngine(RULEID);
		
		// 前処理
		HashMap<String, Object> userMap = createUserMap(kojiakSbtGrp1, kojiakSbtGrp2, kojiKeiSvc1, kojiKeiSvc2);
		
		// 相関ルール呼び出し
		HashMap<String, Object> resultMap = execRule(hndl, userMap);
		
		String rs = (String)resultMap.get(JRule0050001Const.DOJI_KOJI_TRGT_DIV);
		
		if("true".equals(rs))
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	/**
	 * ルールエンジンに入力するuserMapを作成します
	 * 
	 * @param kojiakSbtGrp1 工事案件種別グループ１
	 * @param kojiakSbtGrp2 工事案件種別グループ２
	 * @param kojiKeiSvc1 工事契約コード１
	 * @param kojiKeiSvc2 工事契約コード２
	 * @return userMap
	 * @author 富士通
	 */
	private HashMap<String, Object> createUserMap(String kojiakSbtGrp1, String kojiakSbtGrp2, String kojiKeiSvc1, String kojiKeiSvc2)
	{
		// 入力用HashMapの作成
		HashMap<String, Object> userMap = new HashMap<String, Object>();
		
		userMap.put(JRule0050001Const.KOJIAK_SBT_GRP1, kojiakSbtGrp1); 
		userMap.put(JRule0050001Const.KOJIAK_SBT_GRP2, kojiakSbtGrp2); 
		userMap.put(JRule0050001Const.KOJI_KEI_SVC1, kojiKeiSvc1); 
		userMap.put(JRule0050001Const.KOJI_KEI_SVC2, kojiKeiSvc2); 
		
		return userMap;
		
	}

	/**
	 * ルールエンジンの呼び出しを行います
	 * 
	 * @param hndl
	 *            呼び出すルールのID呼び出すルールのID
	 * @param userMap
	 *            ルールエンジンに入力するuserMap
	 * @return エンジンの処理結果をHashMapで返却
	 * @author 富士通
	 */
	private HashMap<String, Object> execRule(JRuleXMLHandler hndl, HashMap<String, Object> userMap)
	{
		// userMapを指定してルールエンジンを実行
		ArrayList<ArrayList<HashMap<String, Object>>> list = hndl.getCheckResultArray(userMap);
	
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
	
		if (list != null && list.size() != 0)
		{
			resultMap = list.get(0).get(0);
		}
		
		return resultMap;
	
	}
}
