/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKKA0030001TPMA
*	ソースファイル名：JEKKA0030001TPMA.java
*	作成者			：
*	日付			：2013年12月17日
*＜機能概要＞
*	MVNOサービス契約お客様変更独自処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v8.00.00	2013/12/14	FJ）稲岡	【ANK-1584-00-00】対応 L2-MVNO(本体)
********************************************************************************/
package eo.ejb.cbs.mainproc;

import java.sql.Connection;
import java.util.Hashtable;
import java.util.Map;

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.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbs.cbsmsg.EKKA0030001CBSMsg;
import eo.ejb.common.JKKCtrlMvnoSvcKeiInfo;

public class JEKKA0030001TPMA implements TemplateMainHandler {

	/**
	 * コマンド実行結果
	 */
	private static final String CMD_RESULT_CD = "CMD_RESULT_CD";
	
	/**
	 * コマンド実行結果（エラー）
	 */
	private static final String CMD_ERROR_MESSAGE = "CMD_ERROR_MESSAGE";
	
	// コマンド実行部品用
	@SuppressWarnings("unchecked")
	public static void ctrlTnInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		Hashtable<String, Object > serviceMap = new Hashtable<String, Object>();
		
		// オペレータ_ID
		String operatorId = inCBSMsg.getString(EKKA0030001CBSMsg.OPERATORID);
		if(operatorId != null)
		{
			serviceMap.put(EKKA0030001CBSMsg.OPERATORID, operatorId);
		}
		else
		{
			serviceMap.put(EKKA0030001CBSMsg.OPERATORID, "");
		}
		
		// 運用日時
		String operatoDateTime = inCBSMsg.getString(EKKA0030001CBSMsg.OPERATEDATETIME);
		if(operatoDateTime != null)
		{
			serviceMap.put(EKKA0030001CBSMsg.OPERATEDATETIME, operatoDateTime);
		}
		else
		{
			serviceMap.put(EKKA0030001CBSMsg.OPERATEDATETIME, "");
		}
		
		// サービス契約番号
		String svcKeiNo = inCBSMsg.getString(EKKA0030001CBSMsg.SVC_KEI_NO);
		if(svcKeiNo != null)
		{
			serviceMap.put(EKKA0030001CBSMsg.SVC_KEI_NO, svcKeiNo);
		}
		else
		{
			serviceMap.put(EKKA0030001CBSMsg.SVC_KEI_NO, "");
		}
		
		// SYSID
		String sysid = inCBSMsg.getString(EKKA0030001CBSMsg.SYSID);
		if(sysid != null)
		{
			serviceMap.put(EKKA0030001CBSMsg.SYSID, sysid);
		}
		else
		{
			serviceMap.put(EKKA0030001CBSMsg.SYSID, "");
		}
		
		// コマンド発行部品のスタブ用、
		JKKCtrlMvnoSvcKeiInfo instance = JKKCtrlMvnoSvcKeiInfo.getInstance();
		
		// テーブルのコネクションを取得して、部品に受け渡しを行う。
		Connection con = JSYejbConnection.getConnection("MV_T_SVC_KEI");
		instance.setConnection(con);
		
		try
		{
			// MVNO連携
			Map ret = instance.ctrlMvnoInfo_KKA0003(serviceMap);
			
//			// エラーレベルが000以外の場合
//			// 000:正常
//			// 400:警告
//			// 888:異常(処理：中断　トランザクション：ロールバック）
//			// 988:フレームワーク異常
//			if(null != ret.get(EKKA0030001CBSMsg.ERROR_LEVEL) && !((String)ret.get(EKKA0030001CBSMsg.ERROR_LEVEL)).equals("000")) {
//				inCBSMsg.set(EKKA0030001CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
//				inCBSMsg.set(EKKA0030001CBSMsg.RETURN_MESSAGE, (String)ret.get(CMD_ERROR_MESSAGE));
//			}
//			else
//			{
//				// コマンド実行結果判定
//				if(null != ret.get(CMD_RESULT_CD))
//				{
//					// 結果コード"1":XML電文処理エラー発生, SOAP例外の場合
//					if(ret.get(CMD_RESULT_CD).equals("1"))
//					{
//						inCBSMsg.set(EKKA0030001CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
//						inCBSMsg.set(EKKA0030001CBSMsg.RETURN_MESSAGE, (String)ret.get(CMD_ERROR_MESSAGE));
//					}
//					else if(ret.get(CMD_RESULT_CD).equals("0"))
//					{
//						// リターンコードを判定しステータスをセットする。
//						if(null != ret.get("return_Cd"))
//						{
//							// "0000":正常
//							if("0000".equals((String)ret.get(EKKA0030001CBSMsg.RETURN_CD)))
//							{
//								// ステータス(0:正常終了)セットする。
//								inCBSMsg.set(ECRA0010001CBSMsg.STATUS, StatusCodes.NORMAL_END);
//							}
//							// "1000":単項目チェックエラー
//							else if("1000".equals((String)ret.get(EKKA0030001CBSMsg.RETURN_CD)))
//							{
//								// ステータス(1000:単項目チェックエラー)セットする。
//								inCBSMsg.set(ECRA0010001CBSMsg.STATUS, StatusCodes.SINGLEDATA_ERR);
//								
//								// 単項目チェックエラー発生項目設定
//								// E1:必須チェック
//								// E2:属性チェック
//								// E3:桁数チェック
//								if(ret.get("svc_kei_no_err") != null)
//								{
//									inCBSMsg.set(EKKA0030001CBSMsg.SVC_KEI_NO_ERR, (String)ret.get(EKKA0030001CBSMsg.SVC_KEI_NO_ERR));
//								}
//								
//								if(ret.get("sysid_err") != null)
//								{
//									inCBSMsg.set(EKKA0030001CBSMsg.SYSID_ERR, (String)ret.get(EKKA0030001CBSMsg.SYSID_ERR));
//								}
//							}
//							
//						}
//						
//						// リターンメッセージ
//						String return_message = (String)ret.get(EKKA0030001CBSMsg.RETURN_MESSAGE);
//						if(return_message != null)
//						{
//							inCBSMsg.set(EKKA0030001CBSMsg.RETURN_MESSAGE, return_message);
//						}
//						else
//						{
//							inCBSMsg.set(EKKA0030001CBSMsg.RETURN_MESSAGE, "");
//						}
//						
//						// SOAPレスポンス（文字列）
//						String soap_response = (String)ret.get(EKKA0030001CBSMsg.SOAP_RESPONSE);
//						if(soap_response != null)
//						{
//							inCBSMsg.set(EKKA0030001CBSMsg.SOAP_RESPONSE, soap_response);
//						}
//						else
//						{
//							inCBSMsg.set(EKKA0030001CBSMsg.SOAP_RESPONSE, "");
//						}
//					}
//				}
//			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
//			inCBSMsg.set(EKKA0030001CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
//			inCBSMsg.set(EKKA0030001CBSMsg.RETURN_MESSAGE, e.getMessage());
		}
		finally
		{
			if(con != null)
			{
				CAANConnectionMgr.getInstance().close(con);
			}
		}
	}
}
