/*********************************************************************
* All Rights reserved, Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通マスタ）
*   モジュール名    ：ZMW11501SFLogic
*   ソースファイル名：ZMW11501SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月13日
*＜機能概要＞
*   局番一覧照会のビューロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/06/13   FJ）荒田    新規作成
*   v4.00       2012/06/18   FJ）石松    【TAI-2012-0000059】コンボボックス脆弱性js対応
*
**********************************************************************/

package eo.web.webview.ZMW11501SF;

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.constant.JZMStrConst;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW11701SF.ZMW11701SFConst;
import eo.web.webview.ZMW11801SF.ZMW11801SFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0044_ZMSV0044OPDBMapper;
import eo.web.webview.mapping.ZMSV0059_ZMSV0059OPDBMapper;

/**
 * 局番一覧照会のビューロジッククラスです。
 * @author 909282
 *
 */
@SuppressWarnings("serial")
public class ZMW11501SFLogic extends JCCWebBusinessLogic
{
	
	/** 機能コード１  */
	private static final String FUNC_CD_1 = JPCModelConstant.FUNC_CD_1;
	
	/** サーチエラーフラグ "1"  */
	private static final String SEARCH_ERR_FLG_ZERO = JPCModelConstant.SEARCH_ERR_FLG_ZERO;
	
	/** サーチエラーフラグ "2"  */
	private static final String SEARCH_ERR_FLG_OVERMAX = JPCModelConstant.SEARCH_ERR_FLG_OVERMAX;
	
	/** サーチエラーフラグ "3"  */
	private static final String SEARCH_ERR_FLG_NODATA = JPCModelConstant.SEARCH_ERR_FLG_NODATA;
	
	/** メッセージID EKB0330--I  */
	private static final String SEARCH_ERR_MESSAGE_ZERO = JPCOnlineMessageConstant.EKB0330__I;
	
	/** メッセージID EKB0340--I  */
	private static final String SEARCH_ERR_MESSAGE_OVERMAX =  JPCOnlineMessageConstant.EKB0340__I;
	
	/** メッセージID EKB0350--I  */
	private static final String SEARCH_ERR_MESSAGE_NODATA =  JPCOnlineMessageConstant.EKB0350__I;

	/** 最大検索数 */
	private static final String MAX_SHOW_CNT = "ZMW11501_MAX_SHOW_CNT";

	/**
	 * 局番一覧照会初期表示処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 戻り先IDの取得
		String backScreenId = JZMWebCommon.getScreenId(this);
		
		// 戻り先IDの有無で戻るボタン表示の判定を行う。
		if (backScreenId == null)
		{
			JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.BACK_BTN_DSP_FLG, JZMStrConst.FLG_OFF);
		}
		else
		{
			JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.BACK_BTN_DSP_FLG, JZMStrConst.FLG_ON);
		}
		
		// セッション情報取得
		HashMap<String, Object> searchInfo = JZMWebCommon.getScreenInfo(this);

		// ユースケース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>();

		// 検索フラグに"0"をセット
		bean.sendMessageString(ZMW11501SFConst.SEARCH_FLG,
				X31CWebConst.DATABEAN_SET_VALUE, JZMStrConst.FLG_OFF);

		// 明細表示フラグに"0"をセット
		bean.sendMessageString(ZMW11501SFConst.DTL_DSP_FLG,
				X31CWebConst.DATABEAN_SET_VALUE, JZMStrConst.FLG_OFF);

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV59);

		// マッピングクラスのインスタンスを生成
		ZMSV0059_ZMSV0059OPDBMapper mapper = new ZMSV0059_ZMSV0059OPDBMapper();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		if (searchInfo != null) 
		{
			boolean isDeleteMove = false;
			
			// 削除完了画面からの遷移の場合ページリンク情報と選択局番を削除する
			if(JZMWebCommon.getScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11802) != null)
			{
				isDeleteMove = true;
				JZMWebCommon.clearPageLinkInfo(this, this.getGamenId());
				JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.CHOICE_KYOKU_NO, null);
				JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11802, null);
			}
			
			// マッピング処理（上り）
			mapper.setZMSV005901SC(paramBean, dataMap, FUNC_CD_1);
			mapper.setZMSV005902CC(paramBean, dataMap, FUNC_CD_1);
			
			// 基準年月日の設定
			if(dataMap.containsKey(JZMWebConst.SC5901))
			{
				HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC5901);
				inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
			}

			// ページング情報の設定
			JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC5902, dataMap);

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);
			
			// マッピング処理（下り）
			mapper.getZMSV005901SC(paramBean, outputMap);
			mapper.getZMSV005902CC(paramBean, outputMap);
			
			// ページング情報の設定
			JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC5902, outputMap);

			// 検索エラーフラグの取得
			String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC5902, outputMap);

			if (SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
			{
				
				// 検索結果が0件の場合、エラーメッセージを表示
				if(!JZMWebCommon.hasMsgList(commoninfoBean))
				{
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO);
				}
			}
			else if (SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
			{
				
				// 検索結果が最大検索件数を超える場合、エラーメッセージを表示
				if(!JZMWebCommon.hasMsgList(commoninfoBean))
				{
					String[] item = { JZMWebCommon.getSearchConst(MAX_SHOW_CNT) };
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_OVERMAX, item);
				}
			}
			else
			{
				
				// 先頭行のラジオボタンを選択状態にする
				bean.sendMessageString(ZMW11501SFConst.CHOICE_ROW,
						X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.ZERO);
				
				if (SEARCH_ERR_FLG_NODATA.equals(searchErrFlg) && !isDeleteMove)
				{
					
					// 表示ページに該当するデータが存在しない場合、エラーメッセージを表示
					if(!JZMWebCommon.hasMsgList(commoninfoBean))
					{
						JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NODATA);
					}
				}
				else
				{
					
					// 選択局番の取得
					String choiceKyokuNo = bean.sendMessageString(
							ZMW11501SFConst.CHOICE_KYOKU_NO,
							X31CWebConst.DATABEAN_GET_VALUE);
					
					X31SDataBeanAccessArray dataList = bean.getDataBeanArray(
							ZMW11501SFConst.EZM0301B010CBSMSG1LIST);
					
					for (int i = 0; i < dataList.getCount(); i++)
					{
						
						// 局番情報Beanの取得
						X31SDataBeanAccess listBean = bean.getDataBeanArray(
								ZMW11501SFConst.EZM0301B010CBSMSG1LIST)
								.getDataBean(i);

						String cdSbtCd = listBean.sendMessageString(
								ZMW11501SFConst.KYOKU_NO_01,
								X31CWebConst.DATABEAN_GET_VALUE);

						if ((cdSbtCd).equals(choiceKyokuNo))
						{
							
							// 一致する行のラジオボタンを選択状態にする
							bean.sendMessageString(ZMW11501SFConst.CHOICE_ROW,
									X31CWebConst.DATABEAN_SET_VALUE, Integer.toString(i));
						}
					}
				}
				
				// 明細表示フラグに"1"をセット
				bean.sendMessageString(ZMW11501SFConst.DTL_DSP_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, JZMStrConst.FLG_ON);

				// 背景色のスタイルクラスを設定
				JZMWebCommon.setRowStyleClass(bean,
						ZMW11501SFConst.EZM0301B010CBSMSG1LIST,
						ZMW11501SFConst.ROW_STYLE_CLASS_01);
			}
			
			// 法人個人情報インデックスを設定する
			if(searchInfo.containsKey(ZMW11501SFConst.HOJIN_KOJIN_CD_IDX_03))
			{
				String idx = (String)searchInfo.get(ZMW11501SFConst.HOJIN_KOJIN_CD_IDX_03);
				JZMWebCommon.setPullDownIndex(bean, ZMW11501SFConst.HOJIN_KOJIN_CD_INFO, ZMW11501SFConst.HOJIN_KOJIN_CD_IDX_03, idx);
			}
			
			// 検索フラグに"1"をセット
			bean.sendMessageString(ZMW11501SFConst.SEARCH_FLG,
					X31CWebConst.DATABEAN_SET_VALUE, JZMStrConst.FLG_ON);
			
			// 検索コマンドID設定
			JZMWebCommon.setSearchCommand(this, JZMWebConst.EVENT_ID_PAGING);
		}
		else
		{
			
			// マッピング処理（上り）
			mapper.setZMSV005901SC(paramBean, dataMap, FUNC_CD_1);
			
			// コード基準日の設定
			if(dataMap.containsKey(JZMWebConst.SC5901))
			{
				HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC5901);
				inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
			}
			
			// サービス実行
			invokeService(paramMap, dataMap, outputMap);
			
			// マッピング処理（下り）
			mapper.getZMSV005901SC(paramBean, outputMap);
		}
		
		/* v4.00 追加開始 */
		
		// 法人個人コードデータ取得
		String div = JZMWebCommon.getPullDownAllValue(bean, ZMW11501SFConst.HOJIN_KOJIN_CD_INFO, ZMW11501SFConst.HOJIN_KOJIN_CD_VALUE_LIST_03);
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.HOJIN_KOJIN_CD_DIV_DATA, div);
		
		/* v4.00 追加終了 */
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11501);
		return true;
	}
	
	
	/**
	 * 局番一覧照会検索処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean search() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO, ZMW11501SFConst.DSP_KYOKU_NO);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.NO_KUKAKU_CD, ZMW11501SFConst.DSP_NO_KUKAKU_CD);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KOJIN_NRN_NO, ZMW11501SFConst.DSP_KOJIN_NRN_NO);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.HOJIN_NRN_NO, ZMW11501SFConst.DSP_HOJIN_NRN_NO);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_YEAR, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_YEAR);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_MON, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_DAY, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_YEAR, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_YEAR);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_MON, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_DAY, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_DAY);
		
		// 法人個人コード値の取得と設定
		String selectedValue = JZMWebCommon. getPullDownSelectedValue(bean, ZMW11501SFConst.HOJIN_KOJIN_CD_INFO,
				ZMW11501SFConst.HOJIN_KOJIN_CD_VALUE_LIST_03, ZMW11501SFConst.HOJIN_KOJIN_CD_IDX_03);
		bean.sendMessageString(ZMW11501SFConst.KOJIN_HOJIN, X31CWebConst.DATABEAN_SET_VALUE, selectedValue);   
		
		// 適用開始年月日
		String  ymd = JPCUtilCommon.concatYmd(bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_MON, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA, X31CWebConst.DATABEAN_SET_VALUE , JZMWebCommon.nullToBlank(ymd));
		
		// 適用終了年月日
		ymd = JPCUtilCommon.concatYmd(bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_MON, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW11501SFConst.KYOKU_NO_APLY_PRD_END, X31CWebConst.DATABEAN_SET_VALUE , JZMWebCommon.nullToBlank(ymd));
		
		// 先頭行のラジオボタンを選択状態にする
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.CHOICE_ROW, JZMWebConst.ZERO);
		
		// 検索フラグに"1"をセット
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.SEARCH_FLG, JZMStrConst.FLG_ON);
		
		// 明細表示フラグに"0"をセット
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.DTL_DSP_FLG, JZMStrConst.FLG_OFF);
		
		// ページング情報の初期化
		JZMWebCommon.clearPageLinkInfo(this, JZMScreenConst.SCREEN_ID_ZMW11501);
		
		// 検索サービスを呼び出す
		callSearchSrv(bean, paramBean);

		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11501);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11501);
		
		return true;
	}
	
	/**
	 * ページング処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean paging() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO, ZMW11501SFConst.KYOKU_NO);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_NO_KUKAKU_CD, ZMW11501SFConst.NO_KUKAKU_CD);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KOJIN_NRN_NO, ZMW11501SFConst.KOJIN_NRN_NO);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_HOJIN_NRN_NO, ZMW11501SFConst.HOJIN_NRN_NO);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_DAY, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_MON, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_YEAR, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_YEAR);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_DAY, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_MON, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_YEAR, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_YEAR);
		String index = JZMWebCommon.getPullDownIndex(bean,
				ZMW11501SFConst.HOJIN_KOJIN_CD_INFO, ZMW11501SFConst.HOJIN_KOJIN_CD_VALUE_LIST_03,
				JZMWebCommon.nullToBlank(JZMWebCommon.getSendMessageString(bean, ZMW11501SFConst.KOJIN_HOJIN)));
		JZMWebCommon.setPullDownIndex(bean, ZMW11501SFConst.HOJIN_KOJIN_CD_INFO, ZMW11501SFConst.HOJIN_KOJIN_CD_IDX_03, index);
		
		// 先頭行のラジオボタンを選択状態にする
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.CHOICE_ROW, JZMWebConst.ZERO);
		
		// 検索フラグに"1"をセット
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.SEARCH_FLG, JZMStrConst.FLG_ON);
		
		// 明細表示フラグに"0"をセット
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.DTL_DSP_FLG, JZMStrConst.FLG_OFF);
		
		// 検索サービスを呼び出す
		callSearchSrv(bean, paramBean);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11501);
		return true;
	}
	
	/**
	 * 新規登録ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean newAdd() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 情報格納用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// セッションに情報を格納する
		setTransData(bean, paramMap);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11501, paramMap);
		
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11601, JZMScreenConst.SCREEN_ID_ZMW11501);
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11603, JZMScreenConst.SCREEN_ID_ZMW11501);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11601);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11601);
				
		return true;
	}

	/**
	 * 更新ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean upd() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 選択行インデックスを取得
		String index = JZMWebCommon.getSendMessageString(bean, ZMW11501SFConst.CHOICE_ROW);
		String choiceNo = JZMWebCommon.getBeanArrayValue(bean,
				ZMW11501SFConst.EZM0301B010CBSMSG1LIST, Integer.parseInt(index), ZMW11501SFConst.KYOKU_NO_01);
		
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.CHOICE_KYOKU_NO, choiceNo);
		
		// 情報格納用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// セッションに情報を格納する
		setTransData(bean, paramMap);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11501, paramMap);
		
		// 引渡し情報格納用HashMap
		HashMap<String, Object> output = new HashMap<String, Object>();
		output.put(ZMW11701SFConst.KYOKU_NO, JZMWebCommon.getSendMessageString(bean, ZMW11501SFConst.CHOICE_KYOKU_NO));
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11701, output);
		
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11701, JZMScreenConst.SCREEN_ID_ZMW11501);
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11703, JZMScreenConst.SCREEN_ID_ZMW11501);
	
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11701);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11701);
		
		return true;
	}
	
	/**
	 * 削除ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean del() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 選択行のインデックスを取得
		String index = JZMWebCommon.getSendMessageString(bean, ZMW11501SFConst.CHOICE_ROW);
		
		// 選択局番を取得
		String choiceNo = JZMWebCommon.getBeanArrayValue(bean,
				ZMW11501SFConst.EZM0301B010CBSMSG1LIST, Integer.parseInt(index), ZMW11501SFConst.KYOKU_NO_01);
		
		// 選択更新年月日を取得
		String choiceUpdDtm = JZMWebCommon.getBeanArrayValue(bean,
				ZMW11501SFConst.EZM0301B010CBSMSG1LIST, Integer.parseInt(index), ZMW11501SFConst.UPD_DTM_01);
		
		JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.CHOICE_KYOKU_NO, choiceNo);
		
		// 情報格納用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// セッションに情報を格納する
		setTransData(bean, paramMap);
		
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11501, paramMap);

		// 引き渡し情報の格納
		HashMap<String, Object> output = new HashMap<String, Object>();
		output.put(ZMW11801SFConst.KYOKU_NO, JZMWebCommon.getSendMessageString(bean, ZMW11501SFConst.CHOICE_KYOKU_NO));
		output.put(ZMW11801SFConst.UPD_DTM, choiceUpdDtm);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW11801, output);
		
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11801, JZMScreenConst.SCREEN_ID_ZMW11501);
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11802, JZMScreenConst.SCREEN_ID_ZMW11501);
	
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11801);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11801);
		
		return true;
	}

	/**
	 * 戻るボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @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;
	}
	
	/**
	 * 検索サービスを呼び出します
	 * @param bean
	 * @param paramBean
	 */
	private void callSearchSrv(X31SDataBeanAccess bean,
			X31SDataBeanAccess[] paramBean)
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV44);
		
		// マッピングクラスのインスタンスを生成
		ZMSV0044_ZMSV0044OPDBMapper mapper = new ZMSV0044_ZMSV0044OPDBMapper();
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		mapper.setZMSV004401CC(paramBean, dataMap, FUNC_CD_1);
		
		// ページング情報の設定
		JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC4401, dataMap);
		
		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		//  サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);
		
		// 一覧の初期化
		bean.getDataBeanArray(ZMW11501SFConst.EZM0301B010CBSMSG1LIST).clearArray();
		
		// マッピングクラスの呼び出し
		mapper.getZMSV004401CC(paramBean, outputMap);
		
		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC4401, outputMap);
		
		if (SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			if(!JZMWebCommon.hasMsgList(commonBean))
			{
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO);
			}
		}
		else if (SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			
			// 検索結果が最大検索件数を超える場合、エラーメッセージを表示
			if(!JZMWebCommon.hasMsgList(commonBean))
			{
				String[] item = { JZMWebCommon.getSearchConst(MAX_SHOW_CNT) };
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_OVERMAX, item);
			}
		}
		else
		{
			if (SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
			{
				
				// 表示ページに該当するデータが存在しない場合、エラーメッセージを表示
				if(!JZMWebCommon.hasMsgList(commonBean))
				{
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NODATA);
				}
			}
			
			// 明細表示フラグに"1"をセット
			JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.DTL_DSP_FLG, JZMStrConst.FLG_ON);
			
			// 先頭行のラジオボタンを選択状態にする
			JZMWebCommon.setSendMessageString(bean, ZMW11501SFConst.CHOICE_ROW, JZMWebConst.ZERO);
			
			// 背景色のスタイルクラスを設定
			JZMWebCommon.setRowStyleClass(bean,
					ZMW11501SFConst.EZM0301B010CBSMSG1LIST,
					ZMW11501SFConst.ROW_STYLE_CLASS_01);
		}
		
		// ページング情報の設定
		JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC4401, outputMap);
		
		// 検索のコマンドIDを設定する。
		JZMWebCommon.setSearchCommand(this, JZMWebConst.EVENT_ID_PAGING);
	}
	
	/**
	 * セッション情報に格納するハッシュマップを作成する
	 * @param bean
	 * @param paramMap
	 */
	private void setTransData(X31SDataBeanAccess bean, HashMap<String, Object> paramMap)
	{
		
		// 選択行の取得
		String selectIndex = JZMWebCommon.getSendMessageString(bean, ZMW11501SFConst.CHOICE_ROW);
		if(selectIndex == null)
		{
			selectIndex = JZMWebConst.ZERO;
		}
		
		// 選択局番の取得
		String selectKyokuNo = JZMWebCommon.getBeanArrayValue(bean,
				ZMW11501SFConst.EZM0301B010CBSMSG1LIST,
				Integer.parseInt(selectIndex), ZMW11501SFConst.KYOKU_NO_01);
		
		// ハッシュマップの作成
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO);
		putBeanValue(bean, paramMap, ZMW11501SFConst.NO_KUKAKU_CD);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KOJIN_HOJIN);
		putBeanValue(bean, paramMap, ZMW11501SFConst.HOJIN_KOJIN_CD_IDX_03, ZMW11501SFConst.KOJIN_HOJIN);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KOJIN_NRN_NO);
		putBeanValue(bean, paramMap, ZMW11501SFConst.HOJIN_NRN_NO);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_YEAR);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_MON);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_DAY);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_YEAR);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_MON);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_DAY);
		putBeanValue(bean, paramMap, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO, ZMW11501SFConst.KYOKU_NO);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_NO_KUKAKU_CD, ZMW11501SFConst.NO_KUKAKU_CD);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KOJIN_NRN_NO, ZMW11501SFConst.KOJIN_NRN_NO);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_HOJIN_NRN_NO, ZMW11501SFConst.HOJIN_NRN_NO);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_YEAR, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_YEAR);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_MON, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_MON);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_STA_DAY, ZMW11501SFConst.KYOKU_NO_APLY_PRD_STA_DAY);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_YEAR, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_YEAR);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_MON, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_MON);
		putBeanValue(bean, paramMap, ZMW11501SFConst.DSP_KYOKU_NO_APLY_PRD_END_DAY, ZMW11501SFConst.KYOKU_NO_APLY_PRD_END_DAY);
		putBeanValue(bean, paramMap, ZMW11501SFConst.CHOICE_ROW);
		paramMap.put(ZMW11501SFConst.CHOICE_KYOKU_NO, selectKyokuNo);
	}
	
	
	/**
	 * bean内の指定した項目をparamMapにputします。
	 * @param bean	DataBean
	 * @param paramMap
	 * @param key	ハッシュマップのキー項目
	 */
	private void putBeanValue(X31SDataBeanAccess bean, HashMap<String, Object> paramMap, String key)
	{
		String value = JZMWebCommon.getSendMessageString(bean, key);
		paramMap.put(key, value);
	}
	

	/** 
	 * bean内の指定した項目をparamMapにputします。 
	 * @param bean	DataBean
	 * @param paramMap
	 * @param key	ハッシュマップのキー項目
	 * @param valueColumnName 値を取得する項目名称
	 * */
	private void putBeanValue(X31SDataBeanAccess bean, 
			HashMap<String, Object> paramMap,
			String key,
			String valueColumnName)
	{
		String value = JZMWebCommon.getSendMessageString(bean, valueColumnName);
		paramMap.put(key, value);
	}
}
