/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KUW00302SFLogic
*	ソースファイル名：KUW00302SFLogic.java
*	作成者			：富士通
*	日付			：2012年01月18日
*＜機能概要＞
*	帯域変更再送のロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v2.00.00	2012/01/18	FJ)高橋		新規作成
*
**********************************************************************/
package eo.web.webview.KUW00302SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KUW00302SF.KUW00302SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKUScreenConst;
import eo.web.webview.mapping.KUSV0014_KUSV0014OPDBMapper;
import eo.web.webview.mapping.KUSV0015_KUSV0015OPDBMapper;
import eo.web.webview.mapping.KUSV0016_KUSV0016OPDBMapper;
import eo.web.webview.mapping.KUSV0017_KUSV0017OPDBMapper;

/**
 * 帯域変更再送のロジッククラスです。
 * @author 富士通
 */
public class KUW00302SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 前画面からの引き継ぎ情報OLT設定変更情報
	 */
	private static final String OLT = "1";
	
	/**
	 * 初期表示ユースケースID01
	 */
	private static final String INIT_USECASE_ID_01 = "KUSV0014";
	
	/**
	 * 初期表示ユースケースID02
	 */
	private static final String INIT_USECASE_ID_02 = "KUSV0015";
	
	/**
	 * 確定ユースケースID01
	 */
	private static final String FIX_USECASE_ID_01 = "KUSV0016";
	
	/**
	 * 確定ユースケースID02
	 */
	private static final String FIX_USECASE_ID_02 = "KUSV0017";
	
	
	/**
	 * 初期化処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Init() throws Exception
	{
		return kuw00302_init();
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean kuw00302_init() throws Exception
	{
		// 遷移元画面IDの設定
		JCCWebCommon.setScreenId(this, JKUScreenConst.SCREEN_ID_KUW00301, JKUScreenConst.SCREEN_ID_KUW00302);
		
		// 検索処理
		search();
		
		return true;
	}
	
	/**
	 * 戻るボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Rtrn() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00301);
		
		return true;
	}
	
	/**
	 * 確定ボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Fix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 更新処理
		updateAndSearch();
		
		String[] msgRp = new String[]{"再送"};
		JCCWebCommon.setMessageInfo(this, "EKB0380--I", msgRp);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00303);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00303);
		
		return true;
	}
	
	/**
	 * 完了ボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Fin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		//遷移元画面IDの設定
		JCCWebCommon.setScreenId(this, JKUScreenConst.SCREEN_ID_KUW00301, JKUScreenConst.SCREEN_ID_KUW00303);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00301);
		
		return true;
	}
	
	/**
	 * 検索実行処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean search() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 引き継ぎ情報の取得
		JCCWebCommon.getScreenInfo(this);
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラスのインスタンスを生成
		KUSV0014_KUSV0014OPDBMapper mapperOlt = new KUSV0014_KUSV0014OPDBMapper();
		KUSV0015_KUSV0015OPDBMapper mapperGepon = new KUSV0015_KUSV0015OPDBMapper();
		
		String sbt = bean.sendMessageString(KUW00302SFConst.SBT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 引き継ぎ機能コードが1ならばOLT、2ならばGepon
		if(OLT.equals(sbt))
		{
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID_01);
			mapperOlt.setKUSV001401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID_02);
			mapperGepon.setKUSV001501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		}
		
		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// 引き継ぎ機能コードが1ならばOLT、2ならばGepon
		if(OLT.equals(sbt))
		{
			mapperOlt.getKUSV001401SC(paramBean, outputMap);
		}
		else
		{
			mapperGepon.getKUSV001501SC(paramBean, outputMap);
		}
		
		// 検索結果がない場合は帯域変更一覧照会画面に遷移する。
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(KUW00302SFConst.CBSMSGLIST);
		if(beanList.getCount() == 0)
		{
			setTransferPageId("KUW003010PJP");
			
			return true;
		}
		else
		{
			// 設定結果コードを取得 
			X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00302SFConst.CBSMSGLIST).getDataBean(0);
			String sette_rslt_cd = listDataBean.sendMessageString(KUW00302SFConst.SETTE_RSLT_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(!"2".equals(sette_rslt_cd))
			{
				String[] msgRp = new String[]{"設定結果", "設定NG以外の", "再送"};
				
				JCCWebCommon.setMessageInfo(this, "EKB0780-KW", msgRp);
				setTransferPageId("KUW003010PJP");
				
				return true;
			}
			else
			{
				// メッセージの設定
				String[] msgRp = new String[]{"再送"};
				JCCWebCommon.setMessageInfo(this, "EKB0370--I", msgRp);
				// 背景色の変更
				JCCWebCommon.setMessageAreaBackColor(this, "1");
			}
		}
		
		return true;
	}
	
	/**
	 * 更新処理と検索処理サービスの呼び出し
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean updateAndSearch() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラスのインスタンスを生成
		KUSV0016_KUSV0016OPDBMapper mapperOlt = new KUSV0016_KUSV0016OPDBMapper();
		KUSV0017_KUSV0017OPDBMapper mapperGepon = new KUSV0017_KUSV0017OPDBMapper();
		
		String sbt = bean.sendMessageString(KUW00302SFConst.SBT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 更新年月日時分秒を取得し、更新前更新年月日時分秒を設定
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00302SFConst.CBSMSGLIST).getDataBean(0);
		String upd_dtm = listDataBean.sendMessageString(KUW00302SFConst.UPD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KUW00302SFConst.UPD_DTM_BF, X31CWebConst.DATABEAN_SET_VALUE, upd_dtm);
		
		// 引き継ぎ機能コードが1ならばOLT、2ならばGepon
		if(OLT.equals(sbt))
		{
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FIX_USECASE_ID_01);
			mapperOlt.setKUSV001601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapperOlt.setKUSV001602SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FIX_USECASE_ID_02);
			mapperGepon.setKUSV001701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapperGepon.setKUSV001702SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		}
		
		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// 引き継ぎ機能コードが1ならばOLT、2ならばGepon
		if(OLT.equals(sbt))
		{
			mapperOlt.getKUSV001602SC(paramBean, outputMap);
		}
		else
		{
			mapperGepon.getKUSV001702SC(paramBean, outputMap);
		}
		
		return true;
	}
}
