/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCRAuthorityCtrlUtil
*   ソースファイル名：JCRAuthorityCtrlUtil.java
*   作成者          ：富士通
*   日付            ：2011年09月13日
*＜機能概要＞
* JCCAuthorityCtrlStatus.javaより流用作成。
* 権限制御の権限判定部品/権限判定オンラインのユーティリティーメソッド/
* 共通メソッドを提供します。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*	ｖ18.00.00	2015/10/22  FJ)頼経	     ANK-2694-00-00 ワンストップ案件（ＳＴＥＰ２）※koptWebBからkoptWebAへコピー
*
**********************************************************************/
package eo.web.webview.commonOneStop;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;

import eo.common.util.JCCFrameworkException;

/**
 * 対応履歴権限制御共通部品<p>
 * <BR>
 * @author 富士通
 */
public class JCRAuthorityCtrlUtil
{

	/**
	 * 権限有無判定処理。 <br>
	 * 共有フォームBeanに登録された権限リストと権限制御定義ファイルを突き合わせ、 <br>
	 * 権限の有無を判定して結果を返します。
	 * <br>
	 * @param vl VIEWロジックインスタンス
	 * @param eventKey 権限制御定義ファイルに設定する画面ID、イベントID、イベント番号の設定値（例：CRW034010PJP;B_OPEN_CRW00101_INS;0）
	 * @return 権限有無
	 * @exception JCCFrameworkExceptionがスローされます。
	 */
	protected static boolean checkAuthority(X31BWebBusinessLogic vl, String eventKey) throws JCCFrameworkException
	{
		//---------------------------------------
		// 入力パラメータチェック
		//---------------------------------------
		JCCAuthorityCtrlUtil.checkInputpParameter(vl);

		//---------------------------------------
		// 権限リスト取得
		//---------------------------------------
		HashMap<String, String> lstMap = new HashMap<String, String>();
		JCCWebCommon.setAuthorityList(vl, lstMap);
		if (0 == lstMap.size())
		{	
			return false;
		}

		//---------------------------------------
		// 権限制御定義ファイルキャッシュ情報取得
		//---------------------------------------
		// 権限制御定義情報マップ取得
		HashMap<String, String> teigiMap = new HashMap<String, String>();

		try
		{
			teigiMap = JCCWebCommon.getMap(vl.getGamenId());
		}
		catch (JCCFrameworkException e)
		{
			throw new JCCFrameworkException("権限制御定義ファイルキャッシュ情報の取得に失敗しました。", e);
		}

		if (null == teigiMap || 0 == teigiMap.size())
		{
			return false;
		}

		// 権限制御定義情報マップにeventKeyが含まれていない場合、権限なしとしてリターン
		if (!teigiMap.containsKey(eventKey))
		{
			return false;
		}

		// 権限制御定義情報マップから、eventKeyに紐づく権限コードリスト取得
		String value = (String)teigiMap.get(eventKey);

		// 権限の有無を判定し、結果をリターン
		return JCCWebCommon.judgeStatus(vl, lstMap, value);
	}

	/**
	 * 権限定義有無判定処理。 <br>
	 * 権限制御定義ファイルの権限定義の有無を判定して結果を返します。 <br>
	 * <br>
	 * @param vl VIEWロジックインスタンス
	 * @param eventKey 権限制御定義ファイルに設定する画面ID、イベントID、イベント番号の設定値（例：CRW034010PJP;B_OPEN_CRW00101_INS;0）
	 * @return 権限定義有無
	 * @exception JCCFrameworkExceptionがスローされます。
	 */
	protected static boolean existAuthority(X31BWebBusinessLogic vl, String eventKey) throws JCCFrameworkException
	{
		//---------------------------------------
		// 入力パラメータチェック
		//---------------------------------------
		JCCAuthorityCtrlUtil.checkInputpParameter(vl);

		//---------------------------------------
		// 権限リスト取得
		//---------------------------------------
		HashMap<String, String> lstMap = new HashMap<String, String>();
		JCCWebCommon.setAuthorityList(vl, lstMap);
		if (0 == lstMap.size())
		{	
			return false;
		}

		//---------------------------------------
		// 権限制御定義ファイルキャッシュ情報取得
		//---------------------------------------
		// 権限制御定義情報マップ取得
		HashMap<String, String> teigiMap = new HashMap<String, String>();

		try
		{
			teigiMap = JCCWebCommon.getMap(vl.getGamenId());
		}
		catch (JCCFrameworkException e)
		{
			throw new JCCFrameworkException("権限制御定義ファイルキャッシュ情報の取得に失敗しました。", e);
		}

		if (null == teigiMap || 0 == teigiMap.size())
		{
			return false;
		}

		// 権限制御定義情報マップにeventKeyが含まれていない場合
		if (!teigiMap.containsKey(eventKey))
		{
			return false;
		}

		return true;
	}

}
