/*********************************************************************
* All Rights reserved, Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通マスタ）
*   モジュール名    ：ZMW04901SFLogic
*   ソースファイル名：ZMW04901SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年04月18日
*＜機能概要＞
*   NGワード登録のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/04/18   FJ）岩元    新規作成
*   v3.00       2012/01/31   FJ）岩元    【UIZ-0004-00-00】視認性向上No.4
*   v5.00       2013/03/08   FJ) 岩元   【TAI-2013-0000012】画面設計規約対応
*
**********************************************************************/

package eo.web.webview.ZMW04901SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0019_ZMSV0019OPDBMapper;
import eo.web.webview.mapping.ZMSV0020_ZMSV0020OPDBMapper;

/**
 *  NGワード登録のビューロジックです。
 * @author 909281
 *
 */
@SuppressWarnings("serial")
public class ZMW04901SFLogic extends JCCWebBusinessLogic
{

	/** メッセージID EKB0370--I  */
	private static final 	String MESSAGE_ID_370 = JPCOnlineMessageConstant.EKB0370__I;

	/** メッセージID EKB0380--I  */
	private static final 	String MESSAGE_ID_380 = JPCOnlineMessageConstant.EKB0380__I;

	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE = {"ＮＧワード情報登録"};

	/** 機能コード１  */
	private static final String FUNC_CD_1 = JPCModelConstant.FUNC_CD_1;

	
	/**
	 * NGワード更新初期表示処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		String screenId = JZMWebCommon.getScreenId(this);

		if(screenId == null)
		{
			// HashMapを設定する
			JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW04903, JZMScreenConst.SCREEN_ID_ZMW04901);
		}
		
		// 戻り先IDの有無で戻るボタン表示フラグを表示する
		JZMWebCommon.setSendMessageBoolean(bean, ZMW04901SFConst.BACK_BTN_DSP_FLG,  null != screenId);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケース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>();
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV19);
		
		// マッピングクラスのインスタンスを生成
		ZMSV0019_ZMSV0019OPDBMapper mapper = new ZMSV0019_ZMSV0019OPDBMapper();
		mapper.setZMSV001901SC(paramBean, dataMap, FUNC_CD_1);
		
		if(dataMap.containsKey(JZMWebConst.SC1901))
		{
			HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC1901);
			inDataMap.put(JZMWebConst.KEY_STDARDYMD, JZMWebCommon.getOpeDate(this, null));
		}
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピングクラスの呼び出し
		mapper.getZMSV001901SC(paramBean, outputMap);
		
		setOpeDateToTstaymd(bean);
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04901);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04901);
		
		return true;
	}

	/**
	 * 適用開始年月日に運用日付を設定します。
	 * @param bean サービスフォームBean
	 */
	private void setOpeDateToTstaymd(X31SDataBeanAccess bean) {
		// 運用日付の取得
		String opeDate = JZMWebCommon.getOpeDate(this, null);
		
		// 適用年月日-年
		bean.sendMessageString(ZMW04901SFConst.TSTAYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(0, 4));
		
		// 適用年月日-月
		bean.sendMessageString(ZMW04901SFConst.TSTAYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(4, 6));
		
		// 適用年月日-日
		bean.sendMessageString(ZMW04901SFConst.TSTAYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(6, 8));
	}
	
	/**
	 * 登録確認ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean addCfm() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// NGワードコード名称の取得と設定
		String selectedValue = JZMWebCommon. getPullDownSelectedValue(bean,
				ZMW04901SFConst.NG_WORD_CD_INFO, ZMW04901SFConst.NG_WORD_CD_NM_LIST_01, ZMW04901SFConst.NG_WORD_CD_IDX_01);
		bean.sendMessageString(ZMW04901SFConst.NG_WORD_CD_NM,
				X31CWebConst.DATABEAN_SET_VALUE, selectedValue);                                                                   
		
		// NGワードコード値の取得と設定
		selectedValue = JZMWebCommon. getPullDownSelectedValue(bean,
				ZMW04901SFConst.NG_WORD_CD_INFO, ZMW04901SFConst.NG_WORD_CD_VALUE_LIST_01, ZMW04901SFConst.NG_WORD_CD_IDX_01);
		bean.sendMessageString(ZMW04901SFConst.NG_WORD_CD, X31CWebConst.DATABEAN_SET_VALUE, selectedValue);   
		
		// 適用開始年月日
		String  ymd = JPCUtilCommon.concatYmd(bean.sendMessageString(ZMW04901SFConst.TSTAYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04901SFConst.TSTAYMD_MON, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04901SFConst.TSTAYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW04901SFConst.TSTAYMD, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.nullToBlank(ymd));
		
		// 適用終了年月日
		ymd = JPCUtilCommon.concatYmd(bean.sendMessageString(ZMW04901SFConst.TENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04901SFConst.TENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW04901SFConst.TENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW04901SFConst.TENDYMD, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.nullToBlank(ymd));
		
		// メッセージの設定
		JZMWebCommon.setMessageInfo(this, MESSAGE_ID_370, MESSAGE_VALUE);
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04902);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04902);
		
		return true;
	}
	

	
	/**
	 * 戻るボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean back() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		return true;
	}
	

	
	/**
	 * 確定ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws 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>();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = 	{bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV20);

		// マッピングクラス
		ZMSV0020_ZMSV0020OPDBMapper mapper = new ZMSV0020_ZMSV0020OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV002001SC(paramBean, dataMap, FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// マッピング処理（下り）
		mapper.getZMSV002001SC(paramBean, outputMap);

		// メッセージの設定
		JZMWebCommon.setMessageInfo(this, MESSAGE_ID_380, MESSAGE_VALUE);
		
		// 画面遷移
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04903);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW04903);
		
		return true;
	}

	
	/**
	 * 修正ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean shusei() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04901);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW04901);
		
		return true;
	}

	
	/**
	 * 完了確認ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fin() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		String screenId = JZMWebCommon.getScreenId(this);
		String screenNm = null;
		
		if(JZMScreenConst.SCREEN_ID_ZMW04901.equals(screenId))
		{
			screenNm = JZMScreenConst.SCREEN_NAME_ZMW04901;
			
			// サービスフォームBeanの内容の取得
			X31SDataBeanAccess bean = getServiceFormBean();

			// サービスフォームBeanの内容を初期化する
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.NG_WORD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.NG_WORD_CD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.NG_WORD_CD_NM);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.NG_WORD_NO);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.TENDYMD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.TENDYMD_DAY);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.TENDYMD_MON);
			JZMWebCommon.setNullToBeanClm(bean, ZMW04901SFConst.TENDYMD_YEAR);
			setOpeDateToTstaymd(bean);
			JZMWebCommon.setPullDownIndex(bean, ZMW04901SFConst.NG_WORD_CD_INFO, ZMW04901SFConst.NG_WORD_CD_IDX_01, JZMWebConst.ZERO);

		}
		else
		{
			screenNm = JZMWebConst.BLANK;
		}
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, screenNm);
				
		return true;
	}
}
