/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：DKW06501SFLogic
 *	ソースファイル名：DKW06501SFLogic.java
 *	作成者			：FJ
 *	日付			：2016年10月07日
 *＜機能概要＞
 *	VIEWロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v27.00.00	2016/10/07	FJ)川島		【ANK-2870-00-00】【随時機能化案件】機器型番追加の機能化 新規作成
 *	v61.00.00	2023/04/05	FJ)中川		【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
 *
 **********************************************************************/

package eo.web.webview.DKW06501SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKScreenConst;
import eo.web.webview.mapping.DKSV0160_DKSV0160OPDBMapper;
import eo.web.webview.mapping.DKSV0161_DKSV0161OPDBMapper;

/**
 * DKW06501のビューロジック
 * @author FJ
 */


public class DKW06501SFLogic extends JCCWebBusinessLogic
{
	/**
	 * 機器種別初期値
	 */
	private static final String[][] KIKI_SBT_INIT_VALUES = {
// ANK-4315-00-00 MOD START
//		{JDKStrConst.VA, JDKStrConst.MODEM, JDKStrConst.STB, JDKStrConst.ONU, JDKStrConst.VONU, JDKStrConst.TAKINORT}	// 機器種別コード
//		, {"ｅｏ電話用ＶＡ", "モデム", "ＳＴＢ", "ＯＮＵ", "Ｖ−ＯＮＵ", "多機能ルーター"}								// 機器種別コード名称
		{JDKStrConst.VA, JDKStrConst.MODEM, JDKStrConst.STB, JDKStrConst.ONU, JDKStrConst.VONU, JDKStrConst.TAKINORT, JDKStrConst.HGW}	// 機器種別コード
		, {"ｅｏ電話用ＶＡ", "モデム", "ＳＴＢ", "ＯＮＵ", "Ｖ−ＯＮＵ", "多機能ルーター", "ＨＧＷ"}								// 機器種別コード名称
// ANK-4315-00-00 MOD END
	};
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 自画面IDを設定
		setSelfScreen();
		
		// DataBean初期化
		X31SDataBeanAccess bean = super.getServiceFormBean();
		initBean(bean);
		
		// 再生品機器型式登録初期表示サービス実行
		execDKSV0160(bean);
		
		return true;
	}
	
	/**
	 * 機器種別変更処理
	 * @return boolean
	 */
	public boolean chgKikiSbt()
	{
		// 自画面IDを設定
		setSelfScreen();
		
		// 再生品機器型式登録初期表示サービス実行
		X31SDataBeanAccess bean = super.getServiceFormBean();
		execDKSV0160(bean);
		
		// 再生品機器型式の初期化
		bean.sendMessageString(DKW06501SFConst.SAISEHN_KIKI_MODEL, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		return true;
	}
	
	/**
	 * 登録ボタン押下処理
	 * @return boolean
	 */
	public boolean add()
	{
		// 自画面IDを設定
		setSelfScreen();
		
		// 再生品機器型式登録サービス実行
		// パラメータ作成
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0161");
		
		// マッピングクラスのインスタンスを生成
		DKSV0161_DKSV0161OPDBMapper mapper = new DKSV0161_DKSV0161OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 上りマッピング
		// マッピングクラスの呼び出し
		mapper.setDKSV016101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(null != msgResult)
		{
			return true;
		}
		
		// 情報メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{"再生品機器型式の登録"});
		
		return true;
	}
	
	/**
	 * クリアボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean clr() throws Exception
	{
		// 初期表示処理を実行
		return init();
	}
	
	/**
	 * 自画面の遷移情報を設定する
	 */
	private void setSelfScreen()
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06501);
	}
	
	/**
	 * DataBean初期化処理
	 * @param bean DataBean
	 */
	private void initBean(X31SDataBeanAccess bean)
	{
		// 機器種別リストの初期化
		X31SDataBeanAccessArray kikiSbtList = bean.getDataBeanArray(DKW06501SFConst.KIKI_SBT_LIST);
		kikiSbtList.clearArray();
		X31SDataBeanAccess kikiSbt = kikiSbtList.addDataBean();
		
		// 選択ｉｎｄｅｘ
		kikiSbt.sendMessageString(DKW06501SFConst.SEL_IDX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// コード値リスト
		kikiSbt.sendMessage(DKW06501SFConst.CD_LIST_01, X31CWebConst.DATABEAN_CLEAR);
		// コード名リスト
		kikiSbt.sendMessage(DKW06501SFConst.NM_LIST_01, X31CWebConst.DATABEAN_CLEAR);
		
		int keta = String.valueOf(KIKI_SBT_INIT_VALUES[0].length).length();
		StringBuilder sb = null;
		
		for(int i = 0; i < KIKI_SBT_INIT_VALUES[0].length; i++)
		{
			sb = new StringBuilder();
			sb.append(JPCUtilCommon.fillZero(String.valueOf(i + 1), keta, false))
				.append(".");
			
			kikiSbt.sendMessageString(DKW06501SFConst.CD_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, KIKI_SBT_INIT_VALUES[0][i]);
			kikiSbt.sendMessageString(DKW06501SFConst.NM_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, sb.append(KIKI_SBT_INIT_VALUES[1][i]).toString());
		}
		
		// 再生品機器型式の初期化
		bean.sendMessageString(DKW06501SFConst.SAISEHN_KIKI_MODEL, X31CWebConst.DATABEAN_SET_VALUE, "");
	}
	
	/**
	 * 再生品機器型式登録初期表示サービス実行処理
	 * @param bean DataBean
	 */
	private void execDKSV0160(X31SDataBeanAccess bean)
	{
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { bean };
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0160");
		
		// マッピングクラスのインスタンスを生成
		DKSV0160_DKSV0160OPDBMapper mapper = new DKSV0160_DKSV0160OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 上りマッピング
		// マッピングクラスの呼び出し
		mapper.setDKSV016001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(null != msgResult)
		{
			return;
		}
		
		// 下りマッピング
		mapper.getDKSV016001SC(paramBean, outputMap);
	}
}