/*********************************************************************
* All Rights reserved, Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通マスタ）
*   モジュール名    ：ZMW04301SFLogic
*   ソースファイル名：ZMW04301SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年04月18日
*＜機能概要＞
*   固定ＩＰアドレス一覧のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/04/18   FJ）岩元    新規作成
*
**********************************************************************/

package eo.web.webview.ZMW04301SF;

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.ZMW04501SF.ZMW04501SFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0037_ZMSV0037OPDBMapper;
import eo.web.webview.mapping.ZMSV0038_ZMSV0038OPDBMapper;

/**
 * 固定ＩＰアドレス一覧のビューロジックです。
 * @author 909281
 *
 */
public class ZMW04301SFLogic 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 = "ZMW04301_MAX_SHOW_CNT";

	/** ドット*/
	private static final String DOT = ".";

	/** ドット３つ */
	private static final String DOT3 = "...";

	
	/**
	 * NGワード更新初期表示処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean init()throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 戻り先IDの取得
		String screenId = JZMWebCommon.getScreenId(this);
		
		// 戻り先IDの有無で戻るボタン表示フラグを表示する
		JZMWebCommon.setSendMessageBoolean(bean, ZMW04301SFConst.BACK_BTN_DSP_FLG, screenId != null);
		
		// セッションから情報を取り出す。
		HashMap<String, Object> input = (HashMap<String, Object>)JZMWebCommon.getScreenInfo(this);
		
		// サービスフォーム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>();
		
		// ユースケースＩＤを設定する
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV37);
		
		// マッピングクラスのインスタンスを生成
		ZMSV0037_ZMSV0037OPDBMapper mapper = new ZMSV0037_ZMSV0037OPDBMapper();
		
		if(input != null)
		{
			
			// 固定ＩＰ取得種別コードを設定する
			if(input.containsKey(ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_IDX_01))
			{
				String idx = (String)input.get(ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_IDX_01);
				JZMWebCommon.setPullDownIndex(bean, ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_INFO, ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_IDX_01, idx);
			}
			
			// エイジングステータスを設定する
			if(input.containsKey(ZMW04301SFConst.AGING_STAT_IDX_02))
			{
				String idx = (String)input.get(ZMW04301SFConst.AGING_STAT_IDX_02);
				JZMWebCommon.setPullDownIndex(bean, ZMW04301SFConst.AGING_STAT_INFO, ZMW04301SFConst.AGING_STAT_IDX_02, idx);
			}
			
			// 固定ＩＰ取得種別コード情報検索マッピング
			mapper.setZMSV003701SC(paramBean, dataMap, FUNC_CD_1);
			
			// 基準日を設定する
			if(dataMap.containsKey(JZMWebConst.SC3701))
			{
				HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC3701);
				inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
			}
			
			// エイジングステータス情報検索マッピング処理
			mapper.setZMSV003702SC(paramBean, dataMap, FUNC_CD_1);
			
			if(dataMap.containsKey(JZMWebConst.SC3702))
			{
				HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC3702);
				inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
			}
			
			// 固定ＩＰマッピング処理
			mapper.setZMSV003703CC(paramBean, dataMap, FUNC_CD_1);
			
			// ページング情報の設定
			JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC3703, dataMap);
			
			// サービスの呼び出し
			invokeService(paramMap, dataMap, outputMap);
			
			// 下りマッピング
			mapper.getZMSV003701SC(paramBean, outputMap);
			mapper.getZMSV003702SC(paramBean, outputMap);
			mapper.getZMSV003703CC(paramBean, outputMap);

			// 検索エラーフラグの取得
			String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC3703, outputMap);
			
			// 検索結果0件の場合
			if(SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
			{
				if(!JZMWebCommon.hasMsgList(commonBean))
				{
					// 検索結果が0件の場合、エラーメッセージを表示
					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);
					}
				}
				
				// ページング情報の設定
				JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC3703, outputMap);
			
				// 検索のコマンドIDを設定する。
				JZMWebCommon.setSearchCommand(this, JZMWebConst.EVENT_ID_PAGING);
				
				// 明細表示フラグを1(表示)を設定
				bean.sendMessageBoolean(ZMW04301SFConst.DTL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);

				// 選択行の設定
				JZMWebCommon.setChoiseRow(bean, 
						ZMW04301SFConst.CHOICE_KOTEI_IP_AD, 
						ZMW04301SFConst.EZM0101B010CBSMSG1LIST, 
						ZMW04301SFConst.KOTEI_IP_AD_03, 
						ZMW04301SFConst.CHOICE_ROW);
			
				// 背景色のスタイルクラスを設定
				JZMWebCommon.setRowStyleClass(bean, ZMW04301SFConst.EZM0101B010CBSMSG1LIST, ZMW04301SFConst.ROW_STYLE_CLASS_03);
			}
		}
		else
		{
			
			// 固定ＩＰ取得種別コード情報検索マッピング
			mapper.setZMSV003701SC(paramBean, dataMap, FUNC_CD_1);

			// 基準日の設定
			if(dataMap.containsKey(JZMWebConst.SC3701))
			{
				HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC3701);
				inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
			}

			// エイジングステータス情報検索マッピング
			mapper.setZMSV003702SC(paramBean, dataMap, FUNC_CD_1);
			
			if(dataMap.containsKey(JZMWebConst.SC3702))
			{
				HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC3702);
				inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
			}
			
			// サービスの呼び出し
			invokeService(paramMap, dataMap, outputMap);
			
			// 下りマッピングクラス
			mapper.getZMSV003701SC(paramBean, outputMap);
			mapper.getZMSV003702SC(paramBean, outputMap);
			
			// 明細表示フラグを0(非表示)を設定
			bean.sendMessageBoolean(ZMW04301SFConst.DTL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		}

		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04301);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04301);
		
		return true;
	}

	/**
	 * 検索処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean search()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ページリンク情報の消去
		JZMWebCommon.clearPageLinkInfo(this, this.getGamenId());

		// 表示情報と検索情報を入れ替える
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.KOTEI_IP_AD1, ZMW04301SFConst.DSP_KOTEI_IP_AD1);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.KOTEI_IP_AD2, ZMW04301SFConst.DSP_KOTEI_IP_AD2);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.KOTEI_IP_AD3, ZMW04301SFConst.DSP_KOTEI_IP_AD3);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.KOTEI_IP_AD4, ZMW04301SFConst.DSP_KOTEI_IP_AD4);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.SHYAKK_CHUSKK_CD, ZMW04301SFConst.DSP_SHYAKK_CHUSKK_CD);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.APLY_PRD_END_DAY, ZMW04301SFConst.DSP_APLY_PRD_END_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.APLY_PRD_END_MON, ZMW04301SFConst.DSP_APLY_PRD_END_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.APLY_PRD_END_YEAR, ZMW04301SFConst.DSP_APLY_PRD_END_YEAR);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.APLY_PRD_STA_DAY, ZMW04301SFConst.DSP_APLY_PRD_STA_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.APLY_PRD_STA_MON, ZMW04301SFConst.DSP_APLY_PRD_STA_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.APLY_PRD_STA_YEAR, ZMW04301SFConst.DSP_APLY_PRD_STA_YEAR);
		
		// 固定IP取得種別コード値の取得と設定
		String choiseSbtCd = JZMWebCommon. getPullDownSelectedValue(bean,
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_INFO, 
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_VALUE_LIST_01,
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_IDX_01);
		bean.sendMessageString(ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, choiseSbtCd);   

		// エイジングステータス値の取得と設定
		String choiseAgingStatus = JZMWebCommon.getPullDownSelectedValue(bean,
				ZMW04301SFConst.AGING_STAT_INFO, 
				ZMW04301SFConst.AGING_STAT_VALUE_LIST_02,
				ZMW04301SFConst.AGING_STAT_IDX_02);
		JZMWebCommon.setSendMessageString(bean,
				ZMW04301SFConst.AGING_STAT, 
				choiseAgingStatus);
		
		// 固定IPアドレスの設定
		String koteiIp = JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_AD1)
				+ DOT + JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_AD2)
				+ DOT +  JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_AD3)
				+ DOT +  JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_AD4);
		
		// 固定ＩＰアドレスが設定されていない場合はnullを設定する
		if(DOT3.equals(koteiIp))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_AD, null);
		}
		else
		{
			JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_AD, koteiIp);
		}

		// 適用開始年月日の設定
		String  ymd = JPCUtilCommon.concatYmd(bean.sendMessageString(ZMW04301SFConst.APLY_PRD_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04301SFConst.APLY_PRD_STA_MON, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04301SFConst.APLY_PRD_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW04301SFConst.APLY_PRD_STA , X31CWebConst.DATABEAN_SET_VALUE , JZMWebCommon.nullToBlank(ymd));
		
		// 適用終了年月日の設定
		ymd = JPCUtilCommon.concatYmd(bean.sendMessageString(ZMW04301SFConst.APLY_PRD_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04301SFConst.APLY_PRD_END_MON, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04301SFConst.APLY_PRD_END_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW04301SFConst.APLY_PRD_END , X31CWebConst.DATABEAN_SET_VALUE , JZMWebCommon.nullToBlank(ymd));
		
		// 選択行の設定
		JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.CHOICE_ROW, JZMWebConst.ZERO);
		
		// 明細表示フラグの設定
		JZMWebCommon.setSendMessageBoolean(bean, ZMW04301SFConst.DTL_DSP_FLG, false);
		
		// 検索サービスを呼び出す
		callSearchSrv(bean, paramBean);

		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04301);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04301);
		
		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, ZMW04301SFConst.DSP_KOTEI_IP_AD1, ZMW04301SFConst.KOTEI_IP_AD1);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_KOTEI_IP_AD2, ZMW04301SFConst.KOTEI_IP_AD2);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_KOTEI_IP_AD3, ZMW04301SFConst.KOTEI_IP_AD3);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_KOTEI_IP_AD4, ZMW04301SFConst.KOTEI_IP_AD4);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_SHYAKK_CHUSKK_CD, ZMW04301SFConst.SHYAKK_CHUSKK_CD);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_APLY_PRD_END_DAY, ZMW04301SFConst.APLY_PRD_END_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_APLY_PRD_END_MON, ZMW04301SFConst.APLY_PRD_END_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_APLY_PRD_END_YEAR, ZMW04301SFConst.APLY_PRD_END_YEAR);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_APLY_PRD_STA_DAY, ZMW04301SFConst.APLY_PRD_STA_DAY);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_APLY_PRD_STA_MON, ZMW04301SFConst.APLY_PRD_STA_MON);
		JZMWebCommon.shiftBeanValue(bean, ZMW04301SFConst.DSP_APLY_PRD_STA_YEAR, ZMW04301SFConst.APLY_PRD_STA_YEAR);
		
		// 固定IP取得種別コードインデックスの取得と設定
		String koteiIpStkuSbtCdIndex = JZMWebCommon.getPullDownIndex(bean,
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_INFO,
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_VALUE_LIST_01,
				JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD));
		JZMWebCommon.setPullDownIndex(bean, 
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_INFO,
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_IDX_01, 
				koteiIpStkuSbtCdIndex);
		
		// エイジングステータスインデックスの取得と設定
		String agingIndex = JZMWebCommon.getPullDownIndex(bean,
				ZMW04301SFConst.AGING_STAT_INFO,
				ZMW04301SFConst.AGING_STAT_VALUE_LIST_02,
				JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.AGING_STAT));
		JZMWebCommon.setPullDownIndex(bean, 
				ZMW04301SFConst.AGING_STAT_INFO,
				ZMW04301SFConst.AGING_STAT_IDX_02, 
				agingIndex);
		
		// 選択行の設定
		JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.CHOICE_ROW, JZMWebConst.ZERO);
		
		// 明細表示フラグの設定
		JZMWebCommon.setSendMessageBoolean(bean, ZMW04301SFConst.DTL_DSP_FLG, false);
		
		// 検索処理の呼び出し
		callSearchSrv(bean, paramBean);
			
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04301);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04301);
		return true;
	}
	
	/**
	 * 更新ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean upd()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 選択行の固定IPアドレス、エイジング番号の取得と設定
		String index = JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.CHOICE_ROW);
		String choiceNo = JZMWebCommon.getBeanArrayValue(bean,
				ZMW04301SFConst.EZM0101B010CBSMSG1LIST,
				Integer.parseInt(index),
				ZMW04301SFConst.KOTEI_IP_AD_03);
		String choiceAgingNo =  JZMWebCommon.getBeanArrayValue(bean, 
				ZMW04301SFConst.EZM0101B010CBSMSG1LIST, 
				Integer.parseInt(index), 
				ZMW04301SFConst.AGING_NO_03);
		
		JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.CHOICE_KOTEI_IP_AD, choiceNo);
		
		// 検索画面情報情報格納用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// セッションに検索画面情報を格納する
		setTransData(bean, paramMap);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW04301, paramMap);
		
		// 更新画面引渡し情報格納用HashMapの設定
		HashMap<String, Object> output = new HashMap<String, Object>();
		output.put(ZMW04501SFConst.KOTEI_IP_AD, JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.CHOICE_KOTEI_IP_AD));
		output.put(ZMW04501SFConst.AGING_NO, choiceAgingNo);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW04501, output);
		
		// 戻り先画面IDの設定
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW04501, JZMScreenConst.SCREEN_ID_ZMW04301);
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW04503, JZMScreenConst.SCREEN_ID_ZMW04301);
	
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04501);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04501);
		
		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;
	}


	/**
	 * 明細ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean dtail()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 選択行の固定IPアドレス、エイジング番号の取得と設定
		String index = JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.CHOICE_ROW);
		String choiceNo = JZMWebCommon.getBeanArrayValue(bean, 
				ZMW04301SFConst.EZM0101B010CBSMSG1LIST, 
				Integer.parseInt(index), 
				ZMW04301SFConst.KOTEI_IP_AD_03);
		String choiceAgingNo =  JZMWebCommon.getBeanArrayValue(bean, 
				ZMW04301SFConst.EZM0101B010CBSMSG1LIST, 
				Integer.parseInt(index), 
				ZMW04301SFConst.AGING_NO_03);
		
		JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.CHOICE_KOTEI_IP_AD, choiceNo);
		
		// 情報格納用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// セッションに情報を格納する
		setTransData(bean, paramMap);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW04301, paramMap);
		
		// 引渡し情報格納用HashMap
		HashMap<String, Object> output = new HashMap<String, Object>();
		output.put(ZMW04501SFConst.KOTEI_IP_AD, JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.CHOICE_KOTEI_IP_AD));
		output.put(ZMW04501SFConst.AGING_NO, choiceAgingNo);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW04701, output);
		
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW04701, JZMScreenConst.SCREEN_ID_ZMW04301);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04701);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE , JZMScreenConst.SCREEN_NAME_ZMW04701);
		
		return true;
	}
	
	/**
	 * 検索サービスを呼び出します。
	 * @param bean
	 * @param paramBean
	 */
	private void callSearchSrv(X31SDataBeanAccess bean, X31SDataBeanAccess[] paramBean)
	{
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV38);
		
		// マッピングクラスのインスタンスを生成
		ZMSV0038_ZMSV0038OPDBMapper mapper = new ZMSV0038_ZMSV0038OPDBMapper();
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		mapper.setZMSV003801CC(paramBean, dataMap, FUNC_CD_1);
		
		// ページング情報の設定
		JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC3801, dataMap);
		
		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);
		
		// 一覧の初期化
		bean.getDataBeanArray(ZMW04301SFConst.EZM0101B010CBSMSG1LIST).clearArray();
		
		// マッピングクラスの呼び出し
		mapper.getZMSV003801CC(paramBean, outputMap);
		
		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC3801, outputMap);

		// 検索結果が0件の場合
		if(SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO);
			return;
		}
		
		// 検索結果が最大超過の場合
		else if(SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			String[] item = {JZMWebCommon.getSearchConst(MAX_SHOW_CNT)};
			
			// 検索結果が最大検索件数を超える場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_OVERMAX, item);
			return;
		}
		else
		{
			
			// 表示ページなしの場合
			if(SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
			{
				
				// 表示ページに該当するデータが存在しない場合、エラーメッセージを表示
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NODATA);
				JZMWebCommon.setSendMessageString(bean, ZMW04301SFConst.CHOICE_ROW, JZMWebConst.ZERO);
			}
			
			// 明細表示フラグに1(表示)を設定
			JZMWebCommon.setSendMessageBoolean(bean, ZMW04301SFConst.DTL_DSP_FLG, true);
			
			// ページング情報の設定
			JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC3801, outputMap);
			
			// 検索のコマンドIDを設定
			JZMWebCommon.setSearchCommand(this, JZMWebConst.EVENT_ID_PAGING);

			// 行の背景色を設定
			JZMWebCommon.setRowStyleClass(bean, ZMW04301SFConst.EZM0101B010CBSMSG1LIST, ZMW04301SFConst.ROW_STYLE_CLASS_03);
		}
		
	}

	/**
	 * セッション情報に格納するハッシュマップを作成します。
	 * @param bean
	 * @param paramMap
	 */
	private void setTransData(X31SDataBeanAccess bean,
			HashMap<String, Object> paramMap)
	{
		
		// 選択行の取得
		String selectIndex = JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.CHOICE_ROW);
		if(selectIndex == null || JZMWebConst.BLANK.equals(selectIndex))
		{
			selectIndex = JZMWebConst.ZERO;
		}
		
		// 選択固定IPアドレスの取得
		String selectFixIpAd = JZMWebCommon.getBeanArrayValue(bean, 
				ZMW04301SFConst.EZM0101B010CBSMSG1LIST , 
				Integer.parseInt(selectIndex) , 
				ZMW04301SFConst.KOTEI_IP_AD_03);
		
		// 表示されている固定IP取得種別コードのインデックスを取得
		String selectStkuSbtCdIndex = JZMWebCommon.getPullDownIndex(bean, 
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_INFO, 
				ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_VALUE_LIST_01, 
				JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD));
		
		// 表示されているエイジングステータスのインデックスを取得
		String agingStatusIndex = JZMWebCommon.getPullDownIndex(bean, 
				ZMW04301SFConst.AGING_STAT_INFO, 
				ZMW04301SFConst.AGING_STAT_VALUE_LIST_02, 
				JZMWebCommon.getSendMessageString(bean, ZMW04301SFConst.AGING_STAT));
		
		putBeanValue(bean, paramMap, ZMW04301SFConst.KOTEI_IP_AD);
		putBeanValue(bean, paramMap, ZMW04301SFConst.KOTEI_IP_AD1);
		putBeanValue(bean, paramMap, ZMW04301SFConst.KOTEI_IP_AD2);
		putBeanValue(bean, paramMap, ZMW04301SFConst.KOTEI_IP_AD3);
		putBeanValue(bean, paramMap, ZMW04301SFConst.KOTEI_IP_AD4);
		putBeanValue(bean, paramMap, ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD);
		putBeanValue(bean, paramMap, ZMW04301SFConst.SHYAKK_CHUSKK_CD);
		putBeanValue(bean, paramMap, ZMW04301SFConst.AGING_STAT);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_STA_YEAR);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_STA_MON);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_STA_DAY);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_STA);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_END_YEAR);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_END_MON);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_END_DAY);
		putBeanValue(bean, paramMap, ZMW04301SFConst.APLY_PRD_END);

		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_KOTEI_IP_AD1, ZMW04301SFConst.KOTEI_IP_AD1);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_KOTEI_IP_AD2, ZMW04301SFConst.KOTEI_IP_AD2);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_KOTEI_IP_AD3, ZMW04301SFConst.KOTEI_IP_AD3);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_KOTEI_IP_AD4, ZMW04301SFConst.KOTEI_IP_AD4);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_SHYAKK_CHUSKK_CD, ZMW04301SFConst.SHYAKK_CHUSKK_CD);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_APLY_PRD_STA_YEAR, ZMW04301SFConst.APLY_PRD_STA_YEAR);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_APLY_PRD_STA_MON, ZMW04301SFConst.APLY_PRD_STA_MON);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_APLY_PRD_STA_DAY, ZMW04301SFConst.APLY_PRD_STA_DAY);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_APLY_PRD_END_YEAR, ZMW04301SFConst.APLY_PRD_END_YEAR);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_APLY_PRD_END_MON, ZMW04301SFConst.APLY_PRD_END_MON);
		putBeanValue(bean, paramMap, ZMW04301SFConst.DSP_APLY_PRD_END_DAY, ZMW04301SFConst.APLY_PRD_END_DAY);
		
		paramMap.put(ZMW04301SFConst.CHOICE_KOTEI_IP_AD, selectFixIpAd);
		paramMap.put(ZMW04301SFConst.KOTEI_IP_STKU_SBT_CD_IDX_01, selectStkuSbtCdIndex);
		paramMap.put(ZMW04301SFConst.AGING_STAT_IDX_02, agingStatusIndex);
	}
	
	/** bean内の指定した項目をparamMapにputします。
	 * @param	bean	DataBean
	 * @param	paramMap 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 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);
	}
}
