/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW12301SFLogic
*   ソースファイル名：KKW12301SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月18日
*＜機能概要＞
*   金融機関検索画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/18   FJ）強矢    新規作成
*   v2.00.00    2011/10/28   FJ）馬場    SUB1修正
*
**********************************************************************/
package eo.web.webview.KKW12301SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0363_KKSV0363OPDBMapper;

/**
 * KKW12301のビューロジックです。<p>
 * <BR>
 * @author 富士通
 */
public class KKW12301SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean init() throws Exception
	{
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12301);
		
		return true;
	}
	
	/**
	 * 検索ボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean search() throws Exception
	{
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// DataBeanの金融機関一覧をクリア
		bean.getDataBeanArray(KKW12301SFConst.BANK_LIST).clearArray();
		
		// 前回検索したページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW12301);
		
		// 検索条件をバックアップ領域に退避する
		String bankCdBk = bean.sendMessageString(KKW12301SFConst.BANK_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String bankShitenCdBk = bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String bankNmBk = bean.sendMessageString(KKW12301SFConst.BANK_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String bankKanaBk = bean.sendMessageString(KKW12301SFConst.BANK_KANA, X31CWebConst.DATABEAN_GET_VALUE);
		String bankShitenNmBk = bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String bankShitenKanaBk = bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_KANA, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean.sendMessageString(KKW12301SFConst.BANK_CD_BK, X31CWebConst.DATABEAN_SET_VALUE, bankCdBk);
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_CD_BK, X31CWebConst.DATABEAN_SET_VALUE, bankShitenCdBk);
		bean.sendMessageString(KKW12301SFConst.BANK_NM_BK, X31CWebConst.DATABEAN_SET_VALUE, bankNmBk);
		bean.sendMessageString(KKW12301SFConst.BANK_KANA_BK, X31CWebConst.DATABEAN_SET_VALUE, bankKanaBk);
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_NM_BK, X31CWebConst.DATABEAN_SET_VALUE, bankShitenNmBk);
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_KANA_BK, X31CWebConst.DATABEAN_SET_VALUE, bankShitenKanaBk);
		
		// 検索、ページリンク共通処理
		searchCommon();
		
		return true;
	}
	
	/**
	 * ページリンク押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean changePage() throws Exception
	{
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// DataBeanの金融機関一覧をクリア
		bean.getDataBeanArray(KKW12301SFConst.BANK_LIST).clearArray();
		
		// バックアップから検索条件を復帰する
		String bankCd = bean.sendMessageString(KKW12301SFConst.BANK_CD_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String bankShitenCd = bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_CD_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String bankNm = bean.sendMessageString(KKW12301SFConst.BANK_NM_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String bankKana = bean.sendMessageString(KKW12301SFConst.BANK_KANA_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String bankShitenNm = bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_NM_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String bankShitenKana = bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_KANA_BK, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean.sendMessageString(KKW12301SFConst.BANK_CD, X31CWebConst.DATABEAN_SET_VALUE, bankCd);
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_CD, X31CWebConst.DATABEAN_SET_VALUE, bankShitenCd);
		bean.sendMessageString(KKW12301SFConst.BANK_NM, X31CWebConst.DATABEAN_SET_VALUE, bankNm);
		bean.sendMessageString(KKW12301SFConst.BANK_KANA, X31CWebConst.DATABEAN_SET_VALUE, bankKana);
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_NM, X31CWebConst.DATABEAN_SET_VALUE, bankShitenNm);
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_KANA, X31CWebConst.DATABEAN_SET_VALUE, bankShitenKana);
		
		// 検索、ページリンク共通処理
		searchCommon();
		
		return true;
	}
	
	/**
	 * クリアボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean clear() throws Exception
	{
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// DataBeanの金融機関一覧をクリア
		bean.getDataBeanArray(KKW12301SFConst.BANK_LIST).clearArray();
		
		// 前回検索したページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW12301);
		
		// 金融機関一覧を非表示にする
		bean.sendMessageBoolean(KKW12301SFConst.BANK_LIST_BFLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		
		// DataBean項目の値をクリアする。
		bean.sendMessageString(KKW12301SFConst.BANK_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12301SFConst.BANK_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12301SFConst.BANK_KANA, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12301SFConst.BANK_SHITEN_KANA, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12301);
		
		return true;
	}
	
	/**
	 * 選択ボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean choice() throws Exception
	{
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 選択行を取得する。
		int row = Integer.parseInt(bean.sendMessageString(KKW12301SFConst.SELECT_ROW, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 選択行のサービスフォームBeanの取得
		X31SDataBeanAccessArray beanArray = bean.getDataBeanArray(KKW12301SFConst.BANK_LIST);
		
		String selectedBankCd = beanArray.getDataBean(row).sendMessageString(KKW12301SFConst.BANK_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String selectedBankShitenCd = beanArray.getDataBean(row).sendMessageString(KKW12301SFConst.BANK_SHITEN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String selectedBankNm = beanArray.getDataBean(row).sendMessageString(KKW12301SFConst.BANK_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		String selectedBankShitenNm = beanArray.getDataBean(row).sendMessageString(KKW12301SFConst.BANK_SHITEN_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		String selectedBankKana = beanArray.getDataBean(row).sendMessageString(KKW12301SFConst.BANK_KANA_01, X31CWebConst.DATABEAN_GET_VALUE);
		String selectedBankShitenKana = beanArray.getDataBean(row).sendMessageString(KKW12301SFConst.BANK_SHITEN_KANA_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 前画面への引継情報(dataMap)を作成する。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("金融機関コード", selectedBankCd);
		paramMap.put("金融機関支店コード", selectedBankShitenCd);
		paramMap.put("金融機関名", selectedBankNm);
		paramMap.put("金融機関支店名", selectedBankShitenNm);
		paramMap.put("金融機関カナ名", selectedBankKana);
		paramMap.put("金融機関支店カナ名", selectedBankShitenKana);
		
		// 親画面の画面IDを取得する。
		String parentScreenId = JCCWebCommon.getScreenId(this);
		
		// 親画面に渡す情報を設定する
		JCCWebCommon.setScreenInfo(this, parentScreenId, paramMap);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定 
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		
		return true;
	}
	
	/**
	 * 検索、ページリンク共通処理
	 * <br>
	 * @return 
	 * @throws Exception エラーが発生した場合
	 */
	private void searchCommon() throws Exception
	{
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 検索条件を作成する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0363");
		KKSV0363_KKSV0363OPDBMapper mapper = new KKSV0363_KKSV0363OPDBMapper();
		mapper.setKKSV036301CC(paramBean, inputMap, "1");
		
		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV036301CC", inputMap);
		
		// サービスの呼び出し
		X31CMessageResult result = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(result != null)
		{
			JCCWebCommon.setMessageInfo(this, result);
			return;
		}
		
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV036301CC", outputMap);
		
		if("1".equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			
			// 金融機関一覧を非表示にする
			bean.sendMessageBoolean(KKW12301SFConst.BANK_LIST_BFLG, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			// 検索結果が0件のエラーメッセージを表示する
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			
			return;
		}
		else if("2".equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			
			// 金融機関一覧を非表示にする
			bean.sendMessageBoolean(KKW12301SFConst.BANK_LIST_BFLG, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			// 検索結果が最大検索件数超えのエラーメッセージを表示する
			String[] msg = {JCCWebCommon.getSearchConst("KKW12301_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, msg);
			
			return;
		}
		else if("3".equals(searchErrFlg))
		{
			// 表示ページに該当するデータがない場合の処理
			
			// 金融機関一覧を表示する
			bean.sendMessageBoolean(KKW12301SFConst.BANK_LIST_BFLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			
			// 先頭行を選択状態にする
			bean.sendMessageString(KKW12301SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 表示ページ該当データなしエラーを表示する
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
		}
		else
		{
			// 金融機関一覧を表示する
			bean.sendMessageBoolean(KKW12301SFConst.BANK_LIST_BFLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			
			// 先頭行を選択状態にする
			bean.sendMessageString(KKW12301SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		
		// サービス結果の転記
		mapper.getKKSV036301CC(paramBean, outputMap);
		
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "KKSV036301CC", outputMap);
		
		// 検索のコマンドIDを設定する
		JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW12301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW12301);
		
		return;
	}
	
}
