/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUAddCommonUtil
*   ソースファイル名：JFUAddCommonUtil.java
*   作成者          ：富士通
*   日付            ：2013年12月17日
*＜機能概要＞
*   仮登録または本登録で使用する共通部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v7.00.00    2013/12/17   FJ）文元    新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;

/**
 * 仮登録または本登録で使用する共通部品です。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUAddCommonUtil extends AbstractCommonComponent
{
	/** JFUAddServiceCommonWork */
	static final String CC_WORK_AREA_NAME_SERVICE_COMMON = "JFUAddServiceCommonWork";
	/** NetLastUpdDtm */
	static final String NET_LAST_UPD_DTM = "NetLastUpdDtm";
	/** TelLastUpdDtm */
	static final String TEL_LAST_UPD_DTM = "TelLastUpdDtm";
	/** TvLastUpdDtm */
	static final String TV_LAST_UPD_DTM = "TvLastUpdDtm";

	/**
	 * <br>
	 * 最終更新年月日時分秒を取得（ネット）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return 最後に更新した最終更新年月日時分秒
	 * @throws Exception 例外
	 */
	public String getNetSvkeiLastUpdDtm(IRequestParameterReadWrite param, String lastUpdDtm) throws Exception
	{
		// 返却値初期設定
		String retLastUpdDtm = lastUpdDtm;

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			return retLastUpdDtm;
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		if (workDataMap == null)
		{
			return retLastUpdDtm;
		}
		String keepLastUpdDtm = (String)workDataMap.get(NET_LAST_UPD_DTM);
		if (keepLastUpdDtm != null && keepLastUpdDtm.length() > 0)
		{
			retLastUpdDtm = keepLastUpdDtm;
		}

		return retLastUpdDtm;
	}
	
	/**
	 * <br>
	 * 最終更新年月日時分秒を設定（ネット）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite setNetSvkeiLastUpdDtm(IRequestParameterReadWrite param, String lastUpdDtm) throws Exception
	{
		// 初期設定
		initServiceCommonMap(param);

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を設定
		Map workMap = param.getMappingWorkArea();
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		workDataMap.put(NET_LAST_UPD_DTM, lastUpdDtm);

		return param;
	}
	
	/**
	 * <br>
	 * 最終更新年月日時分秒を取得（電話）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return 最後に更新した最終更新年月日時分秒
	 * @throws Exception 例外
	 */
	public String getTelSvkeiLastUpdDtm(IRequestParameterReadWrite param, String lastUpdDtm) throws Exception
	{
		// 返却値初期設定
		String retLastUpdDtm = lastUpdDtm;

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			return retLastUpdDtm;
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		if (workDataMap == null)
		{
			return retLastUpdDtm;
		}
		String keepLastUpdDtm = (String)workDataMap.get(TEL_LAST_UPD_DTM);
		if (keepLastUpdDtm != null && keepLastUpdDtm.length() > 0)
		{
			retLastUpdDtm = keepLastUpdDtm;
		}

		return retLastUpdDtm;
	}
	
	/**
	 * <br>
	 * 最終更新年月日時分秒を設定（電話）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite setTelSvkeiLastUpdDtm(IRequestParameterReadWrite param, String lastUpdDtm) throws Exception
	{
		// 初期設定
		initServiceCommonMap(param);

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を設定
		Map workMap = param.getMappingWorkArea();
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		workDataMap.put(TEL_LAST_UPD_DTM, lastUpdDtm);

		return param;
	}
	
	/**
	 * <br>
	 * 最終更新年月日時分秒を取得（テレビ）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return 最後に更新した最終更新年月日時分秒
	 * @throws Exception 例外
	 */
	public String getTvSvkeiLastUpdDtm(IRequestParameterReadWrite param, String lastUpdDtm) throws Exception
	{
		// 返却値初期設定
		String retLastUpdDtm = lastUpdDtm;

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			return retLastUpdDtm;
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		if (workDataMap == null)
		{
			return retLastUpdDtm;
		}
		String keepLastUpdDtm = (String)workDataMap.get(TV_LAST_UPD_DTM);
		if (keepLastUpdDtm != null && keepLastUpdDtm.length() > 0)
		{
			retLastUpdDtm = keepLastUpdDtm;
		}

		return retLastUpdDtm;
	}
	
	/**
	 * <br>
	 * 最終更新年月日時分秒を設定（テレビ）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite setTvSvkeiLastUpdDtm(IRequestParameterReadWrite param, String lastUpdDtm) throws Exception
	{
		// 初期設定
		initServiceCommonMap(param);

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を設定
		Map workMap = param.getMappingWorkArea();
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		workDataMap.put(TV_LAST_UPD_DTM, lastUpdDtm);

		return param;
	}
	
	/**
	 * <br>
	 * 最終更新年月日時分秒を取得（テレビ）
	 * <br>
	 * @param param リクエストパラメータ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @return 最後に更新した最終更新年月日時分秒
	 * @throws Exception 例外
	 */
	public String getTvSvkeiLastUpdDtm(IRequestParameterReadOnly param, String lastUpdDtm) throws Exception
	{
		// 返却値初期設定
		String retLastUpdDtm = lastUpdDtm;

		// サービス契約またはネットのサービス契約配下の契約を最後に更新した年月日時分秒を取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			return retLastUpdDtm;
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		if (workDataMap == null)
		{
			return retLastUpdDtm;
		}
		String keepLastUpdDtm = (String)workDataMap.get(TV_LAST_UPD_DTM);
		if (keepLastUpdDtm != null && keepLastUpdDtm.length() > 0)
		{
			retLastUpdDtm = keepLastUpdDtm;
		}

		return retLastUpdDtm;
	}
	
	/**
	 * サービス内で使用する共有マップの初期設定<br>
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	private IRequestParameterReadWrite initServiceCommonMap(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域のマップを取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_SERVICE_COMMON);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_AREA_NAME_SERVICE_COMMON, workDataMap);
		}

		return param;
	}
}
