/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：顧客契約
 *	モジュール名	：KKW08608SFLogic
 *	ソースファイル名：KKW08608SFLogic.java
 *	作成者			：FJ
 *	日付			：2012年09月08日
 *＜機能概要＞
 *	サービスエリア警告マスタ削除確認画面機能のビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v4.00.00	2012/09/08	FJ）富士通 	新規作成
 *
 **********************************************************************/
package eo.web.webview.KKW08608SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW08605SF.KKW08605SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0618_KKSV0618OPDBMapper;
import eo.web.webview.mapping.KKSV0619_KKSV0619OPDBMapper;

/**
 * <dd>クラス名：サービスエリア警告マスタ削除確認ビューロジック
 * 
 * @version 1.0 2012/09/08
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW08608SFLogic extends JCCWebBusinessLogic
{

	/**
	 * サービスエリア警告マスタ削除画面初期表示処理
	 * 
	 * @return
	 * @throws Exception
	 */
	public boolean actionInit() throws Exception
	{
		// 共有Bean アクセスクラスの取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,X31CWebConst.DATABEAN_GET_VALUE);

		String screenName = "";

		// 遷移先画面IDから、行う表示処理を決定する
		if (JKKScreenConst.SCREEN_ID_KKW08608.equals(screenId))
		{
			actionInitKKW08608();
			screenName = JKKScreenConst.SCREEN_NAME_KKW08608;
		}
		else if (JKKScreenConst.SCREEN_ID_KKW08609.equals(screenId))
		{
			screenName = JKKScreenConst.SCREEN_NAME_KKW08609;
		}

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, screenName);

		return true;
	}

	/**
	 * 「戻る」ボタン押下時処理
	 * 
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception
	 */
	public boolean actionRn() throws Exception
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得し、設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 確定ボタン押下処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception
	 */
	public boolean actionFix() throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap  = null;
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap  = null;
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = null;

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		paramMap  = new HashMap<String, Object>(); // パラメタマップ生成
		inputMap  = new HashMap<String, Object>(); // インプットマップ生成
		outputMap = new HashMap<String, Object>(); // アウトプットマップ生成

		// マッピング用Bean作成
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0618);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0618OP);

		// マッピング処理
		KKSV0618_KKSV0618OPDBMapper mapper = new KKSV0618_KKSV0618OPDBMapper();
		mapper.setJKKSvcAreaKkkuMstCC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);

		// サービス呼出処理
		invokeService(paramMap, inputMap, outputMap);

		// メッセージ表示処理
		String[] str =
		{
				"サービスエリア警告マスタ情報の更新"
		};
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, str);

		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW08609);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW08609);

		return true;
	}


	/**
	 * 初期表示処理
	 * 
	 * @param svcFormBean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void actionInitKKW08608() throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap  = null;
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap  = null;
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = null;

		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		paramMap  = new HashMap<String, Object>(); // パラメタマップ生成
		inputMap  = new HashMap<String, Object>(); // インプットマップ生成
		outputMap = new HashMap<String, Object>(); // アウトプットマップ生成

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0619);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0619OP);

		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		// 引継ぎデータ取得
		HashMap<String, Object> hikiMap = JCCWebCommon.getScreenInfo(this);
		ArrayList<HashMap<String, Object>> dataArray = (ArrayList<HashMap<String, Object>>)hikiMap.get(KKW08605SFConst.SVC_AREA_KKKU_HKTG_LIST);
		HashMap<String, Object> dataMap = dataArray.get(0);

		// 引継ぎ情報よりサービス提供エリア警告対象住所番号を取得する
		setString(svcFormBean, KKW08608SFConst.SVTA_KKKU_TAIAD_NO, (String)dataMap.get(KKW08605SFConst.SVTA_KKKU_TAIAD_NO_01));

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0619_KKSV0619OPDBMapper mapper = new KKSV0619_KKSV0619OPDBMapper();
		// 更新画面初期表示（機能コード：４）
		mapper.setKKSV061901CC(paramBean, inputMap, "4");
		// サービスエリア警告マスタ削除画面_初期表示サービス実行
		invokeService(paramMap, inputMap, outputMap);
		mapper.getKKSV061901CC(paramBean, outputMap);
		// 取得情報の下りマッピング

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// 画面情報(テキスト)編集処理
		editTextForm(svcFormBean);
	}

	/**
	 * 画面表示編集処理を行う
	 * @param svcFormBean
	 */
	private void editTextForm(X31SDataBeanAccess svcFormBean)
	{

		X31SDataBeanAccessArray svc_area_kkku_list = svcFormBean.getDataBeanArray(KKW08608SFConst.SVC_AREA_KKKU_LIST);

		X31SDataBeanAccess svc_area_kkku_subbean = svc_area_kkku_list.getDataBean(0);

		// 料金グループ
		setString(svcFormBean, KKW08608SFConst.PRC_GRP_NM,          getString(svc_area_kkku_subbean, KKW08608SFConst.PRC_GRP_CD_NM_02));
		// 料金プラン
		setString(svcFormBean, KKW08608SFConst.PCRS_NM,             getString(svc_area_kkku_subbean, KKW08608SFConst.PPLAN_CD_NM_02));
		// チェック種別
		setString(svcFormBean, KKW08608SFConst.CHECK_SBT_NM,        getString(svc_area_kkku_subbean, KKW08608SFConst.CHK_SBT_CD_NM_02));
		// 郵便番号
		setString(svcFormBean, KKW08608SFConst.PCD,                 JPCUtilCommon.hyhunPcd(getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TG_PCD_02)));
		// 住所コード
		setString(svcFormBean, KKW08608SFConst.AD_CD,               JPCUtilCommon.hyhunAdCd(getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TAIAD_CD_02)));
		// 都道府県名
		setString(svcFormBean, KKW08608SFConst.STATE_NM,            getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TG_STATE_NM_02));
		// 市区町村名
		setString(svcFormBean, KKW08608SFConst.CITY_NM,             getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TG_CITY_NM_02));
		// 大字通称名
		setString(svcFormBean, KKW08608SFConst.OAZTSU_NM,           getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TG_OAZTSU_NM_02));
		// 字丁目名
		setString(svcFormBean, KKW08608SFConst.AZCHO_NM,            getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TG_AZCHO_NM_02));
		// 番地号
		setString(svcFormBean, KKW08608SFConst.BNCHIGO,             getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TG_BNCHIGO_02));
		// 自動照査チェック
		setString(svcFormBean, KKW08608SFConst.AUTO_SHOSA_CHECK_NM, getString(svc_area_kkku_subbean, KKW08608SFConst.AUTO_SHOSA_CHK_TG_CD_NM_02));
		// 適用開始年月日
		setString(svcFormBean, KKW08608SFConst.TSTAYMD,             JPCUtilCommon.formatDate(getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TAIAD_TSTAYMD_02)));
		// 適用終了年月日
		setString(svcFormBean, KKW08608SFConst.TENDYMD,             JPCUtilCommon.formatDate(getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_TAIAD_TENDYMD_02)));
		// 備考
		setString(svcFormBean, KKW08608SFConst.BIKO,                getString(svc_area_kkku_subbean, KKW08608SFConst.SVTA_KKKU_RSN_MEMO_02));
	}

	/**
	 * サービスエリア警告マスタメンテ一覧照会へ遷移
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception
	 */
	public boolean actionIchiranShokai() throws Exception
	{
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW08601);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW08601);

		return true;
	}

	/**
	 * beanからキーの値を取得する
	 * @param bean
	 * @param key
	 * @return
	 */
	private String getString(X31SDataBeanAccess bean, String key)
	{
		return bean.sendMessageString(key, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * beanにキーと値を設定する
	 * 
	 * @param bean
	 * @param key
	 * @param val
	 */
	private void setString(X31SDataBeanAccess bean, String key, String val)
	{
		bean.sendMessageString(key, X31CWebConst.DATABEAN_SET_VALUE, val);
	}

}
