/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：タブ設定情報更新ビューロジック
*   ソースファイル名：CRW09403SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年09月22日
*＜機能概要＞
*   タブ設定情報更新画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/22   FJ）早崎    新規作成
*
**********************************************************************/

package eo.web.webview.CRW09403SF;

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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW09403SF.CRW09403SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0042_CRSV0042OPDBMapper;
import eo.web.webview.mapping.CRSV0043_CRSV0043OPDBMapper;

/**
 * タブ設定情報更新ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW09403SFLogic 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>
	 * 初期表示を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean initUpd() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// 画面情報設定部品（JCRWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		JCRWebCommon.getScreenInfo(this);

		// (2)サービスフォームBeanの設定
		// サービスフォームBeanの項目をクリアする。
		bean.sendMessage(CRW09403SFConst.TEMP_IMPOSSIBLE_TAB_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW09403SFConst.TEMP_IMPOSSIBLE_TAB_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW09403SFConst.TEMP_POSSIBLE_TAB_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW09403SFConst.TEMP_POSSIBLE_TAB_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW09403SFConst.POSSIBLE_TAB).clearArray();
		bean.getDataBeanArray(CRW09403SFConst.IMPOSSIBLE_TAB).clearArray();
		bean.getDataBeanArray(CRW09403SFConst.FIRST_POSSIBLE_TAB).clearArray();
		bean.getDataBeanArray(CRW09403SFConst.FIRST_IMPOSSIBLE_TAB).clearArray();
		
		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0042");

		// マッピングクラス
		CRSV0042_CRSV0042OPDBMapper mapper = new CRSV0042_CRSV0042OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV004201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV004201SC(paramBean, outputMap);

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09403);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09403);
		
		return true;
	}
	
	/**
	 * 更新確認チェック処理.<br>
	 * 更新確認を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean confirmUpd() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// サービスフォームBeanの項目をクリアする。
		bean.getDataBeanArray(CRW09403SFConst.POSSIBLE_TAB).clearArray();
		bean.getDataBeanArray(CRW09403SFConst.IMPOSSIBLE_TAB).clearArray();
		
		String possible_tab_cd = bean.sendMessageString(CRW09403SFConst.TEMP_POSSIBLE_TAB_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String possible_tab_nm = bean.sendMessageString(CRW09403SFConst.TEMP_POSSIBLE_TAB_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String impossible_tab_cd = bean.sendMessageString(CRW09403SFConst.TEMP_IMPOSSIBLE_TAB_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String impossible_tab_nm = bean.sendMessageString(CRW09403SFConst.TEMP_IMPOSSIBLE_TAB_NM, X31CWebConst.DATABEAN_GET_VALUE);
	
		

		if(!("".equals(possible_tab_cd)))
		{
			String[] possible_tab_cd_ary = possible_tab_cd.split(",");
			String[] possible_tab_nm_ary = possible_tab_nm.split(",");
			X31SDataBeanAccessArray possible_tab = bean.getDataBeanArray(CRW09403SFConst.POSSIBLE_TAB);
			possible_tab.clearArray();
			
				for (int i = 0; i < possible_tab_cd_ary.length; i++)
				{
					possible_tab.addDataBean();
					X31SDataBeanAccess poBean =  possible_tab.getDataBean(i);
					poBean.sendMessageString(CRW09403SFConst.L1_POSSIBLE_TAB_CD_02, X31CWebConst.DATABEAN_SET_VALUE,possible_tab_cd_ary[i]);
					poBean.sendMessageString(CRW09403SFConst.L1_POSSIBLE_TAB_NM_02, X31CWebConst.DATABEAN_SET_VALUE,possible_tab_nm_ary[i]);
				}
			}
			
		if(!("".equals(impossible_tab_cd)))
		{
			String[] impossible_tab_cd_ary = impossible_tab_cd.split(",");
			String[] impossible_tab_nm_ary = impossible_tab_nm.split(",");
			X31SDataBeanAccessArray impossible_tab = bean.getDataBeanArray(CRW09403SFConst.IMPOSSIBLE_TAB);
			impossible_tab.clearArray();
			
			for (int i = 0; i < impossible_tab_cd_ary.length; i++)
			{
				impossible_tab.addDataBean();
				X31SDataBeanAccess imBean =  impossible_tab.getDataBean(i);
				imBean.sendMessageString(CRW09403SFConst.L2_IMPOSSIBLE_TAB_CD_03, X31CWebConst.DATABEAN_SET_VALUE,impossible_tab_cd_ary[i]);
				imBean.sendMessageString(CRW09403SFConst.L2_IMPOSSIBLE_TAB_NM_03, X31CWebConst.DATABEAN_SET_VALUE,impossible_tab_nm_ary[i]);
			}
		}
		
		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0043");

		// マッピングクラス
		CRSV0043_CRSV0043OPDBMapper mapper = new CRSV0043_CRSV0043OPDBMapper();

		// マッピング処理（上り）
		mapper.setADDDELTABCTRL(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// なし。
		
		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09404);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09404);

		return true;
	}
	
	/**
	 * 確定ボタン押下.<br>
	 * 更新する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean fix() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0043");

		// マッピングクラス
		CRSV0043_CRSV0043OPDBMapper mapper = new CRSV0043_CRSV0043OPDBMapper();

		// マッピング処理（上り）
		mapper.setADDDELTABCTRL(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}
	
	
	/**
	 * キャンセルボタン押下.<br>
	 * タブ設定情報登録画面に戻る。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean cancel() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09403);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09403);

		return true;
	}

}
