/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUScreenIdMapper
*   ソースファイル名：JFUScreenIdMapper.java
*   作成者          ：富士通
*   日付            ：2011年08月30日
*＜機能概要＞
*   リクエストURL画面IDに紐づく連携ID・物理画面IDを取得する処理を提供する。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/08/30   FJ）今村    新規作成
*
**********************************************************************/
package eo.web.webview.common;

import static eo.common.constant.JFUStrConst.ERROR_CODE_0002;

import com.fujitsu.futurity.web.x00.JCCBusinessException;

/**
 * リクエストURL画面IDに紐づく以下の項目を取得する処理を提供する。<br>
 * ・物理画面ID<br>
 * ・連携ID<br>
 * ・SIF実行区分<br>
 * ・SIF機能区分<br>
 * ・料金グループコードリスト<br>
 * @author 富士通
 */
public class JFUScreenIdMapper
{

	/** プロパティファイルキー：リクエストURL画面ID */
	private static final String KEY_URL_SCREEN_ID = "FU_C_SCREEN_";
	/** 要素セパレータ：コロン */
	private static final String SEP_COLON = ":";

	/**
	 * リクエストURL画面IDに紐づく物理画面IDを取得します。
	 * エラーの場合は共通エラー画面へ遷移します。
	 * <br>
	 * @param urlScreenId リクエストURL画面ID
	 * @return 物理画面ID
	 */
	public static String getPhysicalScreenId(String urlScreenId)
	{
		String value = getApplicationConst(urlScreenId);
		String physicalScreenId = value.split(SEP_COLON)[0];
		return physicalScreenId;
	}

	/**
	 * リクエストURL画面IDに紐づくサービスIDを取得します。
	 * エラーの場合は共通エラー画面へ遷移します。
	 * <br>
	 * @param urlScreenId リクエストURL画面ID
	 * @return サービスID
	 */
	public static String getServiceId(String urlScreenId)
	{
		String value = getApplicationConst(urlScreenId);
		String serviceId = value.split(SEP_COLON)[1];
		return serviceId;
	}

	/**
	 * リクエストURL画面IDに紐づく連携IDを取得します。<br>
	 * ※フレームワークで使用されます。
	 * <br>
	 * @param urlScreenId リクエストURL画面ID
	 * @return 連携ID
	 */
	public static String getRenkeiId(String urlScreenId)
	{
		if (isNullorEmpty(urlScreenId))
		{
			return null;
		}

		String key = KEY_URL_SCREEN_ID + urlScreenId.toUpperCase();
		String value = JCCWebCommon.getApplicationConst(key);

		if (isNullorEmpty(value))
		{
			return null;
		}

		String renkeiId = value.split(SEP_COLON)[2];

		return renkeiId;
	}

	/**
	 * リクエストURL画面IDに紐づくSIF実行区分を取得します。
	 * エラーの場合は共通エラー画面へ遷移します。
	 * <br>
	 * @param urlScreenId リクエストURL画面ID
	 * @return SIF実行区分
	 */
	public static String getSIFExecKbn(String urlScreenId)
	{
		String value = getApplicationConst(urlScreenId);
		String sifExecKbn = value.split(SEP_COLON)[3];
		return sifExecKbn;
	}

	/**
	 * リクエストURL画面IDに紐づくSIF機能区分を取得します。
	 * エラーの場合は共通エラー画面へ遷移します。
	 * <br>
	 * @param urlScreenId リクエストURL画面ID
	 * @return SIF機能区分
	 */
	public static String getSIFFuncKbn(String urlScreenId)
	{
		String value = getApplicationConst(urlScreenId);
		String sifFuncKbn = value.split(SEP_COLON)[4];
		return sifFuncKbn;
	}

	/**
	 * アプリケーションプロパティファイルからキーで指定された情報を返却します。
	 * <br>
	 * @param urlScreenId リクエストURL画面ID
	 * @return キーで取得された情報
	 */
	private static String getApplicationConst(String urlScreenId)
	{
		if (isNullorEmpty(urlScreenId))
		{
			// システムエラーの場合、共通エラー画面に遷移します。
			throw new JCCBusinessException(ERROR_CODE_0002);
		}

		String key = KEY_URL_SCREEN_ID + urlScreenId.toUpperCase();
		String value = JCCWebCommon.getApplicationConst(key);

		if (isNullorEmpty(value))
		{
			// システムエラーの場合、共通エラー画面に遷移します。
			throw new JCCBusinessException(ERROR_CODE_0002);
		}

		return value;
	}

	/**
	 * null・空文字チェックを行います。
	 * <br>
	 * @param arg0 検証文字列
	 * @return true:null・空文字 false:null・空文字以外
	 */
	private static boolean isNullorEmpty(String arg0)
	{
		if (arg0 == null || "".equals(arg0))
		{
			return true;
		}
		return false;
	}
}