/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JZMejbRhVhUserPwdParts
*   ソースファイル名：JZMejbRhVhUserPwdParts.java
*   作成者          ：富士通
*   日付            ：2012年06月14日
*＜機能概要＞
*   初期量販訪販ユーザーパスワードを取得する部品です。
*＜修正履歴＞
*   バージョン	修正日		修正者		修正内容
*	v4.00		2012/06/14	FJ）早崎	新規作成
*   v4.01		2012/10/16	FJ）日野    【IT1-2012-0001409】対応
*	v32.00.00	2017/05/29	FJ) 河邊	【OM-2017-0000488】オープンカーソルエラー
*
**********************************************************************/
package eo.ejb.common.edit;

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.ZM0321ETMsg;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.JZMModelCommon;

/**
 * <p>
 * 初期量販訪販ユーザーパスワード取得部品クラスです。
 * </p>
 * @author 富士通
 */
public class JZMejbRhVhUserPwdParts
{
	
	/**
	 * <p>
	 * 暗号化した初期パスワードの取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param UserId ユーザーID
	 * @return 編集後の初期量販訪販ユーザーパスワードの値
	 */
	public static Object getInitRhVhUserPwd(CAANMsg inMsg, AgentDispatchContext inContext, Object UserId )
	{
		// コネクション
		Connection con = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		if(UserId == null)
		{
			return null;
		}
		
		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
//		con =  JSYejbConnection.getConnection(ZM0321ETMsg.getTableName());
//		
//		// コネクションチェック
//		if (con == null)
//		{
//			return null;
//		}
//		
//		// SQL文の組み立て
//		StringBuffer sql_Buff = new StringBuffer();
//		sql_Buff.append(" SELECT WORK_PARAM_SETTE_VALUE FROM ")
//				.append(ZM0321ETMsg.getTableName())
//				.append(" WHERE ")
//				.append(" WORK_PARAM_ID = ? ")
//				.append(" AND WORK_PARAM_TSTAYMD <= ? ")
//				.append(" AND WORK_PARAM_TENDYMD >= ? ")
//				.append(" AND MK_FLG = 0 ");
//		
//		try
//		{
//			try
//			{
//				//prepareStatementにSQL文をセット
//				pstmt = con.prepareStatement(sql_Buff.toString());
//				
//				// preparedStatementに指定された値を設定
//				pstmt.setString(1, "FU_RH_VH_PWD_HEAD");
//				pstmt.setString(2, opeDate);
//				pstmt.setString(3, opeDate);
//				
//				// SQLを発行
//				rsltQuery = pstmt.executeQuery();
//				
//				if(rsltQuery.next())
//				{
//					String workParamSetteValue = rsltQuery.getString("WORK_PARAM_SETTE_VALUE") + UserId;
//				
//					return JCCModelCommon.getEncryptResultPassword(workParamSetteValue);
//				}
//				else
//				{
//					return null;
//				}
//			}
//			catch(SQLException e)
//			{
//				return null;
//			}
//			finally
//			{
//				// 資源を開放
//				if(rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if(pstmt != null)
//				{
//					pstmt.close();
//				}
//			}
//		}
//		catch(SQLException e)
//		{
//			return null;
//		}
		try
		{
			con =  JSYejbConnection.getConnection(ZM0321ETMsg.getTableName());
			
			// コネクションチェック
			if (con == null)
			{
				return null;
			}
			
			// SQL文の組み立て
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT WORK_PARAM_SETTE_VALUE FROM ")
					.append(ZM0321ETMsg.getTableName())
					.append(" WHERE ")
					.append(" WORK_PARAM_ID = ? ")
					.append(" AND WORK_PARAM_TSTAYMD <= ? ")
					.append(" AND WORK_PARAM_TENDYMD >= ? ")
					.append(" AND MK_FLG = 0 ");
			
			try
			{
				try
				{
					//prepareStatementにSQL文をセット
					pstmt = con.prepareStatement(sql_Buff.toString());
					
					// preparedStatementに指定された値を設定
					pstmt.setString(1, "FU_RH_VH_PWD_HEAD");
					pstmt.setString(2, opeDate);
					pstmt.setString(3, opeDate);
					
					// SQLを発行
					rsltQuery = pstmt.executeQuery();
					
					if(rsltQuery.next())
					{
						String workParamSetteValue = rsltQuery.getString("WORK_PARAM_SETTE_VALUE") + UserId;
					
						return JCCModelCommon.getEncryptResultPassword(workParamSetteValue);
					}
					else
					{
						return null;
					}
				}
				catch(SQLException e)
				{
					return null;
				}
				finally
				{
					// 資源を開放
					if(rsltQuery != null)
					{
						rsltQuery.close();
					}
					if(pstmt != null)
					{
						pstmt.close();
					}
				}
			}
			catch(SQLException e)
			{
				return null;
			}
		}
		finally
		{
			if (con != null)
			{
				CAANConnectionMgr.getInstance().close(con);
			}
		}
// OM-2017-0000488 2017/05/29 MOD END
	}
}
