/*********************************************************************
* All Rights reserved, Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：ZMW11101SFLogic
*   ソースファイル名：ZMW11101SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年08月03日
*＜機能概要＞
*   住所補正対象更新のビューロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/08/03   FJ）荒田    新規作成
*   v3.00       2011/01/31   FJ) 日野    【UIZ-0004-00-00】視認性向上No.4（メッセージ領域背景黄色）対応
*
**********************************************************************/

package eo.web.webview.ZMW11101SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

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.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0043_ZMSV0043OPDBMapper;


/**
 * 住所補正対象更新のビューロジッククラスです。
 * @author 909282
 *
 */
@SuppressWarnings("serial")
public class ZMW11101SFLogic extends JCCWebBusinessLogic
{
	
	/** メッセージID EKB0370--I  */
	private static final String MESSAGE_ID_370 = JPCOnlineMessageConstant.EKB0370__I;
	
	/** メッセージID EKB0380--I  */
	private static final String MESSAGE_ID_380 = JPCOnlineMessageConstant.EKB0380__I;
	
	/** infoメッセージ置換文字列  */
	private static final String[] INFO_MESSAGE_VALUE = {"住所補正対象の更新"};
	
	/** 機能コード１  */
	private static final String FUNC_CD_1 = JPCModelConstant.FUNC_CD_1;
	
	/** 機能コード２  */
	private static final String FUNC_CD_2 = JPCModelConstant.FUNC_CD_2;
	
	/**
	 * 住所補正対象更新初期表示処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean init() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// セッション情報の取得
		if(JZMWebCommon.getScreenInfo(this) == null)
		{
			setBackScreenId(commonBean, true);
			return true;
		}
		
		// 行スタイルクラスの設定
		JZMWebCommon.setRowStyleClass(bean,
				ZMW11101SFConst.CHOISE_AD_APLY_HOSEI,
				ZMW11101SFConst.ROW_STYLE_CLASS_01);

		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11101);
		
		return true;
	}
	
	
	/**
	 * 更新確認ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean updCfm() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();  
		
		// 適用開始年月日
		String  ymd = JPCUtilCommon.concatYmd(
				JZMWebCommon.getSendMessageString(bean, ZMW11101SFConst.HOSEI_TG_YMD_YEAR),
				JZMWebCommon.getSendMessageString(bean, ZMW11101SFConst.HOSEI_TG_YMD_MON),
				JZMWebCommon.getSendMessageString(bean, ZMW11101SFConst.HOSEI_TG_YMD_DAY));
		JZMWebCommon.setSendMessageString(bean, ZMW11101SFConst.HOSEI_TG_YMD, ymd);
		
		// ユースケース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>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV43);

		// マッピングクラス
		ZMSV0043_ZMSV0043OPDBMapper mapper = new ZMSV0043_ZMSV0043OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV004301CC(paramBean, dataMap, FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// メッセージの設定
		JZMWebCommon.setMessageInfo(this, MESSAGE_ID_370, INFO_MESSAGE_VALUE);
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11102);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11102);
		
		return true;
	}
	
	/**
	 * 戻るボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean back() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE , JZMWebConst.BLANK);
		
		return true;
	}
	
	/**
	 * 確定ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws 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>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV43);

		// マッピングクラス
		ZMSV0043_ZMSV0043OPDBMapper mapper = new ZMSV0043_ZMSV0043OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV004301CC(paramBean, dataMap, FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// メッセージの設定
		JZMWebCommon.setMessageInfo(this, MESSAGE_ID_380, INFO_MESSAGE_VALUE);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11103);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW11103);
		
		return true;
	}
	
	/**
	 * 修正ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean shusei() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW11101);
		
		return true;
	}
	
	/**
	 * 完了ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fin() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// HashMapを設定する
		JZMWebCommon.setScreenInfo(this, this.getGamenId(), new HashMap<String, Object>());
		
		setBackScreenId(commonBean, false);
				
		return true;
	}


	/**
	 * セッションから遷移先画面を取得し共通ビーンに設定する
	 * <br>
	 * @param commonBean 共通フォームBean
	 * @param transfer	強制転送するかどうか
	 */
	private void setBackScreenId(X31SDataBeanAccess commonBean, boolean transfer)
	{
		String screenId = JZMWebCommon.getScreenId(this);

		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, screenId);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		if(transfer)
		{
			setTransferPageId(screenId + JZMWebConst.PJP);
		}
	}
}
