/*********************************************************************
*   All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JECR0201D020TPMA
*   ソースファイル名：JECR0201D020TPMA.java
*   作成者          ：富士通
*   日付            ：2011年06月04日
*＜機能概要＞
*   対応記録登録顧客独自処理部品
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/06/04  富士通      新規作成
*
**********************************************************************/
package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.common.constant.JCRStrConst;
import eo.ejb.cbm.entity.CR0261ETMsg;
import eo.ejb.cbs.cbsmsg.ECR0201D010CBSMsg;
import eo.ejb.common.db.JCRejbCR0261SecProc;

/**
 * <p>
 * 対応記録内訳カテゴリー登録顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECR0201D010TPMA implements TemplateMainHandler
{

	/**
	 * コンストラクタです。
	 */
	public JECR0201D010TPMA()
	{
		super();
	}

	/**
	 * <p>
	 * 対応記録内訳カテゴリー登録時の副次処理を呼び出す。
	 * </p>
	 * @param inCBSMsg 概念スキーマのCBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANException 
	 */
	public static void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{

		// (1)処理実施チェックを行う。
		String syrzmFlg = inCBSMsg.getString(ECR0201D010CBSMsg.SYRZM_FLG);
		if (JCRStrConst.SYRZM_FLG_MISYORI.equals(syrzmFlg))
		{
			// (a)「カテゴリー別問合せモニタワーク登録副次処理部品」を呼び出す。
			// (@) パラメータのCBSメッセージ項目からカテゴリー別問合せモニタワークのETメッセージを編集する。
			CAANMsg cr0261ETMsg = new CAANMsg(CR0261ETMsg.class.getName());
			// 業務個別設定組織コード
			cr0261ETMsg.set(CR0261ETMsg.WKKBT_ORG_CD, inCBSMsg.getString(ECR0201D010CBSMsg.WKKBT_ORG_CD));
			// 対応記録番号
			cr0261ETMsg.set(CR0261ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0201D010CBSMsg.TAIO_KIROK_NO));
			// カテゴリーレベル
			cr0261ETMsg.set(CR0261ETMsg.CTGR_LV, inCBSMsg.getString(ECR0201D010CBSMsg.TAIOKRK_UW_CTGR_LV));
			// カテゴリー名
			cr0261ETMsg.set(CR0261ETMsg.CTGR_NM, inCBSMsg.getString(ECR0201D010CBSMsg.TAIOKRK_UW_CTGR_NM));
			// 上位連結カテゴリー名
			cr0261ETMsg.set(CR0261ETMsg.JOI_RNKT_CTGR_NM, inCBSMsg.getString(ECR0201D010CBSMsg.JOI_RNKT_CTGR_NM));
			// 下位カテゴリー有無
			cr0261ETMsg.set(CR0261ETMsg.KAI_CTGR_UM, inCBSMsg.getString(ECR0201D010CBSMsg.KAI_CTGR_UM));
			// 登録オペレータアカウント
			cr0261ETMsg.set(CR0261ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECR0201D010CBSMsg.ADD_OPEACNT));
			// 更新オペレータアカウント
			cr0261ETMsg.set(CR0261ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0201D010CBSMsg.UPD_OPEACNT));

			// (A) 引数に以下の設定を行う。
			// ETメッセージ(カテゴリー別問合せモニタワーク)
			// データ種別コード     "1"「新規作成データ」
			// カテゴリー別問合せモニタワーク登録副次処理部品を呼出し、カテゴリー別モニタワークを更新する。
			new JCRejbCR0261SecProc().addCtgrToiawaseMonitorWork(inCBSMsg, inContext, cr0261ETMsg
					, JCRStrConst.DATA_SBT_CD_NEW);
		}

		// (2) 一時保存の場合は、以降の処理を行わない。
		// 一時保存有無
		String henshuStatFlg = inCBSMsg.getString(ECR0201D010CBSMsg.HENSHU_STAT_FLG);
		if (JCRStrConst.HENSHU_STAT_FLG_HENSHU_CHU.equals(henshuStatFlg))
		{
			return;
		}

		// (3) NGワードデータの登録を行う。
		// ・パラメータ「クローズ不可コード」が"0"(クローズ可能)以外の場合、
		//   データ種別コードに"3"(NGワード)を設定して、上記(2)〜(3)の処理を行う。

		// クローズ不可コード
		String closeFailCd = inCBSMsg.getString(ECR0201D010CBSMsg.CLOSE_FAIL_CD);

		if (!JCRStrConst.CD_DIV_CLOSE_FAIL_CD_KANOU.equals(closeFailCd))
		{
			// カテゴリー別モニタワークのETメッセージを生成し、DB更新値を引き継ぐために以下の値を設定する。
			CAANMsg cr0261ETMsg = new CAANMsg(CR0261ETMsg.class.getName());
			// 業務個別設定組織コード
			cr0261ETMsg.set(CR0261ETMsg.WKKBT_ORG_CD, inCBSMsg.getString(ECR0201D010CBSMsg.WKKBT_ORG_CD));
			// 対応記録番号
			cr0261ETMsg.set(CR0261ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0201D010CBSMsg.TAIO_KIROK_NO));
			// カテゴリーレベル
			cr0261ETMsg.set(CR0261ETMsg.CTGR_LV, inCBSMsg.getString(ECR0201D010CBSMsg.TAIOKRK_UW_CTGR_LV));
			// カテゴリー名
			cr0261ETMsg.set(CR0261ETMsg.CTGR_NM, inCBSMsg.getString(ECR0201D010CBSMsg.TAIOKRK_UW_CTGR_NM));
			// 上位連結カテゴリー名
			cr0261ETMsg.set(CR0261ETMsg.JOI_RNKT_CTGR_NM, inCBSMsg.getString(ECR0201D010CBSMsg.JOI_RNKT_CTGR_NM));
			// 下位カテゴリー有無
			cr0261ETMsg.set(CR0261ETMsg.KAI_CTGR_UM, inCBSMsg.getString(ECR0201D010CBSMsg.KAI_CTGR_UM));
			// 登録オペレータアカウント
			cr0261ETMsg.set(CR0261ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECR0201D010CBSMsg.ADD_OPEACNT));
			// 更新オペレータアカウント
			cr0261ETMsg.set(CR0261ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0201D010CBSMsg.UPD_OPEACNT));

			// カテゴリー別問合せモニタワーク登録副次処理部品を呼出し、カテゴリー別モニタワークを更新する。
			new JCRejbCR0261SecProc().addCtgrToiawaseMonitorWork(inCBSMsg, inContext, cr0261ETMsg
					, JCRStrConst.DATA_SBT_CD_NGWORD);
		}
	}

}
