/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKejbKK0411SecProc
 *	ソースファイル名：JKKejbKK0411SecProc.java
 *	作成者			：富士通
 *	日付			：2011年10月20日
 *＜機能概要＞
 *	サブオプションサービス契約<ISP>の副次処理を行う部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/10/20	FJ)			新規作成
 *
 **********************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.KK0401ETMsg;
import eo.ejb.cbm.entity.KK0411ETMsg;
import eo.ejb.common.JKKModelCommon;

/**
 * <p>
 * サブオプションサービス契約<ISP>の副次処理を行うクラスです。
 * </p>
 * @author 富士通
 */
public class JKKejbKK0411SecProc extends JKKejbKK0411DBABase
{

	/** 予約適用コード 予約確定 */
	private static final String RSVCD_DECIDED = "2";
	
	/** 無効フラグ 有効 */
	private static final String MKFLG_VALID = "0";
	
	/**
	 * <p>
	 * メールウィルスチェック登録を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア(CBSメッセージ)
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0401Info サブオプションサービス契約のメッセージキャリア(ETメッセージ)
	 */
	public void createMailVirusChk(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk0401Info)
	{
		CAANMsg kk0411Info = new CAANMsg(KK0411ETMsg.class.getName());
		
		// メールウィルスチェック登録共通項目の設定
		setCommonItemMailVirusChk(inCBSMsg, inContext, kk0411Info, kk0401Info);

		// サブオプションサービス契約<ISP>登録
		createKK0411(kk0411Info);
		
		return;
	}
	
	/**
	 * <p>
	 * オプションサービス契約<ISP>照査締結の副次処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア(CBSメッセージ)
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0401Info サブオプションサービス契約のメッセージキャリア(ETメッセージ)
	 * @param strGeneCur サブオプションサービス契約カレントレコードの世代登録年月日時分秒
	 */
	public void createShosaCnc(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk0401Info, String strGeneCur)
	{
		CAANMsg kk0411Msg = new CAANMsg(KK0411ETMsg.class.getName());
		kk0411Msg.set(KK0411ETMsg.OP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.OP_SVC_KEI_NO));
		kk0411Msg.set(KK0411ETMsg.SBOP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.SBOP_SVC_KEI_NO));
		kk0411Msg.set(KK0411ETMsg.GENE_ADD_DTM, strGeneCur);

		// 一意検索
		CAANMsg kk0411Info = new JKKejbKK0411DBABase().findByPrimaryKey(kk0411Msg);

		// 照査締結項目の設定
		setItemShosaCnc(inCBSMsg, inContext, kk0411Info, kk0401Info);

		// サブオプションサービス契約<ISP>登録
		createKK0411(kk0411Info);

		return;
	}
	
	/**
	 * <p>
	 * オプションサービス契約<ISP>開始の副次処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア(CBSメッセージ)
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0401Info サブオプションサービス契約のメッセージキャリア(ETメッセージ)
	 * @param strGeneCur サブオプションサービス契約カレントレコードの世代登録年月日時分秒
	 */
	public void createStat(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk0401Info, String strGeneCur)
	{
		CAANMsg kk0411Msg = new CAANMsg(KK0411ETMsg.class.getName());
		kk0411Msg.set(KK0411ETMsg.OP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.OP_SVC_KEI_NO));
		kk0411Msg.set(KK0411ETMsg.SBOP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.SBOP_SVC_KEI_NO));
		kk0411Msg.set(KK0411ETMsg.GENE_ADD_DTM, strGeneCur);

		// 一意検索
		CAANMsg kk0411Info = new JKKejbKK0411DBABase().findByPrimaryKey(kk0411Msg);

		// 照査締結項目の設定
		setItemSta(inCBSMsg, inContext, kk0411Info, kk0401Info);

		// サブオプションサービス契約<ISP>登録
		createKK0411(kk0411Info);

		return;
	}
	
	/**
	 * <p>
	 * メールウィルスチェック登録の共通項目設定を行います。
	 * </p>
	 * @param inCBSMsg　処理対象のメッセージキャリア(CBSメッセージ)
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0411Info　項目を設定するサブオプションサービス契約<ISP>のメッセージキャリア
	 * @param kk0401Info　サブオプションサービス契約のメッセージキャリア
	 */
	private void setCommonItemMailVirusChk(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk0411Info, CAANMsg kk0401Info)
	{
		kk0411Info.set(KK0411ETMsg.OP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.OP_SVC_KEI_NO));
		kk0411Info.set(KK0411ETMsg.SBOP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.SBOP_SVC_KEI_NO));
		kk0411Info.set(KK0411ETMsg.GENE_ADD_DTM, JKKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		kk0411Info.set(KK0411ETMsg.RSV_APLY_CD, RSVCD_DECIDED);
		kk0411Info.set(KK0411ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk0411Info.set(KK0411ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk0411Info.set(KK0411ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk0411Info.set(KK0411ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk0411Info.set(KK0411ETMsg.MK_FLG, MKFLG_VALID);
	}
	
	/**
	 * <p>
	 * 照査締結の項目設定を行います。
	 * </p>
	 * @param inCBSMsg　処理対象のメッセージキャリア(CBSメッセージ)
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0411Info　項目を設定するサブオプションサービス契約<ISP>のメッセージキャリア
	 * @param kk0401Info　サブオプションサービス契約のメッセージキャリア
	 */
	private void setItemShosaCnc(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk0411Info, CAANMsg kk0401Info)
	{
		kk0411Info.set(KK0411ETMsg.OP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.OP_SVC_KEI_NO));
		kk0411Info.set(KK0411ETMsg.SBOP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.SBOP_SVC_KEI_NO));
		kk0411Info.set(KK0411ETMsg.GENE_ADD_DTM, JKKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		kk0411Info.set(KK0411ETMsg.RSV_APLY_CD, RSVCD_DECIDED);
		kk0411Info.set(KK0411ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk0411Info.set(KK0411ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk0411Info.set(KK0411ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk0411Info.set(KK0411ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk0411Info.set(KK0411ETMsg.MK_FLG, MKFLG_VALID);
	}
	
	/**
	 * <p>
	 * 開始の項目設定を行います。
	 * </p>
	 * @param inCBSMsg　処理対象のメッセージキャリア(CBSメッセージ)
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0411Info　項目を設定するサブオプションサービス契約<ISP>のメッセージキャリア
	 * @param kk0401Info　サブオプションサービス契約のメッセージキャリア
	 */
	private void setItemSta(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk0411Info, CAANMsg kk0401Info)
	{
		kk0411Info.set(KK0411ETMsg.OP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.OP_SVC_KEI_NO));
		kk0411Info.set(KK0411ETMsg.SBOP_SVC_KEI_NO, kk0401Info.getString(KK0401ETMsg.SBOP_SVC_KEI_NO));
		kk0411Info.set(KK0411ETMsg.GENE_ADD_DTM, JKKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		kk0411Info.set(KK0411ETMsg.RSV_APLY_CD, RSVCD_DECIDED);
		kk0411Info.set(KK0411ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk0411Info.set(KK0411ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk0411Info.set(KK0411ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk0411Info.set(KK0411ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk0411Info.set(KK0411ETMsg.MK_FLG, MKFLG_VALID);
	}
	
	/**
	 * <p>
	 * サブオプションサービス契約<ISP>の登録を行います。
	 * </p>
	 * @param inETMsg　サブオプションサービス契約<ISP>のメッセージキャリア
	 */
	private void createKK0411(CAANMsg inETMsg)
	{
		try
		{
			super.create(inETMsg);
		}
		catch (CAANCreateException ce)
		{
			throw new CAANRuntimeException(ce);
		}
	}
}
