/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CKW02505SFLogic
 *   ソースファイル名：CKW02505SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2012年03月02日
 *＜機能概要＞
 *   グループメンバ選択画面を表示します。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2012/03/02   FJ）	      新規作成
 *   v4.00.00    2013/02/09   FJ）庭山	  【ST4-2012-0000309】対応
 **********************************************************************/

package eo.web.webview.CKW02505SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CModelCommon;
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.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW10601SF.ZMW10601SFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKCommonConst;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.CKSV0043_CKSV0043OPDBMapper;
import eo.web.webview.mapping.CKSV0044_CKSV0044OPDBMapper;
import eo.web.webview.mapping.CKSV0046_CKSV0046OPDBMapper;

/**
 * 
 * グループメンバ選択を行います。
 * 
 * <BR>
 * @author 富士通
 */
public class CKW02505SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 初期表示処理
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		//基準日にオンライン運用日付を設定
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		bean.sendMessageString(CKW02505SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0043");

		// サービスの上りマッピング
		CKSV0043_CKSV0043OPDBMapper mapper = new CKSV0043_CKSV0043OPDBMapper();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		mapper.setCKSV004301SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);
		mapper.setCKSV004302SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);
		mapper.setCKSV004303SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// サービスの下りマッピング
		mapper.getCKSV004301SC(paramBean, outputMap);
		mapper.getCKSV004302SC(paramBean, outputMap);
		mapper.getCKSV004303SC(paramBean, outputMap);

		// 遷移先画面情報を設定
		setForwardInfo(JCKScreenConst.SCREEN_ID_CKW02505, JCKScreenConst.SCREEN_NAME_CKW02505);

		return true;
	}

	/**
	 * 住所検索画面を表示します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean codeAd() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 次画面への引継情報を作成
		HashMap<String, Object> infoParamMap = new HashMap<String, Object>();
		infoParamMap.put(ZMW10601SFConst.SESSION_KEY_PCD_1, getValue(bean, CKW02505SFConst.PCD_1));
		infoParamMap.put(ZMW10601SFConst.SESSION_KEY_PCD_2, getValue(bean, CKW02505SFConst.PCD_2));

		// 次画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, infoParamMap);

		// 戻り先画面情報を設定
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, JCKScreenConst.SCREEN_ID_CKW02505);

		// 遷移先画面情報を設定
		setForwardInfo(JZMScreenConst.SCREEN_ID_ZMW10601, JZMScreenConst.SCREEN_NAME_ZMW10601);

		return true;
	}

	/**
	 * 住所検索画面からの復帰処理を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean retSearchAd() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 戻り値情報を設定
		HashMap<String, Object> infoResultMap = JCCWebCommon.getScreenInfo(this);
		setValue(bean, CKW02505SFConst.PCD_1, (String)infoResultMap.get(ZMW10601SFConst.SESSION_RET_PCD_1));
		setValue(bean, CKW02505SFConst.PCD_2, (String)infoResultMap.get(ZMW10601SFConst.SESSION_RET_PCD_2));
		setValue(bean, CKW02505SFConst.AD_CD_1, (String)infoResultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_1));
		setValue(bean, CKW02505SFConst.AD_CD_2, (String)infoResultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_2));
		setValue(bean, CKW02505SFConst.AD_CD_3, (String)infoResultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_3));
		setValue(bean, CKW02505SFConst.AD_CD_4, (String)infoResultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_4));

		// 遷移先画面情報を設定
		setForwardInfo(JCKScreenConst.SCREEN_ID_CKW02505, JCKScreenConst.SCREEN_NAME_CKW02505);

		return true;
	}

	/**
	 * グループメンバ一覧検索を行います。
	 * <br>
	 * @return boolean グループメンバ一覧検索結果
	 * @throws Exception エラーが発生した場合
	 */
	public boolean search() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0044");
		
		//入力項目をサービスフォームBeanに設定
		//郵便番号(上3桁)、郵便番号2（下4桁）を連結
		String pcd = JPCUtilCommon.concatPcd(getValue(bean, CKW02505SFConst.PCD_1), getValue(bean, CKW02505SFConst.PCD_2));
		bean.sendMessageString(CKW02505SFConst.PCD, X31CWebConst.DATABEAN_SET_VALUE, pcd);
		//住所コード１〜４を連結
		String adCd1 = bean.sendMessageString(CKW02505SFConst.AD_CD_1, X31CWebConst.DATABEAN_GET_VALUE);
		String adCd2 = bean.sendMessageString(CKW02505SFConst.AD_CD_2, X31CWebConst.DATABEAN_GET_VALUE);
		String adCd3 = bean.sendMessageString(CKW02505SFConst.AD_CD_3, X31CWebConst.DATABEAN_GET_VALUE);
		String adCd4 = bean.sendMessageString(CKW02505SFConst.AD_CD_4, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(CKW02505SFConst.AD_CD, X31CWebConst.DATABEAN_SET_VALUE, adCd1 + adCd2 + adCd3 + adCd4);

		//検索条件を退避領域に格納
		setSearchParam();

		// グループメンバ一覧の初期化
		X31SDataBeanAccessArray mmb_List = bean.getDataBeanArray(CKW02505SFConst.MMB_LIST);
		mmb_List.clearArray();
		
		//検索結果表示有無フラグの初期化
		bean.sendMessageBoolean(CKW02505SFConst.MMBLISTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		//ページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JCKScreenConst.SCREEN_ID_CKW02505);

		// サービスの上りマッピング
		CKSV0044_CKSV0044OPDBMapper mapper = new CKSV0044_CKSV0044OPDBMapper();
		mapper.setCKSV004401CC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "CKSV004401CC", inputMap);

		//検索処理
		mmbSearch(paramBean, paramMap, inputMap, outputMap);

		return true;
	}

	/**
	 * ページリンクを行います。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合
	 */
	public boolean changePage() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0044");

		// グループメンバ一覧の初期化
		X31SDataBeanAccessArray mmb_List = bean.getDataBeanArray(CKW02505SFConst.MMB_LIST);
		mmb_List.clearArray();

		//検索結果表示有無フラグの初期化
		bean.sendMessageBoolean(CKW02505SFConst.MMBLISTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 検索条件の復元
		getSearchPram();

		// サービスの上りマッピング
		CKSV0044_CKSV0044OPDBMapper mapper = new CKSV0044_CKSV0044OPDBMapper();
		mapper.setCKSV004401CC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "CKSV004401CC", inputMap);

		//検索処理
		mmbSearch(paramBean, paramMap, inputMap, outputMap);

		return true;
	}

	/**
	 * ソートを行います。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean sort() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0044");

		// グループメンバ一覧の初期化
		X31SDataBeanAccessArray mmb_List = bean.getDataBeanArray(CKW02505SFConst.MMB_LIST);
		mmb_List.clearArray();

		// 退避情報の更新
		setBackupSortParam();
		
		// 検索条件の復元
		getSearchPram();

		//ページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JCKScreenConst.SCREEN_ID_CKW02505);
		
		// サービスの上りマッピング
		CKSV0044_CKSV0044OPDBMapper mapper = new CKSV0044_CKSV0044OPDBMapper();
		mapper.setCKSV004401CC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "CKSV004401CC", inputMap);

		//検索処理
		mmbSearch(paramBean, paramMap, inputMap, outputMap);

		return true;
	}

	/**
	 * 検索処理を行います。
	 * <br>
 	 * @param paramBean
 	 * @param paramMap
 	 * @param inputMap
 	 * @param outputMap
	 */
	public void mmbSearch(X31SDataBeanAccess[] paramBean,	HashMap<String, String> paramMap, 
			HashMap<String, HashMap<String, Object>> inputMap, HashMap<String, HashMap<String, Object>> outputMap)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return;
		}

		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("CKSV004401CC", outputMap);

		// 検索結果が0件の場合
		if("1".equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			return;
		}
		// 検索結果が最大検索件数超えの場合
		else if("2".equals(searchErrFlg))
		{
			String[] msg = {JCCWebCommon.getSearchConst("CKW02505_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, msg);
			return;
		}
		// 表示ページに該当するデータがない場合
		else if("3".equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
		}

		// サービスの下りマッピング
		CKSV0044_CKSV0044OPDBMapper mapper = new CKSV0044_CKSV0044OPDBMapper();
		mapper.getCKSV004401CC(paramBean, outputMap);

		// 検索結果表示有無フラグの初期化をtrueに設定
		bean.sendMessageBoolean(CKW02505SFConst.MMBLISTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, true);

		//選択行を先頭行に設定
		bean.sendMessageString(CKW02505SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "CKSV004401CC", outputMap);

		// 検索のコマンドIDを設定
		JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");

		// 検索条件の復元
		getSearchPram();

		// 遷移先画面情報を設定
		setForwardInfo(JCKScreenConst.SCREEN_ID_CKW02505, JCKScreenConst.SCREEN_NAME_CKW02505);

		return;
	}

	/**
	 * 選択ボタン押下時の処理を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean selectComfirm() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 選択行の取得
		X31SDataBeanAccessArray mmbList = bean.getDataBeanArray(CKW02505SFConst.MMB_LIST);
		String index = getValue(bean, CKW02505SFConst.SELECT_ROW);
		X31SDataBeanAccess selectBean = mmbList.getDataBean(Integer.parseInt(index));
		
		// 選択項目の取得
		String sysId = getValue(selectBean, CKW02505SFConst.SYSID_02);  //SYSID
		String eoId = getValue(selectBean, CKW02505SFConst.EOID_02);  //eoID
		String custNm = getValue(selectBean, CKW02505SFConst.CUST_NM_02);  //氏名
		String adNm = getValue(selectBean, CKW02505SFConst.AD_NM_02);  //住所
			
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0046");

		// サービスの上りマッピング
		CKSV0046_CKSV0046OPDBMapper mapper = new CKSV0046_CKSV0046OPDBMapper();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		mapper.setCKSV004601SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_2, sysId);

		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// サービスの下りマッピング
		mapper.getCKSV004601SC(paramBean, outputMap);
		String lastUpd = getValue(bean, CKW02505SFConst.LAST_UPD_DTM);  //最終更新年月日時分秒

		// 親画面の画面IDを取得
		String parentScreenId = JCCWebCommon.getScreenId(this);

		// 次画面への引継情報を作成
		HashMap<String, Object> infoParamMap = JCCWebCommon.getScreenInfo(this, parentScreenId);
		infoParamMap.put(CKW02505SFConst.SYSID_02, sysId);
		infoParamMap.put(CKW02505SFConst.EOID_02, eoId);
		infoParamMap.put(CKW02505SFConst.CUST_NM_02, custNm);
		infoParamMap.put(CKW02505SFConst.AD_NM_02, adNm);
		infoParamMap.put(CKW02505SFConst.LAST_UPD_DTM, lastUpd);

		// 親画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, parentScreenId, infoParamMap);
		
		//モーダル用反映画面へ画面遷移
		setForwardInfo(JCCScreenConst.SCREEN_ID_CCW00105, JCCScreenConst.SCREEN_NAME_CCW00105);
		
		return true;
	}

	/**
	 * 画面をクリアします。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean clear() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// コンボボックスのクリア
		clearComboBox(bean.getDataBeanArray(CKW02505SFConst.ID_KMK_1)); //ＩＤ項目1
		clearComboBox(bean.getDataBeanArray(CKW02505SFConst.AD)); //住所項目
		clearComboBox(bean.getDataBeanArray(CKW02505SFConst.TELNO_1)); //電話番号項目1

		// テキスト項目のクリア
		bean.sendMessage(CKW02505SFConst.ID_KMK_2, X31CWebConst.DATABEAN_CLEAR); // ＩＤ項目2
		bean.sendMessage(CKW02505SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_CLEAR); // サービス契約番号
		bean.sendMessage(CKW02505SFConst.CUST_KANA_NAME, X31CWebConst.DATABEAN_CLEAR); // お客様カナ名
		bean.sendMessage(CKW02505SFConst.PCD_1, X31CWebConst.DATABEAN_CLEAR); // 郵便番号(上3桁)
		bean.sendMessage(CKW02505SFConst.PCD_2, X31CWebConst.DATABEAN_CLEAR); // 郵便番号2（下4桁）
		bean.sendMessage(CKW02505SFConst.AD_CD_1, X31CWebConst.DATABEAN_CLEAR); // 住所コード1
		bean.sendMessage(CKW02505SFConst.AD_CD_2, X31CWebConst.DATABEAN_CLEAR); // 住所コード2
		bean.sendMessage(CKW02505SFConst.AD_CD_3, X31CWebConst.DATABEAN_CLEAR); // 住所コード3
		bean.sendMessage(CKW02505SFConst.AD_CD_4, X31CWebConst.DATABEAN_CLEAR); // 住所コード4
		bean.sendMessage(CKW02505SFConst.TELNO_2, X31CWebConst.DATABEAN_CLEAR); // 電話番号項目2
		bean.sendMessageBoolean(CKW02505SFConst.BBN_ICCHI, X31CWebConst.DATABEAN_SET_VALUE, false); // 部分一致

		// 退避情報をクリア
		clearBackup();

		// 一覧情報のクリア
		bean.getDataBeanArray(CKW02505SFConst.MMB_LIST).clearArray();

		//検索結果有無フラグをfalseに設定
		bean.sendMessageBoolean(CKW02505SFConst.MMBLISTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		
		// 遷移先画面情報を設定
		setForwardInfo(JCKScreenConst.SCREEN_ID_CKW02505, JCKScreenConst.SCREEN_NAME_CKW02505);

		return true;
	}

	/**
	 * データBeanに指定された項目の値を設定します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名
	 * @param value 設定値
	 */
	private void setValue(X31SDataBeanAccess bean, String itemName, String value)
	{
		bean.sendMessageString(itemName, X31CWebConst.DATABEAN_SET_VALUE, value);
	}

	/**
	 * データBeanから指定された項目の値を取得します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名
	 * <br>
	 * @return String 選択されているコード値
	 */
	private String getValue(X31SDataBeanAccess bean, String itemName)
	{
		return bean.sendMessageString(itemName, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * コンボボックスの内容をクリアします。<br>
	 * @param arraybean
	 */
	private void clearComboBox(X31SDataBeanAccessArray bean)
	{
		X31SDataBeanAccess subbean = bean.getDataBean(0);
		subbean.sendMessageString(CKW02505SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "");
	}

	/**
	 * ソートキーを退避領域に格納します。
	 * <br>
	 */
	private void setBackupSortParam()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// ソートキーを設定
		bean.sendMessageString(CKW02505SFConst.KEY_SORT_ITEM_NO_BK, X31CWebConst.DATABEAN_SET_VALUE, getValue(bean, CKW02505SFConst.SORT_ITEM_NO));
		bean.sendMessageString(CKW02505SFConst.KEY_SORT_KBN_BK, X31CWebConst.DATABEAN_SET_VALUE, getValue(bean, CKW02505SFConst.SORT_KBN));	
	}

	/**
	 * 検索条件を退避領域に格納します。
	 * <br>
	 */
	private void setSearchParam()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 退避情報の初期化
		clearBackup();

		// 入力項目を退避領域に格納
		setComboValue(CKW02505SFConst.ID_KMK_1_BK, bean.getDataBeanArray(CKW02505SFConst.ID_KMK_1)); // 退避用＿ＩＤ項目1
		setComboValue(CKW02505SFConst.AD_BK, bean.getDataBeanArray(CKW02505SFConst.AD)); // 退避用＿住所項目
		setComboValue(CKW02505SFConst.TELNO_1_BK, bean.getDataBeanArray(CKW02505SFConst.TELNO_1)); // 退避用＿電話番号項目1
		setValue(bean, CKW02505SFConst.ID_KMK_2_BK, getValue(bean, CKW02505SFConst.ID_KMK_2)); // 退避用＿ＩＤ項目2
		setValue(bean, CKW02505SFConst.SVC_KEI_NO_BK, getValue(bean, CKW02505SFConst.SVC_KEI_NO)); // 退避用＿サービス契約番号
		setValue(bean, CKW02505SFConst.CUST_KANA_BK, getValue(bean, CKW02505SFConst.CUST_KANA_NAME)); // 退避用＿お客様カナ名
		setValue(bean, CKW02505SFConst.PCD_BK, getValue(bean, CKW02505SFConst.PCD)); // 退避用＿郵便番号
		setValue(bean, CKW02505SFConst.AD_CD_BK, getValue(bean, CKW02505SFConst.AD_CD)); // 退避用＿住所コード
		setValue(bean, CKW02505SFConst.TELNO_2_BK, getValue(bean, CKW02505SFConst.TELNO_2)); // 退避用＿電話番号項目2
		setValue(bean, CKW02505SFConst.KEY_SORT_ITEM_NO_BK, getValue(bean, CKW02505SFConst.SORT_ITEM_NO)); // 退避用＿ソート項目No
		setValue(bean, CKW02505SFConst.KEY_SORT_KBN_BK, getValue(bean, CKW02505SFConst.SORT_KBN)); // 退避用＿ソート区分
		String temp = "0";
		if(bean.sendMessageBoolean(CKW02505SFConst.BBN_ICCHI, X31CWebConst.DATABEAN_GET_VALUE)) // 退避用＿部分一致
		{
			temp = "1";
		}
		
		setValue(bean, CKW02505SFConst.BBN_ICCHI_BK, temp);	
	}

	/**
	 * 退避領域から検索条件を再設定します。
	 * <br>
	 */
	private void getSearchPram()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//検索条件を再設定
		setComboIndex(CKW02505SFConst.ID_KMK_1, CKW02505SFConst.ID_KMK_1_BK); // ＩＤ項目1
		setComboIndex(CKW02505SFConst.AD, CKW02505SFConst.AD_BK); // 住所項目	
		setComboIndex(CKW02505SFConst.TELNO_1, CKW02505SFConst.TELNO_1_BK); // 電話番号項目1
		setValue(bean, CKW02505SFConst.ID_KMK_2, getValue(bean, CKW02505SFConst.ID_KMK_2_BK)); // ＩＤ項目2
		setValue(bean, CKW02505SFConst.SVC_KEI_NO, getValue(bean, CKW02505SFConst.SVC_KEI_NO_BK)); // サービス契約番号
		setValue(bean, CKW02505SFConst.CUST_KANA_NAME, getValue(bean, CKW02505SFConst.CUST_KANA_BK)); // お客様カナ名
		setValue(bean, CKW02505SFConst.PCD, getValue(bean, CKW02505SFConst.PCD_BK)); // 郵便番号
		setValue(bean, CKW02505SFConst.AD_CD, getValue(bean, CKW02505SFConst.AD_CD_BK)); // 住所コード
		setValue(bean, CKW02505SFConst.TELNO_2, getValue(bean, CKW02505SFConst.TELNO_2_BK)); // 電話番号項目2
		setValue(bean, CKW02505SFConst.SORT_ITEM_NO, getValue(bean, CKW02505SFConst.KEY_SORT_ITEM_NO_BK)); // ソート項目No
		setValue(bean, CKW02505SFConst.SORT_KBN, getValue(bean, CKW02505SFConst.KEY_SORT_KBN_BK)); // ソート区分
		if("1".equals(getValue(bean, CKW02505SFConst.BBN_ICCHI_BK)))
		{
			bean.sendMessageBoolean(CKW02505SFConst.BBN_ICCHI, X31CWebConst.DATABEAN_SET_VALUE, true); // 部分一致
		}
	}

	/**
	 * 退避領域の内容をクリアします。<br>
	 */
	private void clearBackup()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 退避項目の初期化
		bean.sendMessage(CKW02505SFConst.ID_KMK_1_BK, X31CWebConst.DATABEAN_CLEAR); // ＩＤ項目1
		bean.sendMessage(CKW02505SFConst.ID_KMK_2_BK, X31CWebConst.DATABEAN_CLEAR); // ＩＤ項目2
		bean.sendMessage(CKW02505SFConst.SVC_KEI_NO_BK, X31CWebConst.DATABEAN_CLEAR); // サービス契約番号
		bean.sendMessage(CKW02505SFConst.CUST_KANA_BK, X31CWebConst.DATABEAN_CLEAR); // お客様カナ名
		bean.sendMessage(CKW02505SFConst.BBN_ICCHI_BK, X31CWebConst.DATABEAN_CLEAR); // 部分一致
		bean.sendMessage(CKW02505SFConst.AD_BK, X31CWebConst.DATABEAN_CLEAR); // 住所項目
		bean.sendMessage(CKW02505SFConst.PCD_BK, X31CWebConst.DATABEAN_CLEAR); // 郵便番号
		bean.sendMessage(CKW02505SFConst.AD_CD_BK, X31CWebConst.DATABEAN_CLEAR); // 住所コード
		bean.sendMessage(CKW02505SFConst.TELNO_1_BK, X31CWebConst.DATABEAN_CLEAR); // 電話番号項目1
		bean.sendMessage(CKW02505SFConst.TELNO_2_BK, X31CWebConst.DATABEAN_CLEAR); // 電話番号項目2
		bean.sendMessage(CKW02505SFConst.KEY_SORT_ITEM_NO_BK, X31CWebConst.DATABEAN_CLEAR); // ソート項目No
		bean.sendMessage(CKW02505SFConst.KEY_SORT_KBN_BK, X31CWebConst.DATABEAN_CLEAR); // ソート区分
	}

	/**
	 * コンボボックスの選択インデックスから、選択された値をデータBeanに設定します。<br>
	 * @param itemName 項目名
	 * @param comboBean
	 */
	private void setComboValue(String itemName, X31SDataBeanAccessArray comboBean)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		String value = "";
		X31SDataBeanAccess subbean = comboBean.getDataBean(0);
		String index = subbean.sendMessageString(CKW02505SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		if((null != index) && (!"".equals(index)))
		{
			String cd_nm = subbean.sendMessageString(CKW02505SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			String[] valueList = cd_nm.split("\\.");
			if((null != valueList) && (valueList.length > 1))
			{
				value = valueList[1];
			}
			bean.sendMessageString(itemName, X31CWebConst.DATABEAN_SET_VALUE, value);
		}
	}

	/**
	 * 退避した選択項目の値よりコンボボックスの選択インデックスを設定します。<br>
	 * @param arraybean
	 * @param itemName 項目名
	 * @param itemName_bk 退避項目名
	 */
	private void setComboIndex(String itemName, String itemName_bk)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();
		X31SDataBeanAccessArray list = bean.getDataBeanArray(itemName);
		X31SDataBeanAccess subbean = list.getDataBean(0);

		//退避した選択項目の値を取得
		String value = bean.sendMessageString(itemName_bk, X31CWebConst.DATABEAN_GET_VALUE);

		//退避した選択項目の値と一致したリストの選択インデックスを設定
		int count = (Integer)subbean.sendMessage(CKW02505SFConst.CD_DIV_NM_LIST_01, X31CModelCommon.GET_COUNT);
		for (int i = 0; i < count; i++)
		{
			String tempNmList = subbean.sendMessageString(CKW02505SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			String[] tempValueList = tempNmList.split("\\.");
			if((null != tempValueList) && (tempValueList.length > 1))
			{
				String tempValue = tempValueList[1];
				if(tempValue.equals(value))
				{
					subbean.sendMessageString(CKW02505SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
					break;
				}
			}
		}
	}

	/**
	 * 画面遷移情報の設定をします。<br>
	 * @param next_id 遷移先画面ＩＤ
	 * @param next_nm 遷移先画面名
	 */
	private void setForwardInfo(String next_id, String next_nm)
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを共有フォームBeanの項目に設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, next_id);
		if (next_nm != null)
		{
			// 遷移先の画面名を共有フォームBeanの項目に設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, next_nm);
		}
	}
}
