/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JETU0091E011TPMA
*	ソースファイル名：JETU0091E011TPMA.java
*	作成者			：FJ
*	日付			：2012年01月18日
*＜機能概要＞
*	電話帳申込内容削除サービスインターフェイスCBS主処理部品
*	電話帳申込内容情報の論理削除時に、世代管理情報をすべて論理削除する。
*	
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/01/18	FJ)楠神		新規作成
*
**********************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANFinderException;
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 com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JTUStrConst;
import eo.ejb.cbm.cbmmsg.TU0081CBMMsg;
import eo.ejb.cbm.cbmmsg.TU0091CBMMsg;
import eo.ejb.cbm.entity.TU0081ETMsg;
import eo.ejb.cbm.entity.TU0091ETMsg;
import eo.ejb.cbs.cbsmsg.ETU0091E011CBSMsg;
import eo.ejb.common.db.JTUejbTU0081SecProc;
import eo.ejb.common.db.JTUejbTU0091SecProc;

/**
 * <p>
 * 電話帳申込削除独自処理部品です。
 * </p>
 * @author FJ
 */
public class JETU0091E011TPMA implements TemplateMainHandler 
{
	
    /**
     * エラーフラグ(関連チェック)
     */
	/** EA **/
	private static final String RELATION_ERR_EA = "EA";
	/** EB **/
	private static final String RELATION_ERR_EB = "EB";
	
	/**
	 * コンストラクタです。
	 */
	public JETU0091E011TPMA()
	{
		super();
	}

	/**
	 * <p>
	 * 電話帳申込内容情報の論理削除時に、世代管理情報をすべて論理削除する。<br>
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		CAANMsg checkMsg = new CAANMsg(TU0091ETMsg.class.getName());
		CAANMsg checkMsg2 = new CAANMsg(TU0081ETMsg.class.getName());
		CAANMsg[] checkRslt = null;
		CAANMsg[] checkRslt2 = null;
		
		CAANMsg selectMsg = new CAANMsg(TU0091ETMsg.class.getName());
		CAANMsg[] selectRslt = null;
		CAANMsg updMsg = new CAANMsg(TU0091ETMsg.class.getName());
		
		JTUejbTU0081SecProc secproc_0081 = new JTUejbTU0081SecProc();
		JTUejbTU0091SecProc secproc_0091 = new JTUejbTU0091SecProc();

		//関連・状態遷移チェック
		
		//電話帳申込番号
		checkMsg.set(TU0091CBMMsg.DNWACHO_MSKM_NO, inCBSMsg.getString(ETU0091E011CBSMsg.DNWACHO_MSKM_NO));
		//無効フラグ
		checkMsg.set(TU0091CBMMsg.MK_FLG, JTUStrConst.MK_FLG_YK);
		
		try
		{
			checkRslt = secproc_0091.findByCondition(checkMsg);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		if(checkRslt == null || checkRslt.length == 0)
		{
			inCBSMsg.set(ETU0091E011CBSMsg.DNWACHO_MSKM_NO_ERR, RELATION_ERR_EA);
			inCBSMsg.set(ETU0091E011CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return;
		}
		
		//機能コードの確認（機能コードが「1」以外の場合、処理を行わない。）
		if(JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(ETU0091E011CBSMsg.FUNC_CODE)))
		{
			//電話帳申込番号
			checkMsg2.set(TU0081CBMMsg.DNWACHO_MSKM_NO, inCBSMsg.getString(ETU0091E011CBSMsg.DNWACHO_MSKM_NO));
			//無効フラグ
			checkMsg2.set(TU0081CBMMsg.MK_FLG, JTUStrConst.MK_FLG_YK);
			
			try
			{
				checkRslt2 = secproc_0081.findByCondition(checkMsg2);
			}
			catch (CAANException ce)
			{
				throw new CAANRuntimeException(ce);
			}
			
			if(!(checkRslt2 == null || checkRslt2.length == 0))
			{
				inCBSMsg.set(ETU0091E011CBSMsg.DNWACHO_MSKM_NO_ERR, RELATION_ERR_EB);
				inCBSMsg.set(ETU0091E011CBSMsg.STATUS, StatusCodes.RELATION_ERR);
				return;
			}
		}
		
		//電話帳申込内容情報取得処理
		
		//電話帳申込番号
		selectMsg.set(TU0091CBMMsg.DNWACHO_MSKM_NO, inCBSMsg.getString(ETU0091E011CBSMsg.DNWACHO_MSKM_NO));
		
		try
		{
			selectRslt = secproc_0091.findByCondition(selectMsg);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		//機能コードの確認（機能コードが「1」以外の場合、処理を終了する。）
		if(!JPCModelConstant.FUNC_CD_1.equals(inCBSMsg.getString(ETU0091E011CBSMsg.FUNC_CODE)))
		{
			return;
		}
		
		//電話帳申込内容削除処理
		try
		{
			for(int i = 0; i < selectRslt.length; i++)
			{
				//初期化
				updMsg = new CAANMsg(TU0091ETMsg.class.getName());
				
				updMsg.set(TU0091ETMsg.DNWACHO_MSKM_NO, selectRslt[i].getString(TU0091ETMsg.DNWACHO_MSKM_NO));
				updMsg.set(TU0091ETMsg.GENE_ADD_DTM, selectRslt[i].getString(TU0091ETMsg.GENE_ADD_DTM));
				updMsg.set(TU0091ETMsg.DNWACHO_MSKM_NAIYO_NO, selectRslt[i].getString(TU0091ETMsg.DNWACHO_MSKM_NAIYO_NO));
				updMsg.set(TU0091ETMsg.UPD_DTM, inCBSMsg.getString(ETU0091E011CBSMsg.OPERATEDATETIME));
				updMsg.set(TU0091ETMsg.UPD_OPEACNT, inCBSMsg.getString(ETU0091E011CBSMsg.OPERATORID));
				updMsg.set(TU0091ETMsg.DEL_DTM, inCBSMsg.getString(ETU0091E011CBSMsg.OPERATEDATETIME));
				updMsg.set(TU0091ETMsg.DEL_OPEACNT, inCBSMsg.getString(ETU0091E011CBSMsg.OPERATORID));
				updMsg.set(TU0091ETMsg.MK_FLG, JTUStrConst.MK_FLG_MK);
				
				secproc_0091.update(updMsg);
			}
		}
		catch (CAANFinderException ce)
		{
			throw new CAANRuntimeException(ce);
		}
	}
}
