/*********************************************************************
*	All Rights reserved,Copyright c Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*	システム名		：プロジェクト共通
*	モジュール名	：JCHejbCH0011CRCK
*	ソースファイル名：JCHejbCH0011CRCK.java
*	作成者			：富士通
*	日付			：2011年11月09日
*＜機能概要＞
*	債権の関連チェックを行うクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/09	富士通		新規作成
*
**********************************************************************/
package eo.ejb.common.entity;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.CH0011ETMsg;

/**
 * 債権の関連チェックを行うクラスです。<p>
 * <br>
 * @author 富士通
 */
public class JCHejbCH0011KRCK
{
	
	/**
	 * <p>
	 * 債権番号存在チェック処理
	 * </p>
	 * 指定された債権番号が存在するかチェックを行う。
	 * <br>
	 * @param inMsg 処理対象のメッセージ
	 * @param inContext エージェントディスパッチコンテキスト
	 * @param inSaikenNo 債権番号
	 * @return 存在有無 true：存在する、false：存在しない
	 */
	public static boolean isExistSaikenNo(CAANMsg inMsg,	AgentDispatchContext inContext, Object inSaikenNo)
	{
		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		// パラメータインデックス
		int i = 1;

		/******************** 
		 * SQL文の作成
		 ********************/

		boolean bRtn = false;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0011ETMsg.getTableName());

			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append(" COUNT(*) CNT ")
					.append(" FROM CH_T_SAIKEN CH0011 ")
					.append(" WHERE CH0011.SAIKEN_NO = ? ")
					.append("   AND CH0011.MK_FLG = '0' ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS,
					JCHejbCH0011KRCK.class, sql_Buff);

			// パラメータの設定(請求番号)
			CAANJDBCUtil.setParam(pstmt, i++, inSaikenNo.toString());

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 戻り値の判定
			if (rsltQuery.next())
			{
				if (rsltQuery.getLong("CNT") > 0)
				{
					bRtn = true;
				}
			}
		}
		catch (SQLException e)
		{
			inMsg.set(CH0011ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inMsg.set(CH0011ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return bRtn;
	}
}
