/*********************************************************************
*   All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JEKK3021E010KRCK
*   ソースファイル名：JEKK3021E010KRCK.java
*   作成者          ：富士通
*	日付			：2016年09月23日
*＜機能概要＞
*   契約内容通知対象物削除の関連制約部品クラス
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*	v27.00.00   2016/09/26   FJ)三原    【ANK-2985-00-00】 消費者保護ルール見直追加対応STEP3
*
**********************************************************************/

package eo.ejb.common.entity;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.KK3021ETMsg;
import eo.ejb.cbm.entity.KK3021LE;
import eo.ejb.cbs.cbsmsg.EKK3021E010CBSMsg;
import eo.ejb.common.JKKModelConst;

/**
 * <p>
 * 契約内容通知対象物削除の関連制約部品クラスです。
 * </p>
 * @author 富士通
 */
public class JEKK3021E010KRCK
{

	/** 関連チェックエラーフラグ&エラー返却項目(契約内容通知対象物存在チェック) */
	private static final String[] KRCK_EXISTS_ERR = {"EA", EKK3021E010CBSMsg.KNYTCS_NO_ERR};
	
	/**
	 * <p>
	 * 新しいJEKK3021E010KRCKを作成します。
	 * </p>
	 */
	public JEKK3021E010KRCK()
	{
	}

	/**
	 * <p>
	 * 契約内容通知対象物削除の関連制約を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void execKRCK(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		try
		{
			// 契約内容通知書番号
			String knytcsNo = inCBSMsg.getString(EKK3021E010CBSMsg.KNYTCS_NO);
			// 契約内容通知対象物メッセージインスタンスを生成
			CAANMsg inMsg = new CAANMsg(KK3021ETMsg.class.getName());
			
			// 契約内容通知書番号に紐付く契約内容通知対象物を取得するためにメッセージを生成
			inMsg.set(KK3021ETMsg.KNYTCS_NO, knytcsNo);
			inMsg.set(KK3021ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// KK3021LEインスタンスの生成
			KK3021LE kk3021le = new KK3021LE();
			
			// ロジカルエンティティを生成し、契約内容通知対象物を検索
			CAANMsg[] kk3021StbMsgList = kk3021le.findByCondition(inMsg);

			// 取得件数が0件の場合はエラー
			if (kk3021StbMsgList == null || kk3021StbMsgList.length == 0)
			{
				setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_EXISTS_ERR);
				return;
			}
		}
		catch(CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
	}
	
	/**
	 * <p>
	 * エラー返却項目にエラーフラグを設定します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param status エラー時のステータス
	 * @param errInfo[] エラー情報が設定された配列 [0]:エラーフラグ [1]:エラー返却項目
	 */
	private void setErrInfo(CAANMsg inCBSMsg, int status, String[] errInfo)
	{
		inCBSMsg.set(JCMConstants.STATUS_INT_KEY, status);
		inCBSMsg.set(errInfo[1], errInfo[0]);
		return;
	}
}

