/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNW01501SFLogic
*	ソースファイル名：CNW01501SFLogic.java
*	作成者			：EK902814
*	日付			：2011年11月05日
*＜機能概要＞
*	コンテンツ料金コード変換一覧照会のViewロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*
********************************************************************************/

package eo.web.webview.CNW01501SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
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 com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCNScreenConst;
import eo.web.webview.common.JCNWebCommon;
import eo.web.webview.common.JCNWebConst;
import eo.web.webview.mapping.CNSV0027_CNSV0027OPDBMapper;

/**
 * コンテンツ料金コード変換一覧照会のViewロジック<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CNW01501SFLogic extends JCCWebBusinessLogic
{

	private static final String BLANK_STRING = "";
	/**
	 * 親クラス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 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean action_init() throws Exception
	{

	    // 共通Bean取得
	    X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

	    // 親画面のBean取得
	    X31SDataBeanAccess bean = super.getServiceFormBean();

	    // マッピングクラスに渡すため、配列に作り変える
	    X31SDataBeanAccess[] paramBean = {bean};
	    
	    // ユースケースID格納用マップ生成
	    HashMap paramMap = new HashMap();
	    // ユースケースID設定
	    paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CNSV0027");

	    // マッピングクラスのインスタンス作成
	    CNSV0027_CNSV0027OPDBMapper mapper = new CNSV0027_CNSV0027OPDBMapper();
	    HashMap dataMap = new HashMap();
	    mapper.setCNSV002701SC(paramBean, dataMap, "1");
	    
	    // ページング用マップ取得
	    HashMap<String, Object> pagingMap = (HashMap)dataMap.get("CNSV002701SC");
	    // 検索処理パターン設定
	    pagingMap.put(JCNWebConst.PAGING_INFO_SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN);
	    // 最大検索件数設定
	    pagingMap.put(JCNWebConst.PAGING_INFO_MAX_SEARCH_NUM, JCCWebCommon.getSearchConst("CNW01501_MAX_SHOW_CNT"));
	    // 表示件数設定
	    pagingMap.put(JCNWebConst.PAGING_INFO_DISPLAY_NUM, JCCWebCommon.getSearchConst("CNW01501_ROW_PER_PAGE"));
	    // ページング初期設定
	    JCCWebCommon.upmapperPageLinkInfo(this, "CNSV002701SC", dataMap);

	    // 検索結果格納用マップ生成
	    HashMap outputMap = new HashMap();

	    // SQL呼出し
	    X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

	    // エラー処理 
	    if(null != msgResult){
	        JCCWebCommon.setMessageInfo(this, msgResult);
	        return true;
	    }
	    
	    // 検索結果の取り出し
	    mapper.getCNSV002701SC(paramBean, outputMap);

		// 検索エラーフラグの取得
		String searchError = JCCWebCommon.getSearchErrFlg("CNSV002701SC", outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchError))
		{
			// 検索結果０件
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_ZERO);
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchError))
		{
			// 検索最大件数オーバー
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_MAXOVER, new String[] {JCCWebCommon.getSearchConst("CNW01501_MAX_SHOW_CNT")});
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchError))
		{
			// 表示ページに該当するデータなし
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_NODATA);
		}
	    
	    // ページング情報の設定
	    JCCWebCommon.downmapperPageLinkInfo(this, "CNSV002701SC", outputMap);
	    // 検索のコマンドIDを設定する。
	    JCCWebCommon.setSearchCommand(this, "PAGING");

		// 遷移元画面IDの取得
		String nextScreenId = JCCWebCommon.getScreenId(this);
		if (nextScreenId != null)
		{
			// 戻るボタンに切替
			bean.sendMessageBoolean(CNW01501SFConst.CLOSE_CTRL, X31CWebConst.DATABEAN_SET_VALUE, false);
		}

	    // 遷移先の画面IDを共有フォームBeanの項目に設定する。
	    commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
	            X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW01501);
	    
	    // 遷移先の画面名を共有フォームBeanの項目に設定する。
	    commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
	            X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW01501);

	    return true;

	}

	/**
	 * ページングリンク押下時の処理を行います。<br>
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_paging() throws Exception
	{

		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// マッピングクラスに渡すため、配列に作り変える
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ユースケースID格納用マップ生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		// ユースケースID設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CNSV0027");

		// マッピングクラスのインスタンス作成
		CNSV0027_CNSV0027OPDBMapper mapper = new CNSV0027_CNSV0027OPDBMapper();
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		mapper.setCNSV002701SC(paramBean, dataMap, "1");

		// ページング用マップ取得
		HashMap<String, Object> pagingMap = (HashMap)dataMap.get("CNSV002701SC");
		// 検索処理パターン設定
		pagingMap.put(JCNWebConst.PAGING_INFO_SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN);
		// 最大検索件数設定
		pagingMap.put(JCNWebConst.PAGING_INFO_MAX_SEARCH_NUM, JCCWebCommon.getSearchConst("CNW01501_MAX_SHOW_CNT"));
		// 表示件数設定
		pagingMap.put(JCNWebConst.PAGING_INFO_DISPLAY_NUM, JCCWebCommon.getSearchConst("CNW01501_ROW_PER_PAGE"));
		// ページング初期設定
		JCCWebCommon.upmapperPageLinkInfo(this, "CNSV002701SC", dataMap);

		// 検索結果格納用マップ生成
		HashMap outputMap = new HashMap();

		// SQL呼出し
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

		// エラー処理 
		if(null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// beanのクリア
		bean.getDataBeanArray(CNW01501SFConst.ECN0311B001CBSMSG1LIST).clearArray();

		// 検索結果の取り出し
		mapper.getCNSV002701SC(paramBean, outputMap);

		// 検索エラーフラグの取得
		String searchError = JCCWebCommon.getSearchErrFlg("CNSV002701SC", outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchError))
		{
			// 検索結果０件
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_ZERO);
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchError))
		{
			// 検索最大件数オーバー
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_MAXOVER, new String[] {JCCWebCommon.getSearchConst("CNW01501_MAX_SHOW_CNT")});
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchError))
		{
			// 表示ページに該当するデータなし
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_NODATA);
		}
		
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "CNSV002701SC", outputMap);
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "PAGING");

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW01501);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW01501);

		return true;
	}


	/**
	 * コンテンツ料金コード変換一覧照会の新規登録ボタン押下時の処理を行います。<br>
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_insert() throws Exception
	{
		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, JCNScreenConst.SCREEN_ID_CNW01501, dataMap);
		JCCWebCommon.setScreenId(this, JCNScreenConst.SCREEN_ID_CNW01502, JCNScreenConst.SCREEN_ID_CNW01501);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW01502);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW01502);

		return true;
	}
	
	/**
	 * コンテンツ料金コード変換一覧照会の更新ボタン押下時の処理を行います。<br>
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_update() throws Exception
	{
		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		// 選択されたラジオボタンの値を取得
		String chkValue = bean.sendMessageString(CNW01501SFConst.RADIO_BTN_SELECT_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (BLANK_STRING.equals(chkValue))
		{
			// 「更新」する明細が選択されていません
			JCCWebCommon.setMessageInfo(this, "EKB0800-NW", new String[] {"更新"});
			return true;
		}
		
		// 選択された列のDataBeanを取り出す
		X31SDataBeanAccess subBean = null;
		X31SDataBeanAccessArray targetInfo = bean.getDataBeanArray(CNW01501SFConst.ECN0311B001CBSMSG1LIST);
		int targetCnt = Integer.parseInt(chkValue);
		// コンテンツ料金コード変換一覧照会のBean取得
		subBean = targetInfo.getDataBean(targetCnt);

		// 選択された情報を取得する
		String contPrcCdChg = subBean.sendMessageString(CNW01501SFConst.CONT_PRC_CD_CHG_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String contSvcCd = subBean.sendMessageString(CNW01501SFConst.CONT_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String taxarea = subBean.sendMessageString(CNW01501SFConst.TAXAREA_01, X31CWebConst.DATABEAN_GET_VALUE);
		String prcSvcCd = subBean.sendMessageString(CNW01501SFConst.PRC_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String prcKmkCd = subBean.sendMessageString(CNW01501SFConst.PRC_KMK_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String prcUwNm = subBean.sendMessageString(CNW01501SFConst.PRC_UW_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		String staYmd = subBean.sendMessageString(CNW01501SFConst.CONT_PRC_CD_CHG_TSTAYMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String endYmd = subBean.sendMessageString(CNW01501SFConst.CONT_PRC_CD_CHG_TENDYMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String lastUpd = subBean.sendMessageString(CNW01501SFConst.UPD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);

		// 移送データ設定
		dataMap.put(CNW01501SFConst.CONT_PRC_CD_CHG_NO_01, contPrcCdChg);
		dataMap.put(CNW01501SFConst.CONT_SVC_CD_01, contSvcCd);
		dataMap.put(CNW01501SFConst.TAXAREA_01, taxarea);
		dataMap.put(CNW01501SFConst.PRC_SVC_CD_01, prcSvcCd);
		dataMap.put(CNW01501SFConst.PRC_KMK_CD_01, prcKmkCd);
		dataMap.put(CNW01501SFConst.PRC_UW_NM_01, prcUwNm);
		dataMap.put(CNW01501SFConst.CONT_PRC_CD_CHG_TSTAYMD_01, staYmd);
		dataMap.put(CNW01501SFConst.CONT_PRC_CD_CHG_TENDYMD_01, endYmd);
		dataMap.put(CNW01501SFConst.UPD_DTM_01, lastUpd);

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, JCNScreenConst.SCREEN_ID_CNW01505, dataMap);
		JCCWebCommon.setScreenId(this, JCNScreenConst.SCREEN_ID_CNW01505, JCNScreenConst.SCREEN_ID_CNW01501);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW01505);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW01505);

		return true;
	}

	/**
	 * コンテンツ料金コード変換一覧照会の削除ボタン押下時の処理を行います。<br>
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_delete() throws Exception
	{
		// 解約確認画面のメッセージエリアの背景色を黄色で設定
		JCNWebCommon.setMessageAreaBackColor(this, "1");
		
		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		// 選択されたラジオボタンの値を取得
		String chkValue = bean.sendMessageString(CNW01501SFConst.RADIO_BTN_SELECT_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (BLANK_STRING.equals(chkValue))
		{
			// 「削除」する明細が選択されていません
			JCCWebCommon.setMessageInfo(this, "EKB0800-NW", new String[] {"削除"});
			return true;
		}
		
		// 選択された列のDataBeanを取り出す
		X31SDataBeanAccess subBean = null;
		X31SDataBeanAccessArray targetInfo = bean.getDataBeanArray(CNW01501SFConst.ECN0311B001CBSMSG1LIST);
		int targetCnt = Integer.parseInt(chkValue);
		// コンテンツ料金コード変換一覧照会のBean取得
		subBean = targetInfo.getDataBean(targetCnt);

		// 選択された情報を取得する
		String contPrcCdChg = subBean.sendMessageString(CNW01501SFConst.CONT_PRC_CD_CHG_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String contSvcCd = subBean.sendMessageString(CNW01501SFConst.CONT_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String taxarea = subBean.sendMessageString(CNW01501SFConst.TAXAREA_01, X31CWebConst.DATABEAN_GET_VALUE);
		String prcSvcCd = subBean.sendMessageString(CNW01501SFConst.PRC_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String prcKmkCd = subBean.sendMessageString(CNW01501SFConst.PRC_KMK_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String prcUwNm = subBean.sendMessageString(CNW01501SFConst.PRC_UW_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		String staYmd = subBean.sendMessageString(CNW01501SFConst.CONT_PRC_CD_CHG_TSTAYMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String endYmd = subBean.sendMessageString(CNW01501SFConst.CONT_PRC_CD_CHG_TENDYMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		String lastUpd = subBean.sendMessageString(CNW01501SFConst.UPD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);

		// 移送データ設定
		dataMap.put(CNW01501SFConst.CONT_PRC_CD_CHG_NO_01, contPrcCdChg);
		dataMap.put(CNW01501SFConst.CONT_SVC_CD_01, contSvcCd);
		dataMap.put(CNW01501SFConst.TAXAREA_01, taxarea);
		dataMap.put(CNW01501SFConst.PRC_SVC_CD_01, prcSvcCd);
		dataMap.put(CNW01501SFConst.PRC_KMK_CD_01, prcKmkCd);
		dataMap.put(CNW01501SFConst.PRC_UW_NM_01, prcUwNm);
		dataMap.put(CNW01501SFConst.CONT_PRC_CD_CHG_TSTAYMD_01, staYmd);
		dataMap.put(CNW01501SFConst.CONT_PRC_CD_CHG_TENDYMD_01, endYmd);
		dataMap.put(CNW01501SFConst.UPD_DTM_01, lastUpd);

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, JCNScreenConst.SCREEN_ID_CNW01508, dataMap);
		JCCWebCommon.setScreenId(this, JCNScreenConst.SCREEN_ID_CNW01508, JCNScreenConst.SCREEN_ID_CNW01501);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW01508);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW01508);

		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"コンテンツ料金コード変換の削除"});
		return true;
	}

	/**
	 * 会員種別毎集計参照の戻る押下時の処理を行います。<br>
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_back() throws Exception
	{
		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 移送データ設定

		// 遷移元の画面ID取得
		String nextScreenId = JCCWebCommon.getScreenId(this);
		String nextScreenNm = "";

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		JCCWebCommon.setScreenId(this, nextScreenId, JCNScreenConst.SCREEN_ID_CNW01501);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

}
