/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：DKW06208SFLogic
 *	ソースファイル名：DKW06208SFLogic.java
 *	作成者			：FJ
 *	日付			：2012年07月23日
 *＜機能概要＞
 *	VIEWロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v3.00.00	2012/07/23	FJ)芳澤		新規作成
 *
 **********************************************************************/

package eo.web.webview.DKW06208SF;

import java.util.HashMap;
import java.util.ArrayList;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.DKW06208SF.DKW06208SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKScreenConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.mapping.DKSV0138_DKSV0138OPDBMapper;
import eo.web.webview.mapping.DKSV0137_DKSV0137OPDBMapper;

/**
 * DKW06208のビューロジック
 * @author FJ
 */


public class DKW06208SFLogic extends JCCWebBusinessLogic
{
	/** メッセージ置換文字列 */
	private static final String[]	MESSAGE_VALUE	= { "型式機器提供種別情報削除処理" };
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		return dkw06208_init();
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean dkw06208_init() throws Exception
	{
		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this, JDKScreenConst.SCREEN_ID_DKW06201);
		
		// セッション情報の再設定
		JCCWebCommon.setScreenInfo(this, JDKScreenConst.SCREEN_ID_DKW06201, searchInfo);
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移元画面ID(referId)の設定
		String screenId = JCCWebCommon.getScreenId(this);
		bean.sendMessageString(DKW06208SFConst.REFERID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { bean };
		
		/**
		 * DataBean設定処理
		 */
		bean.sendMessageString(DKW06208SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_SET_VALUE,
				searchInfo.get("taknkiki_model_cd_save").toString());
		
		bean.sendMessageString(DKW06208SFConst.KKTK_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE,
				searchInfo.get("kktk_sbt_cd_save").toString());
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0137");
		
		// マッピングクラスのインスタンスを生成
		DKSV0137_DKSV0137OPDBMapper mapper = new DKSV0137_DKSV0137OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/*
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setDKSV013701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		/*
		 * サービス呼出
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			
			// 遷移先の情報を共有フォームBeanの項目に設定する。
			// 遷移先画面IDを設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
					X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
			
			// 遷移先画面名を設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
					X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06208);
			
			setTransferPageId(JCCWebCommon.getScreenId(this) + "0PJP");
			
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */
		
		HashMap<String, Object> parentMap = (HashMap<String, Object>)outputMap.get("DKSV013701SC");
		ArrayList dataList = (ArrayList)parentMap.get("EDK0461A010CBSMsg1List");
		
		// サービスの処理結果dataListが空の場合、メッセージを出力して処理を終了する。
		if(dataList.isEmpty())
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			
			setTransferPageId(JCCWebCommon.getScreenId(this) + "0PJP");
			return true;
		}
		

		HashMap<String, Object> childMap = (HashMap<String, Object>)dataList.get(0);
		

		
		// 機器提供種別名の設定
		bean.sendMessageString(DKW06208SFConst.KKTK_SBT_NM, X31CWebConst.DATABEAN_SET_VALUE,
				(String)childMap.get("kktk_sbt_nm"));
		
		// 宅内機器型式コードの設定
		bean.sendMessageString(DKW06208SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_SET_VALUE,
				(String)childMap.get("taknkiki_model_cd"));
		
		// 宅内機器型式名の設定
		bean.sendMessageString(DKW06208SFConst.TAKNKIKI_MODEL_NM, X31CWebConst.DATABEAN_SET_VALUE,
				(String)childMap.get("taknkiki_model_nm"));
		
		// 機器提供種別コードの設定
		bean.sendMessageString(DKW06208SFConst.KKTK_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE,
				(String)childMap.get("kktk_sbt_cd"));
		
		// 適用開始年月日の設定
		bean.sendMessageString(DKW06208SFConst.MDL_TG_KKTK_SBT_TSTAYMD,
				X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mdl_tg_kktk_sbt_tstaymd"));
		
		// 適用終了年月日の設定
		bean.sendMessageString(DKW06208SFConst.MDL_TG_KKTK_SBT_TENDYMD,
				X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mdl_tg_kktk_sbt_tendymd"));
		
		// 更新前最終更新年月日時分秒の設定
		bean.sendMessageString(DKW06208SFConst.LAST_UPD_DTM_BF,
				X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("last_upd_dtm_bf"));
		
		/**
		 * DataBean設定処理
		 */
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, MESSAGE_VALUE);
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		return true;
	}
	
	/**
	 * 確定遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean fix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06209);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06209);
				
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { bean };
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0138");
		
		// マッピングクラスのインスタンスを生成
		DKSV0138_DKSV0138OPDBMapper mapper = new DKSV0138_DKSV0138OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/*
		 * 上りマッピング
		 */
		mapper.setDKSV013801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		/*
		 * サービス呼出
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW);
			return true;
		}
		
		HashMap<String, Object> parentMap = (HashMap<String, Object>)outputMap.get("DKSV013801SC");
		
		if(parentMap.isEmpty())
		{
			// サービスの処理結果parentMaptが空の場合、メッセージを出力して処理を終了する。
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW);
			
			setTransferPageId(JCCWebCommon.getScreenId(this) + "0PJP");
			return true;
		}
		
		/**
		 * DataBean設定処理
		 */
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I,  MESSAGE_VALUE);
		
		setTransferPageId(JCCWebCommon.getScreenId(this) + "0PJP");
			
		return true;
	}
	
	/**
	 * 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移元画面ID
		String referId = bean.sendMessageString(DKW06208SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE);
	
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, referId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, 
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06209);
		
		// 引継ぎ情報（遷移元画面ID）を設定する。
		JCCWebCommon.setScreenId(this,  
				bean.sendMessageString(DKW06208SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE),
				JDKScreenConst.SCREEN_ID_DKW06208);
		
		return true;
	}
	
	/**
	 * 完了遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean complete() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移元画面ID
		String referId = bean.sendMessageString(DKW06208SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE);
		
		/**
		 * DataBean設定処理
		 */
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06201);
		
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06201);
		
		// 引継ぎ情報（遷移元画面ID）を設定する。
		JCCWebCommon.setScreenId(this, 
								bean.sendMessageString(DKW06208SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE),
								JDKScreenConst.SCREEN_ID_DKW06209);
		
		return true;
	}
	
}