/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCRCtrlTnInfo
*   ソースファイル名：JCRCtrlTnInfo.java
*   作成者          ：富士通
*   日付            ：2012年03月06日
*＜機能概要＞
*   宅内機器連携（抽象）コマンド発行部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/03/06   FJ) 富士通  新規作成
*
**********************************************************************/
package eo.ejb.common;

import java.sql.Connection;
import java.util.Map;

import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

/**
 * 宅内機器一意データ引継処理部品クラスです。
 * @author 富士通
 */
public abstract class JCRCtrlTnInfo
{
	/**
	 * 1:宅内管理システム
	 */
	private static final String TN_SYSTEM = "1";

	/**
	 * 2:スタブ
	 */
	private static final String TN_STUB = "2";

	/**
	 * サービスIF_ID
	 */
	public static final String TEMPLATEID;

	/**
	 * 識別コード
	 */
	public static final String IDENTIFYCD;

	/**
	 * ステータス
	 */
	public static final String STATUS;

	/**
	 * オペレータ_ID
	 */
	public static final String OPERATORID;

	/**
	 * 運用日付
	 */
	public static final String OPERATEDATE;

	/**
	 * 運用日時
	 */
	public static final String OPERATEDATETIME;

	/**
	 * 権限制御用項目
	 */
	public static final String AC_GROUP_CD;

	/**
	 * 機能コード
	 */
	public static final String FUNC_CODE;

	/**
	 * 宅内機器一意照会条件明細
	 */
	public static final String ECRA0010001CONDITIONLIST;

	/**
	 * ＫＥＹ＿宅内機器型式コード
	 */
	public static final String KEY_TK_MDL_CD;

	/**
	 * ＫＥＹ＿機器製造番号
	 */
	public static final String KEY_KK_SEIZO_NO;

	/**
	 * ＫＥＹ＿ＳＴＢＩＤ
	 */
	public static final String KEY_STBID;

	/**
	 * ＫＥＹ＿宅内機器照会種別コード
	 */
	public static final String KEY_TK_SHOKAI_SBT_CD;

	/**
	 * エラーレベル
	 */
	public static final String ERROR_LEVEL;

	/**
	 * リターンコード
	 */
	public static final String RETURN_CD;

	/**
	 * リターンメッセージ
	 */
	public static final String RETURN_MESSAGE;

	/**
	 * 宅内機器一意照会明細
	 */
	public static final String ECRA0010001CBSMSG1LIST;

	/**
	 * 宅内機器一意照会明細エラー
	 */
	public static final String ECRA0010001CONDITIONLIST_ERR;

	/**
	 * ＫＥＹ＿宅内機器型式コードエラー
	 */
	public static final String KEY_TK_MDL_CD_ERR;

	/**
	 * ＫＥＹ＿機器製造番号エラー
	 */
	public static final String KEY_KK_SEIZO_NO_ERR;

	/**
	 * ＫＥＹ＿ＳＴＢＩＤエラー
	 */
	public static final String KEY_STBID_ERR;

	/**
	 * ＫＥＹ＿宅内機器照会種別コードエラー
	 */
	public static final String KEY_TK_SHOKAI_SBT_CD_ERR;

	/**
	 * 宅内機器一意照会明細エラー
	 */
	public static final String ECRA0010001CBSMSG1LIST_ERR;

	/**
	 * 宅内機器型式コード
	 */
	public static final String TK_MDL_CD;

	/**
	 * 機器製造番号
	 */
	public static final String KK_SEIZO_NO;

	/**
	 * 宅内機器ステータス
	 */
	public static final String TK_STAT;

	/**
	 * 所有コード
	 */
	public static final String SHOYU_CD;

	/**
	 * 管理場所識別コード
	 */
	public static final String KNRI_PLC_SKBT_CD;

	/**
	 * 管理場所コード
	 */
	public static final String KNRI_PLC_CD;

	/**
	 * 管理場所棚コード
	 */
	public static final String KNRI_PLC_SLF_CD;

	/**
	 * 宅内機器基本Ｔ更新日付
	 */
	public static final String KIHON_UPD_DTTM;

	/**
	 * ＳＴＢＩＤ
	 */
	public static final String STBID;

	/**
	 * 宅内機器ＳＴＢＴ更新日付
	 */
	public static final String STBT_UPD_DTTM;

	/**
	 * 宅内機器型式コードエラーコード
	 */
	public static final String TK_MDL_CD_ERR_CD;

	/**
	 * 機器製造番号エラーコード
	 */
	public static final String KK_SEIZO_NO_ERR_CD;

	/**
	 * 宅内機器ステータスエラーコード
	 */
	public static final String TK_STAT_ERR_CD;

	/**
	 * 所有コードエラーコード
	 */
	public static final String SHOYU_CD_ERR_CD;

	/**
	 * 管理場所識別コードエラーコード
	 */
	public static final String KNRI_PLC_SKBT_CD_ERR_CD;

	/**
	 * 管理場所コードエラーコード
	 */
	public static final String KNRI_PLC_CD_ERR_CD;

	/**
	 * 管理場所棚コードエラーコード
	 */
	public static final String KNRI_PLC_SLF_CD_ERR_CD;

	/**
	 * 宅内機器基本Ｔ更新日付エラーコード
	 */
	public static final String KIHON_UPD_DTTM_ERR_CD;

	/**
	 * ＳＴＢＩＤエラーコード
	 */
	public static final String STBID_ERR_CD;

	/**
	 * 宅内機器ＳＴＢＴ更新日付エラーコード
	 */
	public static final String STBT_UPD_DTTM_ERR_CD;

	/**
	 * サービス_ID
	 */
	public static final String SERVICEID;

	/**
	 * 静的初期化子です。
	 * 項目名定数の値を設定します。
	 */
	static
	{
		TEMPLATEID = "templateID";
		IDENTIFYCD = "identifyCD";
		STATUS = "status";
		OPERATORID = "operatorID";
		OPERATEDATE = "operateDate";
		OPERATEDATETIME = "operateDatetime";
		AC_GROUP_CD = "ac_group_cd";
		FUNC_CODE = "func_code";
		ECRA0010001CONDITIONLIST = "ECRA0010001ConditionList";
		KEY_TK_MDL_CD = "key_tk_mdl_cd";
		KEY_KK_SEIZO_NO = "key_kk_seizo_no";
		KEY_STBID = "key_stbid";
		KEY_TK_SHOKAI_SBT_CD = "key_tk_shokai_sbt_cd";
		ERROR_LEVEL = "error_level";
		RETURN_CD = "return_Cd";
		RETURN_MESSAGE = "return_Message";
		ECRA0010001CBSMSG1LIST = "ECRA0010001CBSMsg1List";
		KEY_TK_MDL_CD_ERR = "key_tk_mdl_cd_err";
		KEY_KK_SEIZO_NO_ERR = "key_kk_seizo_no_err";
		KEY_STBID_ERR = "key_stbid_err";
		KEY_TK_SHOKAI_SBT_CD_ERR = "key_tk_shokai_sbt_cd_err";
		ECRA0010001CONDITIONLIST_ERR = "ECRA0010001ConditionList_err";
		ECRA0010001CBSMSG1LIST_ERR = "ECRA0010001CBSMsg1List_err";
		TK_MDL_CD = "tk_mdl_cd";
		KK_SEIZO_NO = "kk_seizo_no";
		TK_STAT = "tk_stat";
		SHOYU_CD = "shoyu_cd";
		KNRI_PLC_SKBT_CD = "knri_plc_skbt_cd";
		KNRI_PLC_CD = "knri_plc_cd";
		KNRI_PLC_SLF_CD = "knri_plc_slf_cd";
		KIHON_UPD_DTTM = "kihon_upd_dttm";
		STBID = "stbid";
		STBT_UPD_DTTM = "stbt_upd_dttm";
		TK_MDL_CD_ERR_CD = "tk_mdl_cd_err_cd";
		KK_SEIZO_NO_ERR_CD = "kk_seizo_no_err_cd";
		TK_STAT_ERR_CD = "tk_stat_err_cd";
		SHOYU_CD_ERR_CD = "shoyu_cd_err_cd";
		KNRI_PLC_SKBT_CD_ERR_CD = "knri_plc_skbt_cd_err_cd";
		KNRI_PLC_CD_ERR_CD = "knri_plc_cd_err_cd";
		KNRI_PLC_SLF_CD_ERR_CD = "knri_plc_slf_cd_err_cd";
		KIHON_UPD_DTTM_ERR_CD = "kihon_upd_dttm_err_cd";
		STBID_ERR_CD = "stbid_err_cd";
		STBT_UPD_DTTM_ERR_CD = "stbt_upd_dttm_err_cd";
		SERVICEID = "serviceID";
	}

	/**
	 * 宅内機器連携の本番／スタブ切り替え処理
	 * 
	 * @return インスタンス
	 */
	public static JCRCtrlTnInfo getInstance()
	{
		/**
		 * 宅内管理システム接続モードフラグ
		 */
		String str_flag = JCCModelCommon.getApplicationConst("TN_CONNECTION_MODE");

		if(str_flag.equals(TN_SYSTEM))
		{
			return JCRCtrlTnInfoImpl.getInstance();
		}
		else if(str_flag.equals(TN_STUB))
		{
			return JCRCtrlTnInfoStubImpl.getInstance();
		}
		else
		{
			return null;
		}
	}

	/**
	 * 宅内機器連携用
	 * 
	 * @param serviceMap サービスマップハッシュテーブル
	 * @return サービスマップ戻り値
	 * @throws Exception
	 */
	public abstract Map ctrlTnInfo_CRA0001(Map serviceMap) throws Exception;

	public abstract void setInContext(AgentDispatchContext inContext);

	public abstract void setConnection(Connection con);
}
