/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：KKW05901SFLogic
 *   ソースファイル名：KKW05901SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2012年02月20日
 *＜機能概要＞
 *   面開発案件情報一覧照会画面を表示します。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *	v3.00.00	2012/08/21	FJ）庭山	【ST2-2012-0001567】対応
 *	v4.00.00	2012/11/21	FJ）赤穂	【IT1-2012-0002041】対応
 *
 **********************************************************************/

package eo.web.webview.KKW05901SF;

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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0479_KKSV0479OPDBMapper;
import eo.web.webview.mapping.KKSV0480_KKSV0480OPDBMapper;

/**
 * 
 * 面開発案件情報一覧検索を行います。
 * 
 * <BR>
 * @author 富士通
 */
public class KKW05901SFLogic 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(KKW05901SFConst.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, "KKSV0479");

		// サービスの上りマッピング
		KKSV0479_KKSV0479OPDBMapper mapper = new KKSV0479_KKSV0479OPDBMapper();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		mapper.setKKSV047901SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);
		mapper.setKKSV047902SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);
		mapper.setKKSV047903SC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// 引継情報の取得
		HashMap<String, Object> screenInfoMap = JCCWebCommon.getScreenInfo(this);

		//引継情報が取得できない場合、検索フラグをfalseに設定
		if (null == screenInfoMap)
		{
			bean.sendMessageBoolean(KKW05901SFConst.SEARCHFLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		}
		else
		{
			//検索項目の復元
			getScreenInfoParam(screenInfoMap);

			//コンボボックスの値を退避領域に格納
			setValue(bean, KKW05901SFConst.KANA_KMK_1_BK, (String)screenInfoMap.get(KKW05901SFConst.KANA_KMK_1)); // カナ項目１
			setValue(bean, KKW05901SFConst.KANJI_KMK_1_BK, (String)screenInfoMap.get(KKW05901SFConst.KANJI_KMK_1)); // 漢字項目１
			setValue(bean, KKW05901SFConst.AD_STATE_BK, (String)screenInfoMap.get(KKW05901SFConst.AD_STATE)); // 住所(都道府県)
		}

		//再検索の場合
		if (true == bean.sendMessageBoolean(KKW05901SFConst.SEARCHFLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			//コンボボックスの値を取得
			String value_kana = (String)screenInfoMap.get(KKW05901SFConst.KANA_KMK_1); // カナ項目１
			String value_kanji = (String)screenInfoMap.get(KKW05901SFConst.KANJI_KMK_1); // 漢字項目１
			String value_adState = (String)screenInfoMap.get(KKW05901SFConst.AD_STATE); // 住所(都道府県)

			// 上りマッピング
			mapper.setKKSV047902CC(paramBean, inputMap, "1", value_kana, value_kanji, value_adState);

			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV047902CC", inputMap);
		}

		//検索条件を退避領域に格納
		setSearchParam();

		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// サービスの下りマッピング
		mapper.getKKSV047901SC(paramBean, outputMap);
		mapper.getKKSV047902SC(paramBean, outputMap);
		mapper.getKKSV047903SC(paramBean, outputMap);

		// 再検索の場合
		if (true == bean.sendMessageBoolean(KKW05901SFConst.SEARCHFLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV047902CC", outputMap);

			// 検索結果が0件の場合
			if ("1".equals(searchErrFlg))
			{
				JCCWebCommon.setMessageInfo(this, "EKB0330--I");
				return true;
			}
			// 検索結果が最大検索件数超えの場合
			else if ("2".equals(searchErrFlg))
			{
				String[] msg = {JCCWebCommon.getSearchConst("KKW05901_MAX_SHOW_CNT")};
				JCCWebCommon.setMessageInfo(this, "EKB0340--I", msg);
				return true;
			}
			// 表示ページに該当するデータがない場合
			else if ("3".equals(searchErrFlg))
			{
				//リスト選択行の初期化
				bean.sendMessageString(KKW05901SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
				
				JCCWebCommon.setMessageInfo(this, "EKB0350--I");
			}

			// サービスの下りマッピング
			mapper.getKKSV047902CC(paramBean, outputMap);

			// 面開発案件情報リストの表示
			bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, true);

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, "0", "KKSV047902CC", outputMap);

			// 検索のコマンドIDを設定
			JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");
		}
		// 検索条件の復元
		getSearchPram();

		// 遷移先画面情報を設定
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW05901, JKKScreenConst.SCREEN_NAME_KKW05901);

		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, "KKSV0480");

		// 面開発案件一覧の初期化
		X31SDataBeanAccessArray mnkht_List = bean.getDataBeanArray(KKW05901SFConst.MNKHT_ANKEN_INFO_LIST);
		mnkht_List.clearArray();

		//検索結果表示有無フラグの初期化
		bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		//リスト選択行の初期化
		bean.sendMessageString(KKW05901SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");

		//ページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW05901);

		// 住所（都道府県）
		setComboSelectValue(paramBean[0], KKW05901SFConst.AD_STATE);
		
		// サービスの上りマッピング
		KKSV0480_KKSV0480OPDBMapper mapper = new KKSV0480_KKSV0480OPDBMapper();

		mapper.setKKSV048001CC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV048001CC", inputMap);

		//検索条件を退避領域に格納
		setSearchParam();

		//検索処理
		mnkhSearch(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>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0480");

		// 検索条件の復元
		getSearchPram();

		// 面開発案件一覧の初期化
		X31SDataBeanAccessArray mnkht_List = bean.getDataBeanArray(KKW05901SFConst.MNKHT_ANKEN_INFO_LIST);
		mnkht_List.clearArray();

		//検索結果表示有無フラグの初期化
		bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		//リスト選択行の初期化
		bean.sendMessageString(KKW05901SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");

		// サービスの上りマッピング
		KKSV0480_KKSV0480OPDBMapper mapper = new KKSV0480_KKSV0480OPDBMapper();
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		mapper.setKKSV048001CC(paramBean, inputMap, JCKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV048001CC", inputMap);
		
		//検索処理
		mnkhSearch(paramBean, paramMap, inputMap, outputMap);

		return true;
	}

	/**
	 * 画面をクリアします。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean clear() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// コンボボックスのクリア
		clearComboBox(bean.getDataBeanArray(KKW05901SFConst.KANA_KMK_1));  //カナ項目１
		clearComboBox(bean.getDataBeanArray(KKW05901SFConst.KANJI_KMK_1)); //漢字項目１
		clearComboBox(bean.getDataBeanArray(KKW05901SFConst.AD_STATE));    //住所(都道府県)

		// テキスト項目のクリア
		bean.sendMessage(KKW05901SFConst.MNKHT_ANKEN_NO, X31CWebConst.DATABEAN_CLEAR); // 面開発案件番号
		bean.sendMessage(KKW05901SFConst.KANA_KMK_2, X31CWebConst.DATABEAN_CLEAR); // カナ項目２
		bean.sendMessage(KKW05901SFConst.KANJI_KMK_2, X31CWebConst.DATABEAN_CLEAR); // 漢字項目２
		bean.sendMessage(KKW05901SFConst.CMP_CD, X31CWebConst.DATABEAN_CLEAR); // キャンペーンコード
		bean.sendMessage(KKW05901SFConst.AD_CITY, X31CWebConst.DATABEAN_CLEAR); // 住所(市区町村)
		bean.sendMessage(KKW05901SFConst.AD_OAZTSU, X31CWebConst.DATABEAN_CLEAR); // 住所(大字通称)
		bean.sendMessage(KKW05901SFConst.AD_AZCHO, X31CWebConst.DATABEAN_CLEAR); // 住所(字町名)
		bean.sendMessage(KKW05901SFConst.AD_BNCHIGO, X31CWebConst.DATABEAN_CLEAR); // 住所(番地・号)
		
		// 選択行のクリア
		bean.sendMessage(KKW05901SFConst.CHOICE, X31CWebConst.DATABEAN_CLEAR);

		// 検索フラグをfalseに設定
		bean.sendMessageBoolean(KKW05901SFConst.SEARCHFLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 退避情報のクリア
		clearBackup();

		// 一覧情報のクリア
		bean.getDataBeanArray(KKW05901SFConst.MNKHT_ANKEN_INFO_LIST).clearArray();

		//検索結果有無フラグをfalseに設定
		bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		return true;
	}

	/**
	 * 面開発案件情報登録画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionAdd() throws Exception
	{			
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		HashMap<String, Object> returnMap = new HashMap<String, Object>();

		// 検索結果が表示されていた場合
		if (true == bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			//戻り先画面への引継情報を作成
			setReturnMap(returnMap);
			
			//再検索フラグtrue
			returnMap.put(KKW05901SFConst.SEARCHFLG, true);
		}

		//戻り先画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW05901, returnMap);

		//戻り先画面情報を設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW05902, JKKScreenConst.SCREEN_ID_KKW05901);
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW05904, JKKScreenConst.SCREEN_ID_KKW05901);

		// 遷移先画面情報を設定
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW05902, JKKScreenConst.SCREEN_NAME_KKW05902);

		return true;
	}

	/**
	 * 面開発案件情報更新画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionUpd() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 戻り先画面への引継情報を作成
		HashMap<String, Object> returnMap = new HashMap<String, Object>();
		setReturnMap(returnMap);

		// 検索結果が表示されていた場合、再検索フラグtrue
		if (true == bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			returnMap.put(KKW05901SFConst.SEARCHFLG, true);
		}
		
		// 戻り先画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW05901, returnMap);

		// 次画面への引継情報を作成_面開発案件情報一覧照会画面で選択した面開発案件番号を設定	
		HashMap<String, Object> nextMap = new HashMap<String, Object>();
		setNextMap(nextMap);
		
		// 次画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW05905, nextMap);

		// 戻り先画面情報を設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW05905, JKKScreenConst.SCREEN_ID_KKW05901);
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW05907, JKKScreenConst.SCREEN_ID_KKW05901);

		// 遷移先画面情報を設定
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW05905, JKKScreenConst.SCREEN_NAME_KKW05905);

		return true;
	}

	/**
	 * 面開発案件情報削除画面に遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionDel() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 戻り先画面への引継情報を作成
		HashMap<String, Object> returnMap = new HashMap<String, Object>();
		setReturnMap(returnMap);

		// 検索結果が表示されていた場合、再検索フラグtrue
		if (true == bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			returnMap.put(KKW05901SFConst.SEARCHFLG, true);
		}
		
		// 戻り先画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW05901, returnMap);

		// 次画面への引継情報を作成_面開発案件情報一覧照会画面で選択した面開発案件番号を設定
		HashMap<String, Object> nextMap = new HashMap<String, Object>();
		setNextMap(nextMap);
		
		// 次画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW05908, nextMap);

		// 戻り先画面情報を設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW05908, JKKScreenConst.SCREEN_ID_KKW05901);
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW05909, JKKScreenConst.SCREEN_ID_KKW05901);

		// 遷移先画面情報を設定
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW05908, JKKScreenConst.SCREEN_NAME_KKW05908);

		return true;
	}

	/**
	 * 検索処理を行います。
	 * @param paramBean
	 * @param paramMap
	 * @param inputMap
	 * @param outputMap
	 * <br>
	 */
	public void mnkhSearch(X31SDataBeanAccess[] paramBean,	
							HashMap<String, String> paramMap,
							HashMap<String, HashMap<String, Object>> inputMap,
							HashMap<String, HashMap<String, Object>> outputMap)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 共通情報の設定
		KKSV0480_KKSV0480OPDBMapper mapper = new KKSV0480_KKSV0480OPDBMapper();
		
		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return;
		}

		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV048001CC", outputMap);

		// 検索結果が0件の場合
		if ("1".equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			return;
		}
		// 検索結果が最大検索件数超えの場合
		else if ("2".equals(searchErrFlg))
		{
			String[] msg = {JCCWebCommon.getSearchConst("KKW05901_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, "EKB0340--I", msg);
			return;
		}
		// 表示ページに該当するデータがない場合
		else if ("3".equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, "EKB0350--I");
		}

		// サービスの下りマッピング
		mapper.getKKSV048001CC(paramBean, outputMap);

		// 検索条件の復元
		getSearchPram();

		//選択行を0番目に設定
		bean.sendMessageString(KKW05901SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 面開発案件情報リストの表示
		bean.sendMessageBoolean(KKW05901SFConst.SEARCHRSLTDSPUMFLG, X31CWebConst.DATABEAN_SET_VALUE, true);

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "KKSV048001CC", outputMap);

		// 検索のコマンドIDを設定
		JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");

		// 遷移先画面情報を設定
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW05901, JKKScreenConst.SCREEN_NAME_KKW05901);
		return;
	}
	
	/**
	 * データ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);
	}

	/**
	 * コンボボックスの選択インデックスから、選択された値をデータBeanに設定します。<br>
	 * @param comboBean
	 * @param itemName 項目名
	 */
	private void setComboValue(X31SDataBeanAccessArray comboBean, String itemName)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		String value = "";
		X31SDataBeanAccess subbean = comboBean.getDataBean(0);
		String index = subbean.sendMessageString(KKW05901SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		if ((null != index) && (!"".equals(index)))
		{
			String index_value = subbean.sendMessageString(KKW05901SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			String[] valueList = index_value.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(KKW05901SFConst.CD_DIV_NM_LIST_01, X31CModelCommon.GET_COUNT);
		for (int i = 0; i < count; i++)
		{
			String tempNmList = subbean.sendMessageString(KKW05901SFConst.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(KKW05901SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
					break;
				}
			}
		}
	}

	/**
	 * コンボボックスの内容をクリアします。<br>
	 * @param arraybean
	 */
	private void clearComboBox(X31SDataBeanAccessArray bean)
	{
		X31SDataBeanAccess subbean = bean.getDataBean(0);
		subbean.sendMessageString(KKW05901SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "");
	}

	/**
	 * 検索条件を退避領域に格納します。
	 * <br>
	 */
	private void setSearchParam()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 退避情報の初期化
		clearBackup();

		// 入力項目を退避領域に格納
		setComboValue(bean.getDataBeanArray(KKW05901SFConst.KANA_KMK_1), KKW05901SFConst.KANA_KMK_1_BK); // カナ項目１
		setComboValue(bean.getDataBeanArray(KKW05901SFConst.KANJI_KMK_1), KKW05901SFConst.KANJI_KMK_1_BK); // 漢字項目１
		setValue(bean, KKW05901SFConst.MNKHT_ANKEN_NO_BK, getValue(bean, KKW05901SFConst.MNKHT_ANKEN_NO)); // 面開発案件番号
		setValue(bean, KKW05901SFConst.KANA_KMK_2_BK, getValue(bean, KKW05901SFConst.KANA_KMK_2)); // カナ項目２
		setValue(bean, KKW05901SFConst.KANJI_KMK_2_BK, getValue(bean, KKW05901SFConst.KANJI_KMK_2)); // 漢字項目２
		setValue(bean, KKW05901SFConst.CMP_CD_BK, getValue(bean, KKW05901SFConst.CMP_CD)); // キャンペーンコード
		setComboValue(bean.getDataBeanArray(KKW05901SFConst.AD_STATE), KKW05901SFConst.AD_STATE_BK); // 住所(都道府県)
		setValue(bean, KKW05901SFConst.AD_CITY_BK, getValue(bean, KKW05901SFConst.AD_CITY)); // 住所(市区町村)
		setValue(bean, KKW05901SFConst.AD_OAZTSU_BK, getValue(bean, KKW05901SFConst.AD_OAZTSU)); // 住所(大字通称)
		setValue(bean, KKW05901SFConst.AD_AZCHO_BK, getValue(bean, KKW05901SFConst.AD_AZCHO)); // 住所(字町名)
		setValue(bean, KKW05901SFConst.AD_BNCHIGO_BK, getValue(bean, KKW05901SFConst.AD_BNCHIGO)); // 住所(番地・号)
	}

	/**
	 * 退避領域から検索条件を再設定します。
	 * <br>
	 */
	private void getSearchPram()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//検索条件を再設定
		setComboIndex(KKW05901SFConst.KANA_KMK_1, KKW05901SFConst.KANA_KMK_1_BK); // カナ項目１
		setComboIndex(KKW05901SFConst.KANJI_KMK_1, KKW05901SFConst.KANJI_KMK_1_BK); // 漢字項目１
		setValue(bean, KKW05901SFConst.MNKHT_ANKEN_NO, getValue(bean, KKW05901SFConst.MNKHT_ANKEN_NO_BK)); // 面開発案件番号
		setValue(bean, KKW05901SFConst.KANA_KMK_2, getValue(bean, KKW05901SFConst.KANA_KMK_2_BK)); // カナ項目２
		setValue(bean, KKW05901SFConst.KANJI_KMK_2, getValue(bean, KKW05901SFConst.KANJI_KMK_2_BK)); // 漢字項目２
		setValue(bean, KKW05901SFConst.CMP_CD, getValue(bean, KKW05901SFConst.CMP_CD_BK)); // キャンペーンコード
		setComboIndex(KKW05901SFConst.AD_STATE, KKW05901SFConst.AD_STATE_BK); // 住所(都道府県)
		setValue(bean, KKW05901SFConst.AD_CITY, getValue(bean, KKW05901SFConst.AD_CITY_BK)); // 住所(市区町村)
		setValue(bean, KKW05901SFConst.AD_OAZTSU, getValue(bean, KKW05901SFConst.AD_OAZTSU_BK)); // 住所(大字通称)
		setValue(bean, KKW05901SFConst.AD_AZCHO, getValue(bean, KKW05901SFConst.AD_AZCHO_BK)); // 住所(字町名)
		setValue(bean, KKW05901SFConst.AD_BNCHIGO, getValue(bean, KKW05901SFConst.AD_BNCHIGO_BK)); // 住所(番地・号)
	}

	/**
	 * 退避領域の内容をクリアします。
	 * <br>
	 */
	private void clearBackup()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 退避項目の初期化
		bean.sendMessage(KKW05901SFConst.KANA_KMK_2_BK, X31CWebConst.DATABEAN_CLEAR); // カナ項目２(退避用)
		bean.sendMessage(KKW05901SFConst.KANJI_KMK_2_BK, X31CWebConst.DATABEAN_CLEAR); // 漢字項目２(退避用)
		bean.sendMessage(KKW05901SFConst.MNKHT_ANKEN_NO_BK, X31CWebConst.DATABEAN_CLEAR); // 面開発案件番号(退避用)
		bean.sendMessage(KKW05901SFConst.CMP_CD_BK, X31CWebConst.DATABEAN_CLEAR); // キャンペーンコード(退避用)
		bean.sendMessage(KKW05901SFConst.AD_CITY_BK, X31CWebConst.DATABEAN_CLEAR); // 住所(市区町村)(退避用)
		bean.sendMessage(KKW05901SFConst.AD_OAZTSU_BK, X31CWebConst.DATABEAN_CLEAR); // 住所(大字通称)(退避用)
		bean.sendMessage(KKW05901SFConst.AD_AZCHO_BK, X31CWebConst.DATABEAN_CLEAR); // 住所(字町名)(退避用)
		bean.sendMessage(KKW05901SFConst.AD_BNCHIGO_BK, X31CWebConst.DATABEAN_CLEAR); // 住所(番地・号)(退避用)
		bean.sendMessage(KKW05901SFConst.MNKHT_ANKEN_NO_CHOICE, X31CWebConst.DATABEAN_CLEAR); // 選択した面開発案件番号
	}

	/**
	 * 画面戻り遷移時に必要な情報をHashMapに設定します。
	 * @param returnMap
	 * @return HashMap
	 */
	private HashMap<String, Object> setReturnMap(HashMap<String, Object> returnMap) 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		returnMap.put(KKW05901SFConst.KANA_KMK_1, getValue(bean, KKW05901SFConst.KANA_KMK_1_BK)); // カナ項目１
		returnMap.put(KKW05901SFConst.KANJI_KMK_1, getValue(bean, KKW05901SFConst.KANJI_KMK_1_BK)); // 漢字項目１
		returnMap.put(KKW05901SFConst.AD_STATE, getValue(bean, KKW05901SFConst.AD_STATE_BK)); // 住所(都道府県)
		returnMap.put(KKW05901SFConst.KANA_KMK_2, getValue(bean, KKW05901SFConst.KANA_KMK_2_BK)); // カナ項目２
		returnMap.put(KKW05901SFConst.KANJI_KMK_2, getValue(bean, KKW05901SFConst.KANJI_KMK_2_BK)); // 漢字項目２	
		returnMap.put(KKW05901SFConst.MNKHT_ANKEN_NO, getValue(bean, KKW05901SFConst.MNKHT_ANKEN_NO_BK)); // 面開発案件番号
		returnMap.put(KKW05901SFConst.CMP_CD, getValue(bean, KKW05901SFConst.CMP_CD_BK)); // キャンペーンコード
		returnMap.put(KKW05901SFConst.AD_CITY, getValue(bean, KKW05901SFConst.AD_CITY_BK)); // 住所(市区町村)
		returnMap.put(KKW05901SFConst.AD_OAZTSU, getValue(bean, KKW05901SFConst.AD_OAZTSU_BK)); // 住所(大字通称)
		returnMap.put(KKW05901SFConst.AD_AZCHO, getValue(bean, KKW05901SFConst.AD_AZCHO_BK)); // 住所(字町名)
		returnMap.put(KKW05901SFConst.AD_BNCHIGO, getValue(bean, KKW05901SFConst.AD_BNCHIGO_BK)); // 住所(番地・号)
		returnMap.put(KKW05901SFConst.CHOICE, getValue(bean, KKW05901SFConst.CHOICE)); // 選択行
		returnMap.put(KKW05901SFConst.MNKHT_ANKEN_NO_CHOICE, getSelectMkhtNo()); // 選択した面開発案件番号
		returnMap.put(KKW05901SFConst.SEARCHFLG, getValue(bean, KKW05901SFConst.SEARCHFLG)); // 検索フラグ

		return returnMap;
	}

	/**
	 * 次画面遷移時に必要な情報をHashMapに設定します。
	 * @param nextMap
	 * @return HashMap 処理結果
	 */
	private HashMap<String, Object> setNextMap(HashMap<String, Object> nextMap) 
	{
		nextMap.put(KKW05901SFConst.MNKHT_ANKEN_NO_02, getSelectMkhtNo());
		return nextMap;
	}

	/**
	 * 画面遷移情報の設定をします。<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);
		}
	}

	/**
	 * 一覧で選択されている面開発案件番号を取得します。
	 * @return String
	 */
	private String getSelectMkhtNo()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 選択された面開発案件番号の取得
		String index = getValue(bean, KKW05901SFConst.CHOICE);

		if (null == index || "".equals(JCCWebCommon.trim(index)))
		{
			return "";
		}
		X31SDataBeanAccessArray mkhttList = bean.getDataBeanArray(KKW05901SFConst.MNKHT_ANKEN_INFO_LIST);
		X31SDataBeanAccess selectBean = mkhttList.getDataBean(Integer.parseInt(index));

		return getValue(selectBean, KKW05901SFConst.MNKHT_ANKEN_NO_02);
	}

	/**
	 * 画面遷移時の引継ぎ項目をデータBeanに設定します。
	 * @param screenInfoMap 引継ぎ項目
	 * <br>
	 */
	private void getScreenInfoParam(HashMap<String, Object> screenInfoMap)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 引継ぎ項目を画面に設定
		bean.sendMessageString(KKW05901SFConst.MNKHT_ANKEN_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.MNKHT_ANKEN_NO));
		bean.sendMessageString(KKW05901SFConst.KANA_KMK_2, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.KANA_KMK_2));
		bean.sendMessageString(KKW05901SFConst.KANJI_KMK_2, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.KANJI_KMK_2));
		bean.sendMessageString(KKW05901SFConst.CMP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.CMP_CD));
		bean.sendMessageString(KKW05901SFConst.AD_CITY, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.AD_CITY));
		bean.sendMessageString(KKW05901SFConst.AD_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.AD_OAZTSU));
		bean.sendMessageString(KKW05901SFConst.AD_AZCHO, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.AD_AZCHO));
		bean.sendMessageString(KKW05901SFConst.AD_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.AD_BNCHIGO));
		bean.sendMessageString(KKW05901SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, (String)screenInfoMap.get(KKW05901SFConst.CHOICE));
		bean.sendMessageString(KKW05901SFConst.MNKHT_ANKEN_NO_CHOICE,
								X31CWebConst.DATABEAN_SET_VALUE,
								(String)screenInfoMap.get(KKW05901SFConst.MNKHT_ANKEN_NO_CHOICE));
		bean.sendMessageBoolean(KKW05901SFConst.SEARCHFLG, X31CWebConst.DATABEAN_SET_VALUE, (Boolean)screenInfoMap.get(KKW05901SFConst.SEARCHFLG));
	}
	
	/**
	 * コンボボックスで選択されている値を退避領域に格納します。
	 * <br>
	 * @param bean 画面情報
	 * @param comboItemName コンボボックスアイテム名
	 * <br>
	 */
	private void setComboSelectValue(X31SDataBeanAccess bean, String comboItemName)
	{
		X31SDataBeanAccess subBean = bean.getDataBeanArray(comboItemName).getDataBean(0);
		String index = subBean.sendMessageString(KKW05901SFConst.SELECT_INDEX_01, X31CModelCommon.GET_VALUE);
		String selectCd = "";
		String selectNm = "";
		
		if (index != null && !"".equals(index))
		{
			selectCd = subBean.sendMessageString(KKW05901SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			selectNm = subBean.sendMessageString(KKW05901SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
		}
		
		subBean.sendMessageString(KKW05901SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_SET_VALUE, selectCd);
		subBean.sendMessageString(KKW05901SFConst.CD_DIV_NM_01, X31CWebConst.DATABEAN_SET_VALUE, selectNm);
	}
	
}
