/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ： // TODO
*   モジュール名    ：JKUejbGetTonaiSpeedCd
*   ソースファイル名：JKUejbGetTonaiSpeedCd.java
*   作成者          ：// TODO
*   日付            ：2021年04月13日
*＜機能概要＞
*   // TODO
*＜修正履歴＞
*   バージョン		修正日       	修正者      		修正内容
*   v53.0.0		2021/04/13		GDC)ニール		【ANK-3989-00-00】マンション光コンセント方式への５G・１０Gコース追加
*
**********************************************************************/
package eo.ejb.common;

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.CAANException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;

import eo.common.util.JKUCommonUtil;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.KK0891ETMsg;
import eo.ejb.common.db.JKKejbKK0891DBABase;
import eo.ejb.common.db.JKUejbKK0081DBABase;

public class JKUejbGetTonaiSpeedCd
{

	/**
	 * サービス契約番号から棟内速度コードを取得して返却します。
	 * @param svcKeiNo サービス契約番号
	 * @return String 棟内速度コード
	 */
	public static String getTonaiSpeedCd(String svcKeiNo) throws CAANException
	{
		// 運用日付取得
		String opeDate = JKUModelCommon.getOpeDate(new CAANMsg(), null);
		
		//サービス契約番号をキーにサービス契約を取得する
		CAANMsg kk0081Msg = new CAANMsg(KK0081ETMsg.class.getName());
		JKUejbKK0081DBABase baseKK0081 = new JKUejbKK0081DBABase();
		// サービス契約番号
		kk0081Msg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		// 予約適用年月日
		kk0081Msg.set(KK0081ETMsg.RSV_APLY_YMD, opeDate); 
		
		// カレントレコードを取得
		kk0081Msg = baseKK0081.findByCurrent(kk0081Msg);  

		if (null == kk0081Msg)
		{
			return null;
		}
		
		//提供方式契約番号をキーに提供方式契約を取得する
		CAANMsg kk0891Msg = new CAANMsg(KK0891ETMsg.class.getName());
		JKKejbKK0891DBABase baseKK0891 = new JKKejbKK0891DBABase();
		// 提供方式契約番号
		kk0891Msg.set(KK0891ETMsg.TK_HOSHIKI_KEI_NO, kk0081Msg.getString(KK0081ETMsg.TK_HOSHIKI_KEI_NO));
		// プライマリレコードを取得
		kk0891Msg = baseKK0891.findByCurrent(kk0891Msg);  

		if (null == kk0891Msg)
		{
			return null;
		}
		else
		{
			return kk0891Msg.getString(KK0891ETMsg.TONAI_SPEED_CD);
		}
	}
	
	/**
	 * 回線使用契約番号から棟内速度コードを取得して返却します。
	 * @param kaisenUseKeiNo 回線使用契約番号
	 * @return String 棟内速度コード
	 */
	public static String getTonaiSpeedCdKs(String kaisenUseKeiNo) throws CAANException
	{
		if (JKUCommonUtil.isNull(kaisenUseKeiNo))
	      {
	         return null;
	      }
	      
	      // コネクション
	      Connection con1 = null;
	      
	      // プリペアステートメント
	      PreparedStatement pstmt = null;
	      
	      // リザルトセット
	      ResultSet rsltQuery = null;
	   
	      
	      /******************** 
	       * SQL文の作成
	       ********************/
	      try
	      {
	         
	         //コネクション取得
	         con1 = JSYejbConnection.getConnection(KK0891ETMsg.getTableName());
	         
	         StringBuffer sql_Buff = new StringBuffer();
	         sql_Buff.append(" SELECT ")
	               .append("     KK0891.TONAI_SPEED_CD ")
	               .append(" FROM ")
	               .append("     KK_T_TK_HOSHIKI_KEI KK0891 ")
	               .append(" WHERE ")
	               .append("     KK0891.KAISEN_USE_KEI_NO = ? ")
	               .append(" AND KK0891.MK_FLG = '0' ")
	               .append(" ORDER BY KK0891.SVC_STA_YMD DESC ");
	         
	         
	         //prepareStatementにSQL文をセット
	         pstmt = con1.prepareStatement(sql_Buff.toString());
	         
	         int i = 1;
	         
	         // パラメータの設定(回線使用契約番号を指定)
	         CAANJDBCUtil.setParam(pstmt, i++, kaisenUseKeiNo);
	         
	         // ResultSetの取得
	         rsltQuery = pstmt.executeQuery();
	         
	         // 戻り値の判定
	         if (rsltQuery.next())
	         {
	            // 提供方式パターンコードを取得する
	            return rsltQuery.getString(KK0891ETMsg.TONAI_SPEED_CD);
	         }
	         return null;
	      }
	      catch (SQLException e)
	      {
	         return null;
	      }
	      finally
	      {
	         // 資源の解放
	         try
	         {
	            if (rsltQuery != null)
	            {
	               rsltQuery.close();
	            }
	            if (pstmt != null)
	            {
	               pstmt.close();
	            }
	            if (con1 != null)
	            {
	               CAANConnectionMgr.getInstance().close(con1);
	            }
	         }
	         catch(SQLException e)
	         {
	            return null;
	         }
	      }
	}
}
