/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JZMejbZM0171CRCK
*	ソースファイル名：JZMejbZM0171CRCK.java
*	作成者			：富士通
*	日付			：2011年04月14日
*＜機能概要＞
*	コード名称管理の制約を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00		2011/04/14   FJ) 木田	新規作成
*	v32.00.00	2017/05/29   FJ) 河邊	【OM-2017-0000488】オープンカーソルエラー
*
**********************************************************************/

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.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.util.JCCFrameworkException;
import eo.ejb.cbm.entity.ZM0171ETMsg;
import eo.ejb.common.JZMModelCommon;

/**
 * <p>
 * コード名称管理制約部品クラスです。
 * </p>
 * @author 富士通
 */
public class JZMejbZM0171CRCK
{
	
	/**
	 * コード名称管理の制約を行う部品。
	 * 引数と一致するデータの有無を返す
	 * 
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param cdSbtCd コード種別コード
	 * @param cdDiv コード区分
	 * @return データの存在有無
	 */
	public static boolean isExistsPrimaryKey001(CAANMsg inMsg, AgentDispatchContext inContext, Object cdSbtCd , Object cdDiv)
	{
		if(cdSbtCd == null || cdDiv == null)
		{
			return false;
		}
		String opeDate = null;
		try
		{
			opeDate = JZMModelCommon.getOpeDate(inMsg, null);
			if (opeDate == null)
			{
				opeDate = JZMModelCommon.getSysDate();					 
			}
		}
		catch(JCCFrameworkException ex1)
		{
			try
			{
				opeDate = JZMModelCommon.getSysDate();	
			}
			catch (JCCFrameworkException ex2)
			{
				return false;
			}
		}
		
// OM-2017-0000488 2017/05/29 MOD START
//		Connection con = JSYejbConnection.getConnection(ZM0171ETMsg.getTableName());
//		
//		// コネクションチェック
//		if (con == null)
//		{
//			return false;
//		}
//
//		// ＳＱＬ文の組み立て
//		StringBuffer sb = new StringBuffer();
//		sb.append("SELECT COUNT(*) CNT FROM ").append(ZM0171ETMsg.getTableName()).append(" WHERE ");
//		sb.append("CD_SBT_CD = ? ");
//		sb.append(" AND CD_DIV = ? ");
//		sb.append(" AND CD_TSTAYMD <= ? ");
//		sb.append(" AND CD_TENDYMD >= ? ");
//		sb.append(" AND MK_FLG = 0 ");
//
//		PreparedStatement st = null;
//		ResultSet rs = null;
//		// コネクションからステートメントを取得する
//
//		try
//		{
//			try
//			{
//				st = con.prepareStatement(sb.toString());
//				st.setString(1, cdSbtCd.toString());
//				st.setString(2, cdDiv.toString());
//				st.setString(3, opeDate);
//				st.setString(4, opeDate);
//				// SQLを発行
//				rs = st.executeQuery();
//				if(rs.next())
//				{
//					// 判定条件
//					if(rs.getLong("CNT") > 0)
//					{
//						return true;
//					}
//					else
//					{
//						return false;
//					}
//				}
//			}
//			catch (SQLException ex)
//			{
//				return false;
//			}
//			finally
//			{
//				if (st != null)
//				{
//					st.close();
//				}
//				if (rs != null)
//				{
//					rs.close();
//				}
//			}
//		}
//		catch(SQLException ex)
//		{
//			return false;
//		}
		Connection con = null;
		try 
		{
			con = JSYejbConnection.getConnection(ZM0171ETMsg.getTableName());
			
			// コネクションチェック
			if (con == null)
			{
				return false;
			}
	
			// ＳＱＬ文の組み立て
			StringBuffer sb = new StringBuffer();
			sb.append("SELECT COUNT(*) CNT FROM ").append(ZM0171ETMsg.getTableName()).append(" WHERE ");
			sb.append("CD_SBT_CD = ? ");
			sb.append(" AND CD_DIV = ? ");
			sb.append(" AND CD_TSTAYMD <= ? ");
			sb.append(" AND CD_TENDYMD >= ? ");
			sb.append(" AND MK_FLG = 0 ");
	
			PreparedStatement st = null;
			ResultSet rs = null;
			// コネクションからステートメントを取得する
	
			try
			{
				try
				{
					st = con.prepareStatement(sb.toString());
					st.setString(1, cdSbtCd.toString());
					st.setString(2, cdDiv.toString());
					st.setString(3, opeDate);
					st.setString(4, opeDate);
					// SQLを発行
					rs = st.executeQuery();
					if(rs.next())
					{
						// 判定条件
						if(rs.getLong("CNT") > 0)
						{
							return true;
						}
						else
						{
							return false;
						}
					}
				}
				catch (SQLException ex)
				{
					return false;
				}
				finally
				{
					if (st != null)
					{
						st.close();
					}
					if (rs != null)
					{
						rs.close();
					}
				}
			}
			catch(SQLException ex)
			{
				return false;
			}
		}
		finally
		{
			if (con != null)
			{
				CAANConnectionMgr.getInstance().close(con);
			}
		}
// OM-2017-0000488 2017/05/29 MOD END
		return false;
	}
}
