/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通
*   モジュール名    ：ZMW06101SFLogic
*   ソースファイル名：ZMW06101SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月16日
*＜機能概要＞
*   住所対象番号区画削除画面の画面制御を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v2.00       2011/06/16   FJ) 山本    新規作成
*
**********************************************************************/

package eo.web.webview.ZMW06101SF;

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.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.ZMSV0080_ZMSV0080OPDBMapper;
import eo.web.webview.mapping.ZMSV0081_ZMSV0081OPDBMapper;

/**
 * 住所対象番号区画削除画面の画面制御を行います。<br>
 * <br>
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class ZMW06101SFLogic extends JCCWebBusinessLogic 
{

	/** メッセージ置き換え文字 */
	private static final String[] ERROR_MESSAGE = {"住所対象番号区画", "情報"};
	
	/** メッセージ置き換え文字 */
	private static final String[] DELETE_MESSAGE = {"住所対象番号区画情報削除"};
	
	/** 情報表示文字列 */
	private static final String INFO_WORD = "■情報";
	
	/**
	 * 住所対象番号区画削除確認画面の初期表示処理を行います。<BR>
	 * <BR>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean init() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケース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>();
		
		// 画面情報取得
		JZMWebCommon.getScreenInfo(this);
		
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV80);
		
		// マッピングクラス
		ZMSV0080_ZMSV0080OPDBMapper mapper = new ZMSV0080_ZMSV0080OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV008001SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		mapper.setZMSV008002SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// 一覧クリア
		bean.getDataBeanArray(ZMW06101SFConst.EZM0091B011CBSMSG1LIST).clearArray();
		
		// マッピング処理（下り）
		mapper.getZMSV008002SC(paramBean, outputMap);
		
		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC8002, outputMap);
		
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, ERROR_MESSAGE);
			
			// 画面遷移
			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);
			
			setTransferPageId(JZMWebCommon.getScreenId(this) + JZMWebConst.PJP);
			
			return true;
		}
		
		editDetail(bean);
		
		// 確認メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, DELETE_MESSAGE);
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06101);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06101);
		
		return true;
	}
	
	/**
	 * 画面表示項目の編集を行います。
	 * @param bean サービスフォームBean
	 */
	private void editDetail(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW06101SFConst.EZM0091B011CBSMSG1LIST);
		X31SDataBeanAccess listBean = null;
		
		// 適用終了年月日
		JZMWebCommon.replaceTendymd(bean, ZMW06101SFConst.EZM0091B011CBSMSG1LIST, ZMW06101SFConst.AD_TG_NO_KUKAKU_TENDYMD_01);
		
		for(int index = 0; index < dataList.getCount(); index++)
		{
			listBean = dataList.getDataBean(index);
			
			// 情報表示
			JZMWebCommon.setSendMessageString(listBean, ZMW06101SFConst.DTL_NO_INFO_01, INFO_WORD + String.valueOf(index + 1).toUpperCase());
			
			// 一件目の住所情報をヘッダーに設定
			if(index == 0)
			{
				
				// 住所コードのハイフン編集
				JZMWebCommon.setSendMessageString(bean, ZMW06101SFConst.DSP_AD_CD,
						JPCUtilCommon.hyhunAdCd(listBean.sendMessageString(ZMW06101SFConst.AD_CD_01, X31CWebConst.DATABEAN_GET_VALUE)));

				// 番号区画コード
				JZMWebCommon.setSendMessageString(bean, ZMW06101SFConst.NO_KUKAKU_CD,
						listBean.sendMessageString(ZMW06101SFConst.NO_KUKAKU_CD_01, X31CWebConst.DATABEAN_GET_VALUE));

				// 適用開始年月日
				JZMWebCommon.setSendMessageString(bean, ZMW06101SFConst.DSP_AD_TG_NO_KUKAKU_TSTAYMD,
						listBean.sendMessageString(ZMW06101SFConst.AD_TG_NO_KUKAKU_TSTAYMD_01, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 適用終了年月日
				JZMWebCommon.setSendMessageString(bean, ZMW06101SFConst.DSP_AD_TG_NO_KUKAKU_TENDYMD,
						listBean.sendMessageString(ZMW06101SFConst.AD_TG_NO_KUKAKU_TENDYMD_01, X31CWebConst.DATABEAN_GET_VALUE));
			}
		}
	}

	/**
	 * 呼び出し元画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean back() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		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>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fix() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケース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>();
		
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV81);
		
		// マッピングクラス
		ZMSV0081_ZMSV0081OPDBMapper mapper = new ZMSV0081_ZMSV0081OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV008101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// 完了メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, DELETE_MESSAGE);

		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06102);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06102);
		
		return true;
	}
	
	/**
	 * 削除処理を完了し、呼び出し元画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fin() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		JZMWebCommon.setScreenInfo(this, this.getGamenId(), new HashMap<String, Object>());
		
		// 画面遷移
		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;
	}
}
