/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSYejbEKK0061B001TPDA
*	ソースファイル名：JSYejbEKK0061B001TPDA.java
*	作成者			：EK912022
*	日付			：2012年09月18日
*＜機能概要＞
*	代理店一覧照会（前方・部分一致）テンプレートDBアクセス部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v8.00.00    2014/02/13  FJ）寺園    ANK-1927-00-00
*
********************************************************************************/

package eo.ejb.cbs.sqlf;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANSQLFacility;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
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.TemplateDBAccessHandler;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ECK0181B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061B001CBSMsg1List;
import eo.ejb.cbm.entity.KK0061ETMsg;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKejbPagingUtil;
import eo.ejb.common.JZMModelCommon;

/**
*
*  テンプレートDBアクセス部品　EKK0061B001_SQLF<br>
*  入力された項目からSQL文を動的に組み立て、<br>
*  検索結果をCBSMsgにセットします。<br>
*/
public class JSYejbEKK0061B001TPDA extends CAANSQLFacility implements TemplateDBAccessHandler{
	
	/** 部分一致フラグ：1（部分一致）  */
	private static final String LIKE_FLG_BETWEEN = "1";
	
	/**
	 * コンストラクタ
	 */
	public JSYejbEKK0061B001TPDA()	{
	}
	
	/**
	*   EKK0061B001_SQLF<br>
	*   @param inMsg    入力値の格納されたCBSMsg <br>
	*   @return void
	*/
	public void invoke(CAANMsg inMsg,AgentDispatchContext inContext){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt_Count = null;
		PreparedStatement pstmt_Page = null;
		
		// リザルトセット
		ResultSet rsltQuery_Count = null;
		ResultSet rsltQuery_Page = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/

		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0061ETMsg.getTableName());
			
			// SQL文の作成(件数取得用)
			// (1)
			StringBuffer sql_BuffCount = new StringBuffer();
			sql_BuffCount.append(" SELECT  ")
			.append("     COUNT(*) AS CNT  ");
			
			// SQL文の作成(ページングヘッダ)
			// (2)
			StringBuffer sql_BuffPageHeader = new StringBuffer();
			sql_BuffPageHeader.append("SELECT *  ")
			.append("FROM (  ")
			.append("    SELECT ALL_SELECT.*, ROWNUM AS LINE  ")
			.append("    FROM (  ");
			
			// SQL文_基本部1
			// (3)
			StringBuffer sql_BuffBase1 = new StringBuffer();
			sql_BuffBase1.append(" SELECT  KK0061.AGNT_CD ")
					.append("  ,KK0061.JOI_AGNT_CD ")
					.append("  ,KK0061.AGNT_NM ")
					.append("  ,KK0061.AGNT_TSTAYMD ")
					.append("  ,KK0061.AGNT_TENDYMD ")
					.append("  ,KK0061.GENE_ADD_DTM ")
					.append("  ,KK0061.RSV_APLY_YMD ")
					.append("  ,KK0061.INCNTV_PAY_HASSEI_CD ")
					.append("  ,KK0061.KEI_MKM_SHKN_ORG_CD ")
					.append("  ,KK0061.AGNT_DBRI_NM ")
					.append("  ,KK0061.AGNT_CBRI_NM ")
					.append("  ,KK0061.TRAT_CD_YO_MKM_CHANNEL_CD ")
					.append("  ,KK0061.TRAT_CD_BRI_CD ")
					.append("  ,KK0061.TRAT_CD_BRI_DTL_CD ")
					.append("  ,(SELECT KK0061_01.AGNT_NM  ")
					.append("    FROM   KK_M_AGNT KK0061_01  ")
					.append("    WHERE  KK0061_01.AGNT_CD = KK0061.JOI_AGNT_CD ")
					.append("    AND  (KK0061_01.AGNT_CD, KK0061_01.RSV_APLY_YMD || KK0061_01.GENE_ADD_DTM) =   ")
					.append("        (SELECT KK0061_01_GENE.AGNT_CD, MAX(KK0061_01_GENE.RSV_APLY_YMD || KK0061_01_GENE.GENE_ADD_DTM) AS KK0061_01_MAX   ")
					.append("         FROM   KK_M_AGNT KK0061_01_GENE   ")
					.append("         WHERE  KK0061_01_GENE.AGNT_CD = KK0061_01.AGNT_CD   ")
					.append("         AND    KK0061_01_GENE.RSV_APLY_YMD <= ?   ")
					.append("         AND    KK0061_01_GENE.MK_FLG = '0'   ")
					.append("         GROUP BY KK0061_01_GENE.AGNT_CD)   ")
					.append("   ) AS JOI_AGNT_CD_NM     ")
					.append("  ,(SELECT ZM0171_01.CD_DIV_NM  ")
					.append("    FROM   ZM_M_CD_NM_KANRI ZM0171_01  ")
					.append("    WHERE  ZM0171_01.CD_SBT_CD = 'CD01523'  ")
					.append("    AND    ZM0171_01.CD_DIV = KK0061.INCNTV_PAY_HASSEI_CD  ")
					.append("    AND    ZM0171_01.MK_FLG = '0'  ")
					.append("   ) AS INCNTV_PAY_HASSEI_CD_NM ")
					.append("  ,ZM0061.ORG_NM AS KEI_MKM_SHKN_ORG_CD_NM ")
					.append("  ,(SELECT ZM0171_02.CD_DIV_NM  ")
					.append("    FROM   ZM_M_CD_NM_KANRI ZM0171_02  ")
					.append("    WHERE  ZM0171_02.CD_SBT_CD = 'CD01462'  ")
					.append("    AND    ZM0171_02.CD_DIV = KK0061.TRAT_CD_YO_MKM_CHANNEL_CD  ")
					.append("    AND    ZM0171_02.MK_FLG = '0'  ")
					.append("   ) AS TRAT_CD_YO_MKM_CHANNEL_CD_NM ")
					.append("  ,(SELECT ZM0171_03.CD_DIV_NM  ")
					.append("    FROM   ZM_M_CD_NM_KANRI ZM0171_03  ")
					.append("    WHERE  ZM0171_03.CD_SBT_CD = 'CD01430'  ")
					.append("    AND    ZM0171_03.CD_DIV = KK0061.TRAT_CD_BRI_CD  ")
					.append("    AND    ZM0171_03.MK_FLG = '0'  ")
					.append("   ) AS TRAT_CD_BRI_CD_NM ")
					.append("  ,(SELECT ZM0171_04.CD_DIV_NM  ")
					.append("    FROM   ZM_M_CD_NM_KANRI ZM0171_04  ")
					.append("    WHERE  ZM0171_04.CD_SBT_CD = 'CD01431'  ")
					.append("    AND    ZM0171_04.CD_DIV = KK0061.TRAT_CD_BRI_DTL_CD  ")
					.append("    AND    ZM0171_04.MK_FLG = '0'  ")
					.append("   ) AS TRAT_CD_BRI_DTL_CD_NM ")
					.append("  ,KK0061.FRNT_LOGIN_CTRL_CD ")
					.append("  ,(SELECT ZM0171_05.CD_DIV_NM  ")
					.append("    FROM   ZM_M_CD_NM_KANRI ZM0171_05  ")
					.append("    WHERE  ZM0171_05.CD_SBT_CD = 'CD01400'  ")
					.append("    AND    ZM0171_05.CD_DIV = KK0061.FRNT_LOGIN_CTRL_CD  ")
					.append("    AND    ZM0171_05.MK_FLG = '0'  ")
					.append("   ) AS FRNT_LOGIN_CTRL_CD_NM ")
					.append("  ,(SELECT  COUNT(AGNT_CD) ")
					.append("    FROM    KK_M_AGNT KK0061_01 ")
					.append("    WHERE   KK0061_01.AGNT_CD=KK0061.AGNT_CD ")
					.append("    AND     KK0061_01.AGNT_TSTAYMD <= ? ") 
					.append("    AND     KK0061_01.AGNT_TENDYMD >= ? ") 
					.append("    AND     KK0061_01.GENE_ADD_DTM=KK0061.GENE_ADD_DTM ")
					.append("    AND     (KK0061_01.AGNT_CD, KK0061_01.RSV_APLY_YMD||KK0061_01.GENE_ADD_DTM) = ( ")
					.append("        SELECT KK0061_01_GENE.AGNT_CD, MAX(KK0061_01_GENE.RSV_APLY_YMD||KK0061_01_GENE.GENE_ADD_DTM) ")
					.append("        FROM KK_M_AGNT KK0061_01_GENE ")
					.append("        WHERE KK0061_01_GENE.AGNT_CD = KK0061_01.AGNT_CD ")
					.append("        AND KK0061_01_GENE.RSV_APLY_YMD <= ? ") 
					.append("        AND KK0061_01_GENE.MK_FLG='0' ")
					.append("        GROUP BY KK0061_01_GENE.AGNT_CD ")
					.append("       ) ")
					.append("   ) AS TEKIYO_CHU_FLG ");
			// SQL文_基本部2
			// (4)
			StringBuffer sql_BuffBase2 = new StringBuffer();
				sql_BuffBase2.append(" FROM  ")
					.append("   KK_M_AGNT KK0061 ")
					.append(" LEFT OUTER JOIN ZM_M_ORGANIZATION ZM0061  ")
					.append(" ON ZM0061.ORG_CD = KK0061.KEI_MKM_SHKN_ORG_CD ")
					.append(" AND ZM0061.MK_FLG = '0' ");
			// SQL文_個別部1
			// (5)
			StringBuffer sql_BuffUni1 = new StringBuffer();
			if ( "1".equals( inMsg.getObject(EKK0061B001CBSMsg.FUNC_CODE).toString() ) ) {
 				sql_BuffUni1.append(" WHERE KK0061.MK_FLG = '0' ");
			
 	 			// ＫＥＹ＿代理店コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_CD)){
 					sql_BuffUni1.append(" AND KK0061.AGNT_CD LIKE ? ");
 					// エスケープ付与
 					sql_BuffUni1.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}

 	 			// ＫＥＹ＿代理店名称がnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_CD_NM)){
 					sql_BuffUni1.append(" AND KK0061.AGNT_NM LIKE ? ");
 					// エスケープ付与
 					sql_BuffUni1.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				
 	 			// ＫＥＹ＿取扱コード用申込チャネルコードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_TRAT_CD_YO_MKM_CHANNEL_CD)){
 					sql_BuffUni1.append(" AND KK0061.TRAT_CD_YO_MKM_CHANNEL_CD = ? ");
 				}
 				
 	 			// ＫＥＹ＿取扱コード分類コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_TRAT_CD_BRI_CD)){
 					sql_BuffUni1.append(" AND KK0061.TRAT_CD_BRI_CD = ? ");
 				}
 				
 	 			// ＫＥＹ＿取扱コード分類詳細コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_TRAT_CD_BRI_DTL_CD)){
 					sql_BuffUni1.append(" AND KK0061.TRAT_CD_BRI_DTL_CD = ? ");
 				}
 				
 	 			// ＫＥＹ＿代理店大分類名がnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_DBRI_NM)){
 					sql_BuffUni1.append(" AND KK0061.AGNT_DBRI_NM LIKE ? ");
 					// エスケープ付与
 					sql_BuffUni1.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				
 	 			// ＫＥＹ＿代理店中分類名がnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_CBRI_NM)){
 					sql_BuffUni1.append(" AND KK0061.AGNT_CBRI_NM LIKE ? ");
 					// エスケープ付与
 					sql_BuffUni1.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				
 	 			// ＫＥＹ＿インセンティブ支払発生コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_INCNTV_PAY_HASSEI_CD)){
 					sql_BuffUni1.append(" AND KK0061.INCNTV_PAY_HASSEI_CD = ? ");
 					
 				}
 				
 	 			// ＫＥＹ＿フロントログイン制御コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_FRNT_LOGIN_CTRL_CD)){
 					sql_BuffUni1.append(" AND KK0061.FRNT_LOGIN_CTRL_CD = ? ");
 				}
 				
 	 			// ＫＥＹ＿上位代理店コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_JOI_AGNT_CD)){
 					sql_BuffUni1.append(" AND KK0061.JOI_AGNT_CD = ? ");
 				}
 				
 	 			// ＫＥＹ＿契約申込所管組織コード名がnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD_NM)){
 					sql_BuffUni1.append(" AND ZM0061.ORG_NM LIKE ? ");
 					// エスケープ付与
 					sql_BuffUni1.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
 				
 	 			// ＫＥＹ＿契約申込所管組織コードがnullでない場合
 				if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD)){
 					sql_BuffUni1.append(" AND KK0061.KEI_MKM_SHKN_ORG_CD LIKE ? ");
 					// エスケープ付与
 					sql_BuffUni1.append(JZMModelCommon.ESCAPE_SQL_STRING);
 				}
			}
			
			// SQL文_ORDER BY部
			// (6)
			StringBuffer sql_BuffOrder = new StringBuffer();
				sql_BuffOrder.append(" ORDER BY ")
						.append("   KK0061.AGNT_CD ASC ")
						.append("  ,KK0061.RSV_APLY_YMD ASC ")
						.append("  ,KK0061.GENE_ADD_DTM ASC ");
						
			// SQL文の作成(ページングフッタ)
			// (7)	
			StringBuffer sql_BuffPageFooter = new StringBuffer();
				sql_BuffPageFooter.append(" ) ALL_SELECT ")
								.append(" ) PAGE_SELECT ")
								.append(" WHERE PAGE_SELECT.LINE BETWEEN ? AND ? ")
								.append(" ORDER BY PAGE_SELECT.LINE ASC ");
			
			// SQL文の組立て(件数取得用) (1) + (4) + (5)
			StringBuffer sql_getCount = new StringBuffer();
				sql_getCount.append(sql_BuffCount)
							.append(sql_BuffBase2)
							.append(sql_BuffUni1);
				
			//prepareStatementにSQL文をセット
			pstmt_Count = con1.prepareStatement(sql_getCount.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_getCount);
			
			// バインド変数設定順制御用変数
			int iParamCntr = 0;
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0061B001CBSMsg.FUNC_CODE) ) ) {
				setPram(inMsg, pstmt_Count, iParamCntr);
			}
			
			// ResultSetの取得
			rsltQuery_Count = pstmt_Count.executeQuery();
			
			// 総検索件数を取得する
			Long iDataCnt = 0L;
			if (rsltQuery_Count.next())
			{
				iDataCnt = rsltQuery_Count.getLong("CNT");
			}
			
			// 表示件数
			Long iDispNum = inMsg.getStringAsLong(EKK0061B001CBSMsg.DISPLAY_NUM);
			
			// 表示ページ数
			Long iDispPage = inMsg.getStringAsLong(EKK0061B001CBSMsg.DISPLAY_PAGE_NUM);
			
			// 総ページ数
			String strMaxPage = JKKejbPagingUtil.calcTotalPage(iDataCnt, iDispNum);
			
			// 共通部に値を設定する
			// 総検索件数
			inMsg.set(EKK0061B001CBSMsg.TOTAL_SEARCH_NUM, String.valueOf(iDataCnt));
			
			// 総ページ数
			inMsg.set(EKK0061B001CBSMsg.TOTAL_PAGE_NUM, strMaxPage);
			
			// データ取得件数が0件の場合エラー
			if (0L == iDataCnt)
			{
				inMsg.set(EKK0061B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_ZERO);
				return;
			}
			
			// 最大取得件数
			long lMaxNum = inMsg.getStringAsLong(ECK0181B001CBSMsg.MAX_SEARCH_NUM);
			
			// 最大取得件数を超えた場合エラー
			if (iDataCnt > lMaxNum)
			{
				inMsg.set(EKK0061B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_OVERMAX);
				return;
			}

			// SQL文の組立て(項目取得・ページング用)(1) + (3) + (4) + (5) + (6) + (7)
			StringBuffer sql_getPage = new StringBuffer();
				sql_getPage.append(sql_BuffPageHeader)
						.append(sql_BuffBase1)
						.append(sql_BuffBase2)
						.append(sql_BuffUni1)
						.append(sql_BuffOrder)
						.append(sql_BuffPageFooter);

			//prepareStatementにSQL文をセット
			pstmt_Page = con1.prepareStatement(sql_getPage.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_getPage);

			// 検索対象を算出する
			long[] iPages = JKKejbPagingUtil.calcSearchRows(iDispPage, iDispNum);
			long iRowSta = iPages[0];
			long iRowEnd = iPages[1];

			// バインド変数設定順制御用変数の初期化
			iParamCntr = 0;
			
			// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
			if ( "1".equals( inMsg.getString(EKK0061B001CBSMsg.FUNC_CODE) ) ) {
				
				// パラメータの設定(オンライン運用日付を指定)
				CAANJDBCUtil.setParam(pstmt_Page, ++iParamCntr, JKKModelCommon.getOpeDate(inMsg));
				
				// パラメータの設定(オンライン運用日付を指定)
				CAANJDBCUtil.setParam(pstmt_Page, ++iParamCntr, JKKModelCommon.getOpeDate(inMsg));
				
				// パラメータの設定(オンライン運用日付を指定)
				CAANJDBCUtil.setParam(pstmt_Page, ++iParamCntr, JKKModelCommon.getOpeDate(inMsg));
				
				// パラメータの設定(オンライン運用日付を指定)
				CAANJDBCUtil.setParam(pstmt_Page, ++iParamCntr, JKKModelCommon.getOpeDate(inMsg));
				
				// パラメータの設定
				iParamCntr = setPram(inMsg, pstmt_Page, iParamCntr);
				// パラメータの設定(検索開始行を指定)
				CAANJDBCUtil.setParam(pstmt_Page, ++iParamCntr, iRowSta);
				// パラメータの設定(検索終了行を指定)
				CAANJDBCUtil.setParam(pstmt_Page, ++iParamCntr, iRowEnd);
			}
			
			// ResultSetの取得
			rsltQuery_Page = pstmt_Page.executeQuery();
			
			// EKK0061B001CBSMsgの明細にセットする項目
			String[] msgKeyList1 = {
					  EKK0061B001CBSMsg1List.AGNT_CD
					, EKK0061B001CBSMsg1List.JOI_AGNT_CD
					, EKK0061B001CBSMsg1List.AGNT_NM
					, EKK0061B001CBSMsg1List.AGNT_TSTAYMD
					, EKK0061B001CBSMsg1List.AGNT_TENDYMD
					, EKK0061B001CBSMsg1List.GENE_ADD_DTM
					, EKK0061B001CBSMsg1List.RSV_APLY_YMD
					, EKK0061B001CBSMsg1List.INCNTV_PAY_HASSEI_CD
					, EKK0061B001CBSMsg1List.KEI_MKM_SHKN_ORG_CD
					, EKK0061B001CBSMsg1List.AGNT_DBRI_NM
					, EKK0061B001CBSMsg1List.AGNT_CBRI_NM
					, EKK0061B001CBSMsg1List.TRAT_CD_YO_MKM_CHANNEL_CD
					, EKK0061B001CBSMsg1List.TRAT_CD_BRI_CD
					, EKK0061B001CBSMsg1List.TRAT_CD_BRI_DTL_CD
					, EKK0061B001CBSMsg1List.JOI_AGNT_CD_NM
					, EKK0061B001CBSMsg1List.INCNTV_PAY_HASSEI_CD_NM
					, EKK0061B001CBSMsg1List.KEI_MKM_SHKN_ORG_CD_NM
					, EKK0061B001CBSMsg1List.TRAT_CD_YO_MKM_CHANNEL_CD_NM
					, EKK0061B001CBSMsg1List.TRAT_CD_BRI_CD_NM
					, EKK0061B001CBSMsg1List.TRAT_CD_BRI_DTL_CD_NM
					, EKK0061B001CBSMsg1List.FRNT_LOGIN_CTRL_CD
					, EKK0061B001CBSMsg1List.FRNT_LOGIN_CTRL_CD_NM
					, EKK0061B001CBSMsg1List.TEKIYO_CHU_FLG
			};
			
			// 明細に処理結果(ResultSet)をマッピング
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery_Page,msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK0061B001CBSMsg1List",0);
			
			// 取得結果が0件の場合は表示ページ該当なしエラー
			if (0L == outMsg1.length)
			{
				inMsg.set(EKK0061B001CBSMsg.SEARCH_ERR_FLG, JPCModelConstant.SEARCH_ERR_FLG_NODATA);
				return;
			}
			
			
			// inMsg(CBSMsg)に明細をセット
			inMsg.set("EKK0061B001CBSMsg1List", outMsg1);
			

		} catch(SQLException e) {
			inMsg.set(EKK0061B001CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQuery_Count != null){
					rsltQuery_Count.close();
				}
				if(rsltQuery_Page != null){
					rsltQuery_Page.close();
				}
				if(pstmt_Count != null){
					pstmt_Count.close();
				}
				if(pstmt_Page != null){
					pstmt_Page.close();
				}
				if(con1 != null){
					closeConnection(con1);
				}
			}catch(SQLException e){
				inMsg.set(EKK0061B001CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * パラメータの設定を行います。
	 * </p>
	 * @param inMsg 入力値の格納されたCBSMsg
	 * @param pstmt プリペアステートメント
	 * @param iParamCntr パラメータのカウント
	 * @return iParamCntr パラメータのカウント
	 * @exception SQLException
	*/
	private int setPram(CAANMsg inMsg, PreparedStatement pstmt, int iParamCntr) throws SQLException
	{
		// パラメータの設定(ＫＥＹ＿代理店コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_CD)){
			// LIKE検索文字列置き換え処理
			String keyAgentCd = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_CD));
			
			// 代理店コードは前方一致のみ
			keyAgentCd = makeLikeParam(keyAgentCd, null);
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, keyAgentCd);
		}

		// パラメータの設定(ＫＥＹ＿代理店名称を指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_CD_NM)){
			// LIKE検索文字列置き換え処理
			String keyAgentCdNm = JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_CD_NM));
			
			// 代理店名称部分一致フラグの入力値より、検索キーを編集
			keyAgentCdNm = makeLikeParam(keyAgentCdNm,inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_CD_NM_BUBUN_ICCHI_FLG));
			
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, keyAgentCdNm);
		}
		
		// パラメータの設定(ＫＥＹ＿取扱コード用申込チャネルコードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_TRAT_CD_YO_MKM_CHANNEL_CD)){
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, inMsg.getObject(EKK0061B001CBSMsg.KEY_TRAT_CD_YO_MKM_CHANNEL_CD));
		}
		
		// パラメータの設定(ＫＥＹ＿取扱コード分類コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_TRAT_CD_BRI_CD)){
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, inMsg.getObject(EKK0061B001CBSMsg.KEY_TRAT_CD_BRI_CD));
		}
		
		// パラメータの設定(ＫＥＹ＿取扱コード分類詳細コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_TRAT_CD_BRI_DTL_CD)){
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, inMsg.getObject(EKK0061B001CBSMsg.KEY_TRAT_CD_BRI_DTL_CD));
		}
		
		// パラメータの設定(ＫＥＹ＿代理店大分類名を指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_DBRI_NM)){
			
			// LIKE検索文字列置き換え処理
			String keyAgntDbriNm =  JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_DBRI_NM));
			
			// ＫＥＹ＿代理店大分類名部分一致フラグの入力値より、検索キーを編集
			keyAgntDbriNm = makeLikeParam(keyAgntDbriNm,inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_DBRI_NM_BUBUN_ICCHI_FLG));
			
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, keyAgntDbriNm);
		}
		
		// パラメータの設定(ＫＥＹ＿代理店中分類名を指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_AGNT_CBRI_NM)){
			
			// LIKE検索文字列置き換え処理
			String keyAgntCbriNm =  JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_CBRI_NM));
			
			// ＫＥＹ＿代理店中分類名部分一致フラグの入力値より、検索キーを編集
			keyAgntCbriNm = makeLikeParam(keyAgntCbriNm,inMsg.getObject(EKK0061B001CBSMsg.KEY_AGNT_CBRI_NM_BUBUN_ICCHI_FLG));
			
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, keyAgntCbriNm);
		}
		
		// パラメータの設定(ＫＥＹ＿インセンティブ支払発生コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_INCNTV_PAY_HASSEI_CD)){
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, inMsg.getObject(EKK0061B001CBSMsg.KEY_INCNTV_PAY_HASSEI_CD));
			
		}
		
		// パラメータの設定(ＫＥＹ＿フロントログイン制御コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_FRNT_LOGIN_CTRL_CD)){
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, inMsg.getObject(EKK0061B001CBSMsg.KEY_FRNT_LOGIN_CTRL_CD));
		}
		
		// パラメータの設定(ＫＥＹ＿上位代理店コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_JOI_AGNT_CD)){
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, inMsg.getObject(EKK0061B001CBSMsg.KEY_JOI_AGNT_CD));
		}
		
		// パラメータの設定(ＫＥＹ＿契約申込所管組織コード名を指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD_NM)){
			
			// LIKE検索文字列置き換え処理
			String keyKeiMkmShknOrgCdNm =  JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD_NM));
			
			// ＫＥＹ＿契約申込所管組織コード名部分一致フラグより、検索キーを編集
			keyKeiMkmShknOrgCdNm = makeLikeParam(keyKeiMkmShknOrgCdNm,inMsg.getObject(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD_NM_BUBUN_ICCHI_FLG));
			
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, keyKeiMkmShknOrgCdNm);
		}
		
		// パラメータの設定(ＫＥＹ＿契約申込所管組織コードを指定)
		if(!inMsg.isNull(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD)){
			
			// LIKE検索文字列置き換え処理
			String keiMkmShknOrgCd =  JZMModelCommon.replaceLikeValue(inMsg.getObject(EKK0061B001CBSMsg.KEY_KEI_MKM_SHKN_ORG_CD));

			// 契約申込所管組織コードは前方一致のみ
			keiMkmShknOrgCd = makeLikeParam(keiMkmShknOrgCd, null);
			
			CAANJDBCUtil.setParam(pstmt, ++iParamCntr, keiMkmShknOrgCd);
		}
		
		return iParamCntr;
	}
	
	/**
	 * <p>
	 * 部分一致・前方一致用検索キーを編集します
	 * </p>
	 * @param likeParam 検索対象キー
	 * @param likeFlg 部分一致フラグ
	 * @return 前方一致キー："検索対象キー%" 部分一致キー："%検索対象キー%"
	 */
	private String makeLikeParam(String likeParam, Object likeFlg)
	{
		// 返却値設定用変数
		String retLinkParam = null;
		
		// 部分一致フラグが"1"(部分一致)の場合
		if (LIKE_FLG_BETWEEN.equals(likeFlg))
		{
			// 部分一致
			retLinkParam = "%" + likeParam + "%";
		}
		else
		{
			// 前方一致
			retLinkParam = likeParam + "%";
		}
		return retLinkParam;
	}
}
