/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKK0351E010TPMA
*	ソースファイル名：JEKK0351E010TPMA.java
*	作成者			：富士通
*	日付			：2012年09月10日
*＜機能概要＞
*	オプションサービス契約論理削除時の論理削除処理を呼び出す部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00   2013/03/22  富士通      新規作成
*
********************************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANFinderException;
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.ejb.cbm.entity.KK0351ETMsg;
import eo.ejb.cbm.entity.KK0361ETMsg;
import eo.ejb.cbm.entity.KK0371ETMsg;
import eo.ejb.cbm.entity.KK0381ETMsg;
import eo.ejb.cbm.entity.KK0391ETMsg;
import eo.ejb.cbm.entity.KK0401ETMsg;
import eo.ejb.cbm.entity.KK0411ETMsg;
import eo.ejb.cbm.entity.KK0421ETMsg;
import eo.ejb.cbm.entity.KK0431ETMsg;
import eo.ejb.cbs.cbsmsg.EKK0351E010CBSMsg;
import eo.ejb.common.db.JKKejbDBAUtil;

/**
 * <p>
 * オプションサービス契約論理削除顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JEKK0351E010TPMA implements TemplateMainHandler
{
	/**
	 * オプションサービス契約論理削除顧客独自処理
	 * 
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANFinderException 
	 */
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 入力の「オプションサービス契約番号」を取得する
		String opSvckeiNo = inCBSMsg.getString(EKK0351E010CBSMsg.OP_SVC_KEI_NO);

		// オプションサービス契約番号をKEYに対象レコードをインスタンス論理削除する。
		CAANMsg msgKK0351 = new CAANMsg(KK0351ETMsg.class.getName());
		msgKK0351.set(KK0351ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		JKKejbDBAUtil dbu = new JKKejbDBAUtil(inCBSMsg);
		dbu.invalidAll(msgKK0351);
		
		// 各サブタイプのレコードを取得し、存在する場合論理削除する。
		CAANMsg msgKK0361 = new CAANMsg(KK0361ETMsg.class.getName());
		CAANMsg msgKK0371 = new CAANMsg(KK0371ETMsg.class.getName());
		CAANMsg msgKK0381 = new CAANMsg(KK0381ETMsg.class.getName());
		CAANMsg msgKK0391 = new CAANMsg(KK0391ETMsg.class.getName());
		
		// サブオプションのレコードを取得し、存在する場合論理削除する
		CAANMsg msgKK0401 = new CAANMsg(KK0401ETMsg.class.getName());
		CAANMsg msgKK0411 = new CAANMsg(KK0411ETMsg.class.getName());
		CAANMsg msgKK0421 = new CAANMsg(KK0421ETMsg.class.getName());
		CAANMsg msgKK0431 = new CAANMsg(KK0431ETMsg.class.getName());
		
		msgKK0361.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		msgKK0371.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		msgKK0381.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		msgKK0391.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);

		msgKK0401.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		msgKK0411.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		msgKK0421.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
		msgKK0431.set(KK0361ETMsg.OP_SVC_KEI_NO, opSvckeiNo);
	
		dbu.invalidAll(msgKK0361);
		dbu.invalidAll(msgKK0371);
		dbu.invalidAll(msgKK0381);
		dbu.invalidAll(msgKK0391);
		
		dbu.invalidAll(msgKK0401);
		dbu.invalidAll(msgKK0411);
		dbu.invalidAll(msgKK0421);
		dbu.invalidAll(msgKK0431);
	}

}
