/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通
*   モジュール名    ：ZMW06201SFLogic
*   ソースファイル名：ZMW06201SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月16日
*＜機能概要＞
*   住所対象番号区画詳細画面の画面制御を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v2.00       2011/06/16   FJ) 山本    新規作成
*
**********************************************************************/

package eo.web.webview.ZMW06201SF;

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.ZMSV0082_ZMSV0082OPDBMapper;

/**
 * 住所対象番号区画照会画面の画面制御を行います。<br>
 * <br>
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class ZMW06201SFLogic extends JCCWebBusinessLogic
{
	
	/** メッセージ置き換え文字 */
	private static final String[] ERROR_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.SV82);
		
		// マッピングクラス
		ZMSV0082_ZMSV0082OPDBMapper mapper = new ZMSV0082_ZMSV0082OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV008201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// 一覧クリア
		bean.getDataBeanArray(ZMW06201SFConst.EZM0091B011CBSMSG1LIST).clearArray();
		
		// マッピング処理（下り）
		mapper.getZMSV008201SC(paramBean, outputMap);
		
		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC8201, 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);

		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06201);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06201);
		
		return true;
	}
	
	/**
	 * 画面表示項目の編集を行います。
	 * @param bean サービスフォームBean
	 */
	private void editDetail(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW06201SFConst.EZM0091B011CBSMSG1LIST);
		X31SDataBeanAccess listBean = null;
		
		// 適用終了年月日
		JZMWebCommon.replaceTendymd(bean, ZMW06201SFConst.EZM0091B011CBSMSG1LIST, ZMW06201SFConst.AD_TG_NO_KUKAKU_TENDYMD_01);
		
		for(int index = 0; index < dataList.getCount(); index++)
		{
			listBean = dataList.getDataBean(index);
			
			// 情報表示
			listBean.sendMessageString(ZMW06201SFConst.DTL_NO_INFO_01, X31CWebConst.DATABEAN_SET_VALUE, INFO_WORD + String.valueOf(index + 1).toUpperCase());
			
			// 一件目の住所情報をヘッダーに設定
			if(index == 0)
			{
				
				// 住所コード
				JZMWebCommon.setSendMessageString(bean, ZMW06201SFConst.DSP_AD_CD, 
						JPCUtilCommon.hyhunAdCd(listBean.sendMessageString(ZMW06201SFConst.AD_CD_01, X31CWebConst.DATABEAN_GET_VALUE)));
				
				// 番号区画コード
				JZMWebCommon.setSendMessageString(bean, ZMW06201SFConst.NO_KUKAKU_CD, 
						listBean.sendMessageString(ZMW06201SFConst.NO_KUKAKU_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 適用開始年月日
				JZMWebCommon.setSendMessageString(bean, ZMW06201SFConst.DSP_AD_TG_NO_KUKAKU_TSTAYMD, 
						listBean.sendMessageString(ZMW06201SFConst.AD_TG_NO_KUKAKU_TSTAYMD_01, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 適用終了年月日
				JZMWebCommon.setSendMessageString(bean, ZMW06201SFConst.DSP_AD_TG_NO_KUKAKU_TENDYMD, 
						listBean.sendMessageString(ZMW06201SFConst.AD_TG_NO_KUKAKU_TENDYMD_01, X31CWebConst.DATABEAN_GET_VALUE));
			}
		}
	}

	/**
	 * 呼び出し元画面へ遷移処理を行います。
	 * @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;
	}
}
