/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CRW01101SFLogic
 *	ソースファイル名：CRW01101SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年04月25日
 *＜機能概要＞
 *	メール転送先アドレス選択ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/
package eo.web.webview.CRW01101SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JPCModelConstant;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0091_CRSV0091OPDBMapper;

/**
 * メール転送先アドレス選択ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW01101SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示を行う。<br>
	 * <br>
	 * メール転送先アドレス選択（初期表示）サービスを呼び出し、
	 * メール転送先アドレス選択画面の初期表示を行います。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean init() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		JCCWebCommon.getScreenInfo(this);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0091");

		// マッピングクラス
		CRSV0091_CRSV0091OPDBMapper mapper = new CRSV0091_CRSV0091OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// マッピング処理（上り）
		mapper.setCRSV009101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// マッピング処理（下り）
		mapper.getCRSV009101SC(paramBean, outputMap);

		// 対応履歴メールアドレス帳一覧照会明細の中で、引継ぎ情報と一致するものはチェックボックスをチェック状態にする
		defaultCheck();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW01101);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW01101);

		return true;
	}

	/**
	 * 設定ボタン押下処理を行う。<br>
	 * <br>
	 * 対応履歴メールアドレス帳一覧照会明細からチェックがついたものを取得し、引継ぎ情報への設定を行います。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean choice() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 対応履歴メールアドレス帳一覧照会明細
		X31SDataBeanAccessArray mailAddressList = bean.getDataBeanArray(CRW01101SFConst.ECR0081B010CBSMSG1LIST);

		// 返却用メールアドレスリストをクリア
		bean.getDataBeanArray(CRW01101SFConst.RET_MAIL_LIST).clearArray();
		X31SDataBeanAccessArray retMailList = bean.getDataBeanArray(CRW01101SFConst.RET_MAIL_LIST);

		// 対応履歴メールアドレス帳一覧照会明細からチェックがついたものを取得し、引継ぎ情報に設定する。
		for (int i = 0; i < mailAddressList.getCount(); i++)
		{
			X31SDataBeanAccess mailAdressBean = mailAddressList.getDataBean(i);

			boolean checked = mailAdressBean.sendMessageBoolean(CRW01101SFConst.L0_SELECTED_BOOLEAN_01, X31CWebConst.DATABEAN_GET_VALUE);

			// チェックされている場合
			if (checked)
			{

				// 返却用メールアドレスリスト
				retMailList.addDataBean();
				X31SDataBeanAccess retMailBean = retMailList.getDataBean(retMailList.getCount() - 1);

				// 返却用対応履歴メールアドレス帳番号
				retMailBean.sendMessageString(CRW01101SFConst.L1_RET_TAIORRK_ML_ADBK_NO_02, X31CWebConst.DATABEAN_SET_VALUE,
						mailAdressBean.sendMessageString(CRW01101SFConst.L0_TAIORRK_ML_ADBK_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				// 返却用メールアドレス
				retMailBean.sendMessageString(CRW01101SFConst.L1_RET_MLAD_02, X31CWebConst.DATABEAN_SET_VALUE,
						mailAdressBean.sendMessageString(CRW01101SFConst.L0_MLAD_01, X31CWebConst.DATABEAN_GET_VALUE));
				// 返却用メールアドレス名
				retMailBean.sendMessageString(CRW01101SFConst.L1_RET_MLAD_NM_02, X31CWebConst.DATABEAN_SET_VALUE,
						mailAdressBean.sendMessageString(CRW01101SFConst.L0_MLAD_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
			}

		}

		// 返却用mapにarrayListをセット
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put(CRW01101SFConst.RET_MAIL_LIST, JCRWebCommon.getArrayList(bean.getDataBeanArray(CRW01101SFConst.RET_MAIL_LIST)));

		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JCRWebCommon.getScreenId(this), dataMap);

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}

	/**
	 * チェックボックスをデフォルトでONにする。<br>
	 * <br>
	 * 対応履歴メールアドレス帳一覧照会明細の中で、引継ぎ情報と一致するものは、
	 * チェックボックスをチェック状態にする。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	private void defaultCheck() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 引継用メールアドレスの要素数
		int paramCount = (Integer)bean.sendMessage(CRW01101SFConst.HKTGI_MLAD, X31CWebConst.DATABEAN_GET_COUNT);
		// 引継用メールアドレスを保持する
		String[] paramMailAd = new String[paramCount];

		for (int i = 0; i < paramCount; i++)
		{
			paramMailAd[i] = bean.sendMessageString(CRW01101SFConst.HKTGI_MLAD, X31CWebConst.DATABEAN_GET_VALUE, i);
		}

		// 対応履歴メールアドレス帳一覧照会明細
		X31SDataBeanAccessArray beanArray = bean.getDataBeanArray(CRW01101SFConst.ECR0081B010CBSMSG1LIST);
		// 対応履歴メールアドレス帳一覧照会明細の要素数
		int mailCount = beanArray.getCount();

		for (int i = 0; i < mailCount; i++)
		{
			// データタイプBean
			X31SDataBeanAccess dataTypeBaen = beanArray.getDataBean(i);
			String mailAd = dataTypeBaen.sendMessageString(CRW01101SFConst.L0_MLAD_01, X31CWebConst.DATABEAN_GET_VALUE);

			for (int j = 0; j < paramCount; j++)
			{
				if (mailAd.equals(paramMailAd[j]))
				{
					// チェックボックスをONにする
					dataTypeBaen.sendMessageBoolean(CRW01101SFConst.L0_SELECTED_BOOLEAN_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					break;
				}
			}

		}

	}

}
