//***********************************************************************************************
//*  CRW01501SF01DBean.java                 All Rights reserved,Copyright (c) K-Opticom   *
//***********************************************************************************************
/*
履歴：
	NO	日付			更新者								    内容
	01	2011.04.01		Webクライアント定義ツール 2.0.28		新規作成
*/

/**
 * <DL>
 * <DT>名前
 * <p>
 * <DT>説明: 
 * <DD>データの初期化.
 * <DD> generated by Web Client tool V01/L01.
 * </DL>
*/
package eo.web.webview.CRW06101SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW06203SF.CRW06203SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.mapping.CRSV0001_CRSV0001OPDBMapper;
import eo.web.webview.mapping.CRSV0006_CRSV0006OPDBMapper;
import eo.web.webview.mapping.CRSV0040_CRSV0040OPDBMapper;

/**
 * 問合せＮＧワード情報一覧照会ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW06101SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示処理.<br>
	 * 初期表示を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean init() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケース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>();

		// (1)引継情報の取得
		// なし。
		
		// (2)サービスフォームBeanの設定
		// (a)サービスフォームBeanの全項目をクリアする。
		bean.sendMessage(CRW06101SFConst.KEYWORD_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW06101SFConst.KEYWORD_SBT).clearArray();
		bean.sendMessage(CRW06101SFConst.STDARD_YEAR, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW06101SFConst.STDARD_MON, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW06101SFConst.STDARD_DAY, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW06101SFConst.TOTAL_NUM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW06101SFConst.BK_KEYWORD_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW06101SFConst.BK_KEYWORD_SBT_CD_IDX, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW06101SFConst.BK_STDARD_YMD, X31CWebConst.DATABEAN_CLEAR);

		// 一覧のクリア
		bean.getDataBeanArray(CRW06101SFConst.ECR0061B010CBSMSG1LIST).clearArray();
		
		// (b)システム日付の取得
		String sysDate = JCRWebCommon.getSysDate();
		
		// (c)サービスフォームBean項目の設定
		// 適用基準年
		bean.sendMessageString(CRW06101SFConst.STDARD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.toYearFromYmd(sysDate));
		// 適用基準月
		bean.sendMessageString(CRW06101SFConst.STDARD_MON, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.toMonthFromYmd(sysDate));
		// 適用基準日
		bean.sendMessageString(CRW06101SFConst.STDARD_DAY, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.toDayFromYmd(sysDate));
		// 見出し表示フラグ
		bean.sendMessageBoolean(CRW06101SFConst.SEARCH_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0001");

		// マッピングクラス
		CRSV0001_CRSV0001OPDBMapper mapper = new CRSV0001_CRSV0001OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV000101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		if (dataMap.containsKey("CRSV000101SC"))
		{
			((HashMap<String, Object>)dataMap.get("CRSV000101SC")).put("key_stdardymd", sysDate);
		}

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// マッピング処理（下り）
		mapper.getCRSV000101SC(paramBean, outputMap);

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW06101);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW06101);

		return true;
	}

	/**
	 * 検索ボタン押下.<br>
	 * キーワード情報の一覧検索する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean search() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケース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>();

		// キーワード種別用Bean
		X31SDataBeanAccessArray keywordSbtArray = bean.getDataBeanArray(CRW06101SFConst.KEYWORD_SBT);
		X31SDataBeanAccess keywordSbtBean = keywordSbtArray.getDataBean(0);

		// (1)引継情報の取得
		// (a)画面情報設定部品（JCRWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		HashMap<String, Object> searchMap = JCRWebCommon.getScreenInfo(this);

		// (2)サービスフォームBeanの設定
		if (searchMap != null && searchMap.containsKey("searched_flg") && "1".equals(searchMap.get("searched_flg").toString()))
		{

			// (a)未検索の場合、以降の処理は行わない
			if (JCRUtilCommon.isNull(bean.sendMessageString(CRW06101SFConst.BK_KEYWORD_NM, X31CWebConst.DATABEAN_GET_VALUE))
				&& JCRUtilCommon.isNull(bean.sendMessageString(CRW06101SFConst.BK_KEYWORD_SBT_CD_IDX, X31CWebConst.DATABEAN_GET_VALUE))
				&& JCRUtilCommon.isNull(bean.sendMessageString(CRW06101SFConst.BK_STDARD_YMD, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 遷移先画面の設定
				// 遷移先画面ID、名称の設定
				commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
						, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW06101);
				commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
						, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW06101);
				return true;
			}
			
			// (b)検索済みの場合
			// 問合せＮＧワード名
			bean.sendMessageString(CRW06101SFConst.KEYWORD_NM, X31CWebConst.DATABEAN_SET_VALUE
					, bean.sendMessageString(CRW06101SFConst.BK_KEYWORD_NM, X31CWebConst.DATABEAN_GET_VALUE));
			// キーワード種別コードインデックスの取得
			String selectedIndex = bean.sendMessageString(CRW06101SFConst.BK_KEYWORD_SBT_CD_IDX, X31CWebConst.DATABEAN_GET_VALUE);
			keywordSbtBean.sendMessageString(CRW06101SFConst.L0_KEYWORD_SBT_CD_IDX_01, X31CWebConst.DATABEAN_SET_VALUE, selectedIndex);

			// 退避用適用基準年月日
			String bkStdardYmd = bean.sendMessageString(CRW06101SFConst.BK_STDARD_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			String stdardYear = JCRWebCommon.toYearFromYmd(bkStdardYmd);
			String stdardMon = JCRWebCommon.toMonthFromYmd(bkStdardYmd);
			String stdardDay = JCRWebCommon.toDayFromYmd(bkStdardYmd);
			// 適用基準年
			bean.sendMessageString(CRW06101SFConst.STDARD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, stdardYear == null ? "" : stdardYear);
			// 適用基準月
			bean.sendMessageString(CRW06101SFConst.STDARD_MON, X31CWebConst.DATABEAN_SET_VALUE, stdardMon == null ? "" : stdardMon);
			// 適用基準日
			bean.sendMessageString(CRW06101SFConst.STDARD_DAY, X31CWebConst.DATABEAN_SET_VALUE, stdardDay == null ? "" : stdardDay);

		}

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0006");

		// マッピングクラス
		CRSV0006_CRSV0006OPDBMapper mapper = new CRSV0006_CRSV0006OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV000601SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)キーワード一覧照会明細リストをクリアする。
		bean.getDataBeanArray(CRW06101SFConst.ECR0061B010CBSMSG1LIST).clearArray();

		// (b)サービスの処理結果を取得する。
		mapper.getCRSV000601SC(paramBean, outputMap);

		// (c)サービスフォームBean項目の設定
		// 検索結果表示フラグに"TRUE"を設定する
		bean.sendMessageBoolean(CRW06101SFConst.SEARCH_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
		
		// 検索結果が0件の場合
		if (JCRStrConst.TOTAL_SEARCH_NUM_ZERO.equals(bean.sendMessageString(CRW06101SFConst.TOTAL_NUM, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			//検索結果:指定されたデータが存在しません。
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I, new String[]{""});
		}

		// (d)キーワード適用終了年月日の置換え（20991231→ブランク）
		JZMWebCommon.replaceTendymd(bean, CRW06101SFConst.ECR0061B010CBSMSG1LIST, CRW06101SFConst.L1_KEYWORD_TENDYMD_02);

		// 検索キーを退避させる。
		bean.sendMessageString(CRW06101SFConst.BK_KEYWORD_NM, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(CRW06101SFConst.KEYWORD_NM, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW06101SFConst.BK_KEYWORD_SBT_CD_IDX, X31CWebConst.DATABEAN_SET_VALUE, 
				keywordSbtBean.sendMessageString(CRW06101SFConst.L0_KEYWORD_SBT_CD_IDX_01, X31CWebConst.DATABEAN_GET_VALUE));
		String stdardYmd = JCRUtilCommon.concatYmd(
				bean.sendMessageString(CRW06101SFConst.STDARD_YEAR, X31CWebConst.DATABEAN_GET_VALUE)
				, bean.sendMessageString(CRW06101SFConst.STDARD_MON, X31CWebConst.DATABEAN_GET_VALUE)
				, bean.sendMessageString(CRW06101SFConst.STDARD_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW06101SFConst.BK_STDARD_YMD, X31CWebConst.DATABEAN_SET_VALUE, stdardYmd != null ? stdardYmd : "");

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW06101);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW06101);

		return true;
	}

	/**
	 * 問合せNGワード番号リンク押下.<br>
	 * 押下された問合せNGワード番号の存在チェックを行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clickLinkToiawaseNgword() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケース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>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		String slctDetailIndex = bean.sendMessageString(CRW06101SFConst.SLCT_DETAIL_INDEX
				, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray detailBeanList = bean.getDataBeanArray(CRW06101SFConst.ECR0061B010CBSMSG1LIST);
		X31SDataBeanAccess detailBean = detailBeanList.getDataBean(Integer.parseInt(slctDetailIndex));
		String slctKeywordNo = detailBean.sendMessageString(CRW06101SFConst.L1_KEYWORD_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(CRW06101SFConst.SLCT_KEYWORD_NO, X31CWebConst.DATABEAN_SET_VALUE, slctKeywordNo);

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0040");

		// マッピングクラス
		CRSV0040_CRSV0040OPDBMapper mapper = new CRSV0040_CRSV0040OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV004001SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		mapper.getCRSV004001SC(paramBean, outputMap);
		
		// (b)対象データの有無を判定する。
		// 対象データが存在する場合、サービスフォームBeanを設定する。
		if("".equals(bean.sendMessageString(CRW06101SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			bean.sendMessageString(CRW06101SFConst.SUB_WINDOW_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		// (b)対象データが存在しない場合
		// エラーメッセージを設定する
		else
		{
			JCRWebCommon.setMessageInfo(this, "EKB0300-KW", new String[]{"キーワード", "問合せNGワード番号"});
		}

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW06101);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW06101);
		
		return true;
	}

	/**
	 * 新規登録ボタン押下.<br>
	 * 問合せNGワード情報登録画面に遷移する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean insert() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// 戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		// 子画面に親画面の画面IDを設定
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW06202
				, JCRScreenConst.SCREEN_ID_CRW06101);

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW06201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW06201);

		return true;
	}

	/**
	 * クリアボタン押下.<br>
	 * 画面をクリアする。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clear() throws Exception
	{
		// (1)3.1 初期表示処理(init())を行う。
		return this.init();
	}

	/**
	 * サブ画面表示.<br>
	 * 問合せNGワード情報詳細画面に遷移する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean showWindow() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 子画面に渡す情報用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// キーワード番号
		String keywordNo = bean.sendMessageString(CRW06101SFConst.SLCT_KEYWORD_NO
				, X31CWebConst.DATABEAN_GET_VALUE);

		// (a)次画面への引継情報(dataMap)を作成する。
		// 子画面に渡す情報をHashMapに設定する
		paramMap.put(CRW06203SFConst.KEYWORD_NO, keywordNo);

		// (b)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		// 子画面に渡す情報を設定
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW06203, paramMap);

		// (c)戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		// 子画面に親画面の画面IDを設定
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW06205
				, JCRScreenConst.SCREEN_ID_CRW06101);
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW06206
				, JCRScreenConst.SCREEN_ID_CRW06101);

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW06203);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW06203);

		return true;
	}

}
