/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：資料情報登録ビューロジック
*   ソースファイル名：CRW05601SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月24日
*＜機能概要＞
*   資料情報登録画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/07/04   FJ）伊藤    新規作成
*
**********************************************************************/

package eo.web.webview.CRW05601SF;

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.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0072_CRSV0072OPDBMapper;
import eo.web.webview.mapping.CRSV0073_CRSV0073OPDBMapper;

/**
 * 資料情報登録ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW05601SFLogic 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 initIns() 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.getDataBeanArray(CRW05601SFConst.ATICLE_BUNRUI).clearArray();
		bean.sendMessage(CRW05601SFConst.ATICLE_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW05601SFConst.DSP_JUN, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW05601SFConst.SIRYOSOFU_GRP).clearArray();
		bean.sendMessageString(CRW05601SFConst.TSTA_YEAR, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(CRW05601SFConst.TSTA_MON, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(CRW05601SFConst.TSTA_DAY, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(CRW05601SFConst.TEND_YEAR, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(CRW05601SFConst.TEND_MON, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(CRW05601SFConst.TEND_DAY, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW05601SFConst.ATICLE_OPUT_SBT).clearArray();
		bean.sendMessage(CRW05601SFConst.BIKO, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(CRW05601SFConst.OPERATE_DATE, X31CWebConst.DATABEAN_CLEAR);

		
		// (b)システム日付の取得
		String sysDate = JCRWebCommon.getSysDate();
		
		// (c)サービスフォームBean項目の設定
		bean.sendMessageString(CRW05601SFConst.TSTA_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.toYearFromYmd(sysDate));
		bean.sendMessageString(CRW05601SFConst.TSTA_MON, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.toMonthFromYmd(sysDate));
		bean.sendMessageString(CRW05601SFConst.TSTA_DAY, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.toDayFromYmd(sysDate));
		bean.sendMessageString(CRW05601SFConst.TEND_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "2099");
		bean.sendMessageString(CRW05601SFConst.TEND_MON, X31CWebConst.DATABEAN_SET_VALUE, "12");
		bean.sendMessageString(CRW05601SFConst.TEND_DAY, X31CWebConst.DATABEAN_SET_VALUE, "31");
		bean.sendMessageString(CRW05601SFConst.OPERATE_DATE, X31CWebConst.DATABEAN_SET_VALUE, sysDate);
		
		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0072");

		// マッピングクラス
		CRSV0072_CRSV0072OPDBMapper mapper = new CRSV0072_CRSV0072OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV007201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV007202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV007203SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV007201SC(paramBean, outputMap);
		mapper.getCRSV007202SC(paramBean, outputMap);
		mapper.getCRSV007203SC(paramBean, outputMap);

		// (b)サービスフォームBeanの退避項目の設定
		// 資料分類コードインデックスの取得
		X31SDataBeanAccess comboAticleBunrui = bean.getDataBeanArray(CRW05601SFConst.ATICLE_BUNRUI).getDataBean(0);
		String aticleBunruiIdx = comboAticleBunrui.sendMessageString(CRW05601SFConst.L0_ATICLE_BUNRUI_IDX_01
				, X31CWebConst.DATABEAN_GET_VALUE);
		// 資料送付元コードインデックスの取得
		X31SDataBeanAccess comboSiryosofuGrp = bean.getDataBeanArray(CRW05601SFConst.SIRYOSOFU_GRP).getDataBean(0);
		String siryosofuGrpIdx = comboSiryosofuGrp.sendMessageString(CRW05601SFConst.L1_SIRYOSOFU_GRP_IDX_02
				, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 初期表示時の内容の退避、クリアボタン、閉じるボタンの対応のため
		bean.sendMessageString(CRW05601SFConst.BK_ATICLE_BUNRUI_IDX, X31CWebConst.DATABEAN_SET_VALUE, aticleBunruiIdx);
		bean.sendMessageString(CRW05601SFConst.BK_ATICLE_NM, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.ATICLE_NM, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_DSP_JUN, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.DSP_JUN, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_SIRYOSOFU_GRP_IDX, X31CWebConst.DATABEAN_SET_VALUE, siryosofuGrpIdx);
		bean.sendMessageString(CRW05601SFConst.BK_TSTA_YEAR, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.TSTA_YEAR, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_TSTA_MON, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.TSTA_MON, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_TSTA_DAY, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.TSTA_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_TEND_YEAR, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.TEND_YEAR, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_TEND_MON, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.TEND_MON, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_TEND_DAY, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.TEND_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05601SFConst.BK_BIKO, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(CRW05601SFConst.BIKO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// (c)初期表示時のラジオボタンチェック項目を設定する
		X31SDataBeanAccessArray aticleOputSbt = bean.getDataBeanArray(CRW05601SFConst.ATICLE_OPUT_SBT);
		X31SDataBeanAccess oputBean =  aticleOputSbt.getDataBean(0);
		String oputCd = oputBean.sendMessageString(CRW05601SFConst.L2_ATICLE_OPUT_SBT_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
		String oputNm = oputBean.sendMessageString(CRW05601SFConst.L2_ATICLE_OPUT_SBT_CD_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(CRW05601SFConst.ATICLE_OPUT_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, oputCd);
		bean.sendMessageString(CRW05601SFConst.ATICLE_OPUT_SBT_CD_NM, X31CWebConst.DATABEAN_SET_VALUE, oputNm);
		
		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05601);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05601);

		return true;
	}

	/**
	 * 登録確認ボタン押下.<br>
	 * 入力チェックを行い、エラーがない場合は、資料情報登録確認画面に遷移する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean confirmIns() 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の設定
		// サービスフォームBeanの設定
		bean.sendMessageString(CRW05601SFConst.ATICLE_BUNRUI_NM, X31CWebConst.DATABEAN_SET_VALUE
				, JCRWebCommon.getPullDownName(bean, CRW05601SFConst.ATICLE_BUNRUI, CRW05601SFConst.L0_ATICLE_BUNRUI_IDX_01
				, CRW05601SFConst.L0_ATICLE_BUNRUI_CD_01, CRW05601SFConst.L0_ATICLE_BUNRUI_NM_01));
		bean.sendMessageString(CRW05601SFConst.SIRYOSOFU_GRP_NM, X31CWebConst.DATABEAN_SET_VALUE
				, JCRWebCommon.getPullDownName(bean, CRW05601SFConst.SIRYOSOFU_GRP, CRW05601SFConst.L1_SIRYOSOFU_GRP_IDX_02
				, CRW05601SFConst.L1_SIRYOSOFU_GRP_CD_02, CRW05601SFConst.L1_SIRYOSOFU_GRP_NM_02));
		bean.sendMessageString(CRW05601SFConst.ATICLE_TSTAYMD, X31CWebConst.DATABEAN_SET_VALUE
				, JCRWebCommon.concatYmd(bean.sendMessageString(CRW05601SFConst.TSTA_YEAR, X31CWebConst.DATABEAN_GET_VALUE), 
						bean.sendMessageString(CRW05601SFConst.TSTA_MON, X31CWebConst.DATABEAN_GET_VALUE), 
						bean.sendMessageString(CRW05601SFConst.TSTA_DAY, X31CWebConst.DATABEAN_GET_VALUE)));
		bean.sendMessageString(CRW05601SFConst.ATICLE_TENDYMD, X31CWebConst.DATABEAN_SET_VALUE
				, JCRWebCommon.concatYmd(bean.sendMessageString(CRW05601SFConst.TEND_YEAR, X31CWebConst.DATABEAN_GET_VALUE), 
						bean.sendMessageString(CRW05601SFConst.TEND_MON, X31CWebConst.DATABEAN_GET_VALUE), 
						bean.sendMessageString(CRW05601SFConst.TEND_DAY, X31CWebConst.DATABEAN_GET_VALUE)));
		
		String dspJun = bean.sendMessageString(CRW05601SFConst.DSP_JUN, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 表示順序が空白の場合、0を設定
		if (dspJun == null || dspJun.trim().equals("")) {
			bean.sendMessageString(CRW05601SFConst.DSP_JUN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0073");

		// マッピングクラス
		CRSV0073_CRSV0073OPDBMapper mapper = new CRSV0073_CRSV0073OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV007301SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05602);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05602);

		return true;
	}

	/**
	 * クリアボタン押下.<br>
	 * 画面をクリアする。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clear() throws Exception
	{
		// (1)3.1 初期表示(initIns())を行う。
		// 初期表示処理を呼び出す
		return initIns();
	}

	/**
	 * 確定ボタン押下.<br>
	 * 資料テーブルに登録する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean fix() 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の設定
		// なし。

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0073");

		// マッピングクラス
		CRSV0073_CRSV0073OPDBMapper mapper = new CRSV0073_CRSV0073OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV007301SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}
	
	/**
	 * キャンセルボタン押下.<br>
	 * 資料情報登録画面に戻る。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean cancel() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05601);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05601);

		return true;
	}

}
