/**********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CHW01108SFLogic
 *   ソースファイル名：CHW01108SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年11月11日
 *＜機能概要＞
 *   金庫詳細照会画面のビューロジック部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/11/11               新規作成
 *
 **********************************************************************/
package eo.web.webview.CHW01108SF;

import java.util.HashMap;

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.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.mapping.CHSV0036_CHSV0036OPDBMapper;

/**
 * 金庫詳細照会のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW01108SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(金庫詳細照会画面情報取得) */
	private static final String USECASE_ID_CHSV0036 = "CHSV0036";

	/**
	 * 金庫詳細照会画面の初期表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを判定して画面IDに対応する初期表示処理を呼び出す
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01108))
		{
			initDtlScreen();
		}

		return true;
	}

	/**
	 * モーダル反映画面に遷移して画面を閉じます。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean close() throws Exception
	{
		// 遷移先画面IDを取得し、子画面を閉じる共通処理を呼出す
		return JCHPageTransferUtil.closeTransfer(this, JCCWebCommon.getScreenId(this));
	}

	/**
	 * 金庫詳細照会画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initDtlScreen() throws Exception
	{

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0036);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0036_CHSV0036OPDBMapper mapper = new CHSV0036_CHSV0036OPDBMapper();

		mapper.setCHSV003601SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // ECH0191A010:金庫一意照会
		mapper.setCHSV003602SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // ECH0191B012:移動金庫一覧照会＿移動元
		mapper.setCHSV003603SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // ECH0191B012:移動金庫一覧照会＿移動先

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV003601SC(paramBeans, outputMap);
		mapper.getCHSV003602SC(paramBeans, outputMap);
		mapper.getCHSV003603SC(paramBeans, outputMap);

		// 移動元金庫情報の制御値
		this.setCtrlValueInIdoMtIcrn(paramBeans);

		return;
	}

	/**
	 * 金庫詳細照会一覧情報の制御値を設定します。 <br>
	 * 
	 * @param bean 金庫詳細照会Bean
	 */
	private void setCtrlValueInIdoMtIcrn(X31SDataBeanAccess[] bean)
	{
		// 移動元情報
		X31SDataBeanAccessArray idoMtIcrnInfo = bean[0].getDataBeanArray(CHW01108SFConst.IDO_MT_INFO);
		for (int idx = 0; idx < idoMtIcrnInfo.getCount().intValue(); idx++)
		{
			X31SDataBeanAccess subBean = idoMtIcrnInfo.getDataBean(idx);
			// 表示制御値
			String dspCntrlValue1 = JACStrConst.DSP_BG_COLOR_EVEN;
			if (idx % 2 == 0)
			{
				dspCntrlValue1 = JACStrConst.DSP_BG_COLOR_ODD;
			}
			subBean.sendMessageString(CHW01108SFConst.DSP_CNTRL_IDO_MT_VALUE_02, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue1);

		}

		// 移動先情報
		X31SDataBeanAccessArray idoSkIcrnInfo = bean[0].getDataBeanArray(CHW01108SFConst.IDO_SK_INFO);
		for (int idx = 0; idx < idoSkIcrnInfo.getCount().intValue(); idx++)
		{
			X31SDataBeanAccess subBean = idoSkIcrnInfo.getDataBean(idx);
			// 表示制御値
			String dspCntrlValue2 = JACStrConst.DSP_BG_COLOR_EVEN;
			if (idx % 2 == 0)
			{
				dspCntrlValue2 = JACStrConst.DSP_BG_COLOR_ODD;
			}
			subBean.sendMessageString(CHW01108SFConst.DSP_CNTRL_IDO_SK_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue2);

		}
	}

}
