/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：コード名称管理照会ViewLogic
*   ソースファイル名：ZMW07501SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月12日
*＜機能概要＞
*   コード名称管理照会ViewLogicです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*	v1.00		2011/05/12   FJ) 木田	新規作成
*
**********************************************************************/

package eo.web.webview.ZMW07501SF;

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.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.ZMSV0012_ZMSV0012OPDBMapper;

/**
 * コード名称管理照会ViewLogic。
 * @author FJ
 */
@SuppressWarnings("serial")
public class ZMW07501SFLogic extends JCCWebBusinessLogic
{

	/** 機能コード1  */
	private static final String FUNC_CD_1 = JPCModelConstant.FUNC_CD_1;
	
	/** 機能コード2  */
	private static final String FUNC_CD_2 = JPCModelConstant.FUNC_CD_2;
	
	/** 機能コード3  */
	private static final String FUNC_CD_3 = JPCModelConstant.FUNC_CD_3;
	
	/** 機能コード4  */
	private static final String FUNC_CD_4 = JPCModelConstant.FUNC_CD_4;
	
	/** メッセージID EKB0300-KW  */
	private static final String EKB0300KW = JPCOnlineMessageConstant.EKB0300_KW;
	
	/** 置き換えエラーメッセージ */
	private static final String[] INSERT_ERR_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.SV12);
		
		// マッピングクラス
		ZMSV0012_ZMSV0012OPDBMapper mapper = new ZMSV0012_ZMSV0012OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV001201SC(paramBean, dataMap, FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV001201SC(paramBean, outputMap);
		
		// 検索エラーフラグの取得SV12
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC1201, 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(ZMW07501SFConst.CD_KBN_LIST).getDataBean(0);
		
		// コード種別コードをセット
		bean.sendMessageString(ZMW07501SFConst.CD_SBT_CD,
				X31CWebConst.DATABEAN_SET_VALUE, listBean.sendMessageString(
						ZMW07501SFConst.CD_SBT_CD_01,
						X31CWebConst.DATABEAN_GET_VALUE));
		
		// コード種別名をセット
		bean.sendMessageString(ZMW07501SFConst.CD_SBT_NM,
				X31CWebConst.DATABEAN_SET_VALUE, listBean.sendMessageString(
						ZMW07501SFConst.CD_SBT_NM_01,
						X31CWebConst.DATABEAN_GET_VALUE));
		
		// コード種別説明をセット
		bean.sendMessageString(ZMW07501SFConst.CD_SBT_SETMEI,
				X31CWebConst.DATABEAN_SET_VALUE, listBean.sendMessageString(
						ZMW07501SFConst.CD_SBT_SETMEI_01,
						X31CWebConst.DATABEAN_GET_VALUE));
		
		// 適用終了年月日を設定
		JZMWebCommon.replaceTendymd(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.CD_TENDYMD_01);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.ROW_STYLE_CLASS_01);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07501);

		return true;
	}
	
	/**
	 * コード区分昇順処理.<br>
	 * コード区分での昇順処理を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean asc_cd() 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();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV12);

		// マッピングクラス
		ZMSV0012_ZMSV0012OPDBMapper mapper = new ZMSV0012_ZMSV0012OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV001201SC(paramBean, dataMap, FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV001201SC(paramBean, outputMap);
		
		// 適用終了年月日を設定
		JZMWebCommon.replaceTendymd(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.CD_TENDYMD_01);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.ROW_STYLE_CLASS_01);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07501);

		return true;
	}
	
	/**
	 * コード区分降順処理.<br>
	 * コード区分での降順処理を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean desc_cd() 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();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV12);

		// マッピングクラス
		ZMSV0012_ZMSV0012OPDBMapper mapper = new ZMSV0012_ZMSV0012OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV001201SC(paramBean, dataMap, FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV001201SC(paramBean, outputMap);
		
		// 適用終了年月日を設定
		JZMWebCommon.replaceTendymd(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.CD_TENDYMD_01);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.ROW_STYLE_CLASS_01);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07501);

		return true;
	}
	
	/**
	 * 表示順昇順処理.<br>
	 * 表示順での昇順処理を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean asc_dsp() 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();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV12);

		// マッピングクラス
		ZMSV0012_ZMSV0012OPDBMapper mapper = new ZMSV0012_ZMSV0012OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV001201SC(paramBean, dataMap, FUNC_CD_3);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV001201SC(paramBean, outputMap);
		
		// 適用終了年月日を設定
		JZMWebCommon.replaceTendymd(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.CD_TENDYMD_01);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.ROW_STYLE_CLASS_01);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07501);

		return true;
	}
	
	/**
	 * 表示順降順処理.<br>
	 * 表示順での降順処理を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean desc_dsp() 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();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV12);

		// マッピングクラス
		ZMSV0012_ZMSV0012OPDBMapper mapper = new ZMSV0012_ZMSV0012OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV001201SC(paramBean, dataMap, FUNC_CD_4);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV001201SC(paramBean, outputMap);
		
		// 適用終了年月日を設定
		JZMWebCommon.replaceTendymd(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.CD_TENDYMD_01);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW07501SFConst.CD_KBN_LIST, ZMW07501SFConst.ROW_STYLE_CLASS_01);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW07501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW07501);

		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>
	 * @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);
		}
	}
}
