/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：コード名称管理削除ViewLogic
*   ソースファイル名：ZMW07401SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月12日
*＜機能概要＞
*   コード名称管理削除ViewLogicです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*	v1.00		2011/05/12   FJ) 木田	新規作成
*
**********************************************************************/

package eo.web.webview.ZMW07401SF;

import java.util.HashMap;

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.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JZMStrConst;
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.ZMSV0015_ZMSV0015OPDBMapper;
import eo.web.webview.mapping.ZMSV0058_ZMSV0058OPDBMapper;

/**
 * コード名称管理削除ViewLogic。
 * @author FJ
 */
@SuppressWarnings("serial")
public class ZMW07401SFLogic extends JCCWebBusinessLogic
{

	/** 機能コード1  */
	private static final String FUNC_CD_1 = JPCModelConstant.FUNC_CD_1;
	
	/** 機能コード3  */
	private static final String FUNC_CD_3 = JPCModelConstant.FUNC_CD_3;
	
	/** メッセージID EKB0300-KW  */
	private static final String EKB0300KW = JPCOnlineMessageConstant.EKB0300_KW;
	
	/** 置き換えエラーメッセージ */
	private static final String[] INSERT_ERR_MESSAGE = {"コード名称管理", "情報"};
	
	/** 置き換えinfoメッセージ */
	private static final String[] INSERT_INFO_MESSAGE = {"コード名称管理情報削除"};

	
	/**
	 * 初期表示処理.<br>
	 * 初期表示を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		
		// セッション情報取得
		HashMap<String, Object> searchInfo = JZMWebCommon.getScreenInfo(this);

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// ユースケースID格納用マップ
		HashMap paramMap = new HashMap();
		
		// マッピング用Map
		HashMap dataMap = new HashMap();

		// サービス実行結果データ用Map
		HashMap outputMap = new HashMap();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV58);

		// マッピングクラス
		ZMSV0058_ZMSV0058OPDBMapper mapper = new ZMSV0058_ZMSV0058OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV005801CC(paramBean, dataMap, FUNC_CD_3);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV005801CC(paramBean, outputMap);
		
		// 検索エラーフラグの取得SV58
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC5801, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, EKB0300KW, INSERT_ERR_MESSAGE);
			
			setBackScreenId(commoninfoBean, true);
			return true;
		}
		
		// コード区分情報Beanの取得
		X31SDataBeanAccess listBean = bean.getDataBeanArray(ZMW07401SFConst.CD_KBN_LIST).getDataBean(0);
		
		// コード種別コードをセット
		bean.sendMessageString(ZMW07401SFConst.CD_SBT_CD,
				X31CWebConst.DATABEAN_SET_VALUE, listBean.sendMessageString(
						ZMW07401SFConst.CD_SBT_CD_01,
						X31CWebConst.DATABEAN_GET_VALUE));
		
		// コード種別名をセット
		bean.sendMessageString(ZMW07401SFConst.CD_SBT_NM,
				X31CWebConst.DATABEAN_SET_VALUE, listBean.sendMessageString(
						ZMW07401SFConst.CD_SBT_NM_01,
						X31CWebConst.DATABEAN_GET_VALUE));
		
		// コード種別説明をセット
		bean.sendMessageString(ZMW07401SFConst.CD_SBT_SETMEI,
				X31CWebConst.DATABEAN_SET_VALUE, listBean.sendMessageString(
						ZMW07401SFConst.CD_SBT_SETMEI_01,
						X31CWebConst.DATABEAN_GET_VALUE));
		
		// 適用終了年月日を設定
		JZMWebCommon.replaceTendymd(bean, ZMW07401SFConst.CD_KBN_LIST, ZMW07401SFConst.CD_TENDYMD_01);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW07401SFConst.CD_KBN_LIST, ZMW07401SFConst.ROW_STYLE_CLASS_01);
		
		// メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, INSERT_INFO_MESSAGE);
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07401);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07401);

		return true;
	}
	
	/**
	 * 確定処理.<br>
	 * 確定を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean fix() throws Exception
	{
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// ユースケースID格納用マップ
		HashMap paramMap = new HashMap();
		
		// マッピング用Map
		HashMap dataMap = new HashMap();
		
		// サービス実行結果データ用Map
		HashMap outputMap = new HashMap();
		
		// コード区分情報リストの取得
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW07401SFConst.CD_KBN_LIST); 
		
		for(int i = 0; i < dataList.getCount(); i++)
		{
			
			// コード区分情報Beanの取得
			X31SDataBeanAccess listBean = bean.getDataBeanArray(ZMW07401SFConst.CD_KBN_LIST).getDataBean(i);
			
			// コード種別コードの設定
			if((JZMStrConst.FLG_ON).equals(listBean.sendMessageString(ZMW07401SFConst.SHK_DSP_CD_FLG_01, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				listBean.sendMessageBoolean(ZMW07401SFConst.SHK_DSP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			else
			{
				listBean.sendMessageBoolean(ZMW07401SFConst.SHK_DSP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, false);
			}
			
		}
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV15);

		// マッピングクラス
		ZMSV0015_ZMSV0015OPDBMapper mapper = new ZMSV0015_ZMSV0015OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV001501CC(paramBean, dataMap, FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, INSERT_INFO_MESSAGE);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07402);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07402);

		return true;
	}
	
	/**
	 * 戻る処理.<br>
	 * 戻る処理を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean back() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);

		return true;
	}
	
	/**
	 * 完了処理.<br>
	 * 完了処理を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean fin() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// HashMapを設定する
		JZMWebCommon.setScreenInfo(this, this.getGamenId(), new HashMap<String, Object>());

		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);

		return true;
	}
	
	/**
	 * セッションから遷移先画面を取得し共通ビーンに設定する
	 * <br>
	 * @param commonBean 共通フォームBean
	 * @param transfer	強制転送するかどうか
	 */
	private void setBackScreenId(X31SDataBeanAccess commonBean, boolean transfer)
	{
		String screenId = JZMWebCommon.getScreenId(this);

		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, screenId);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		if(transfer)
		{
			setTransferPageId(screenId + JZMWebConst.PJP);
		}
	}

}
