/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUContentsServiceInfoUtil
*   ソースファイル名：JFUContentsServiceInfoUtil.java
*   作成者          ：富士通
*   日付            ：2021年04月16日
*＜機能概要＞
*   フロント用コンテンツサービス情報部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v53.00.00   2021/04/16   FJ）新谷    新規作成
**********************************************************************/
package eo.web.webview.common;

import java.util.Map;

import eo.common.constant.JFUStrConst;

/**
 * フロント用コンテンツサービス情報部品です。
 * <br>
 * @author 富士通
 */
public class JFUContentsServiceInfoUtil
{
	/** コンテンツサービス情報定義取得パス  */
	private static final String QUERY_PATH_CONT_SVC_CD = "INFOSETTING/CONT_SVC_INFO[@cont_svc_cd='%1%']";

	/** 置き換え文字列1 */
	private static final String RE_1 = "%1%";
	
	/** 属性名 */
	public static final String QUERY_ATTR_NAME = "id";

	/**
	 * 引数のコンテンツサービスコードとコンテンツコードを使い、コンテンツサービス情報のMapを取得する。
	 * <br>
	 * @param cont_svc_cd コンテンツサービスコード
	 * @return Mapオブジェクト
	 * @throws Exception XML解析時に発生する例外
	 */
	public static Map<String, String> getContentsServiceInfoItemsAsMap(String cont_svc_cd) throws Exception
	{
		String query = QUERY_PATH_CONT_SVC_CD.replace(RE_1, cont_svc_cd);
		Map<String, String> retMap = JFUContentsServiceDifinitionCache.getInstance().getItemsAsMap(query, QUERY_ATTR_NAME);

		if (0 < retMap.size())
		{
			retMap.put(JFUStrConst.CONT_SVC_INFO_CONT_SVC_CD, cont_svc_cd);
		}

		return retMap;
	}

	/**
	 * 表示期間中かチェックする。
	 * @param infoMap コンテンツサービス情報Map
	 * @param opeDateTime 運用日時(年月日時分)
	 * @return チェック結果(true:表示期間中、false:表示期間外)
	 */
	public static boolean checkDispKikan(Map<String, String> infoMap, String opeDateTime)
	{
		if (JFUWebCommon.isNull(infoMap) || JFUWebCommon.isNull(opeDateTime))
		{
			// パラメータ異常の場合は表示期間外
			return false;
		}
		
		// 表示開始日時を取得
		String dispStaYmdhs = infoMap.get(JFUStrConst.CONT_SVC_INFO_DISP_START_YMDHS);
		// 表示終了日時を取得
		String dispEndYmdhs = infoMap.get(JFUStrConst.CONT_SVC_INFO_DISP_END_YMDHS);

		if (JFUWebCommon.isNull(dispStaYmdhs) || JFUWebCommon.isNull(dispEndYmdhs))
		{
			// 表示開始、終了日時が取得できない場合は表示期間外
			return false;
		}

		if (0 > opeDateTime.compareTo(dispStaYmdhs))
		{
			// 運用日時が表示開始日時より前の場合は表示期間外
			return false;
		}

		if (0 < opeDateTime.compareTo(dispEndYmdhs))
		{
			// 運用日時が表示終了日時より後の場合は表示期間外
			return false;
		}

		return true;
	}
}
