/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKW14401SFLogic
 *	ソースファイル名：KKW14401SFLogic.java
 *	作成者			：富士通
 *	日付			：2012年06月12日
 *＜機能概要＞
 *	WEB申込断面コメント登録ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ5.00.00	2013/7/5	FJ)高川		【IT1-2013-0001331】画面規約違反対応
 *
 ********************************************************************************/
package eo.web.webview.KKW14401SF;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.mapping.KKSV0539_KKSV0539OPDBMapper;

/**
 * WEB申込断面コメント登録ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW14401SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示処理<br>
	 * <br>
	 * WEB申込断面コメント登録画面の初期表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// (a) 画面情報取得部品(JKKWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		JKKWebCommon.getScreenInfo(this);
		
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// (a)サービスフォームBeanの項目をクリアする。
		clearBean();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし
		
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW14401);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW14401);

		return true;

	}

	/**
	 * 登録確認ボタン押下処理<br>
	 * <br>
	 * 更新用の申込断面コメントの入力チェックを行ないます。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean addCfm() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// (a)サービス呼出処理（申込断面コメント登録）(callServiceAddComment())を呼び出す。
		callServiceAddComment(JPCModelConstant.FUNC_CD_2);

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW14402);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW14402);

		return true;

	}

	/**
	 * 確定ボタン押下処理<br>
	 * <br>
	 * 更新用の申込断面コメントを、申込断面へ登録を行ないます。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean fix() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// (a)サービス呼出処理（申込断面コメント登録）(callServiceAddComment())を呼び出す。
		callServiceAddComment(JPCModelConstant.FUNC_CD_1);

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCCScreenConst.SCREEN_ID_CCW00104);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCCScreenConst.SCREEN_NAME_CCW00104);

		return true;

	}

	/**
	 * キャンセルボタン押下処理<br>
	 * <br>
	 * WEB申込断面コメント登録画面へ遷移します。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean cancel() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW14401);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW14401);

		return true;

	}

	/**
	 * サービス呼出処理（申込断面コメント登録）<br>
	 * <br>
	 * 申込断面コメント変更サービスを呼び出し、申込断面のコメントの登録を行なう。
	 * 
	 * @param funcCd 機能コード："1"：チェック＆登録、"2"：チェックのみ

	 * @throws Exception
	 */
	private void callServiceAddComment(String funcCd) 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>();

		// (1)サービスフォームBeanの設定
		// (a)サービスフォームBeanの項目の設定
		// ユーザＩＤ
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);
		// ユーザ名
		String userNm = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込断面コメント
		String mskmDmenComment = bean.sendMessageString(KKW14401SFConst.MSKM_DMEN_COMMENT, X31CWebConst.DATABEAN_GET_VALUE);
		// 更新前申込断面コメント
		String mskmDmenCommentBf = bean.sendMessageString(KKW14401SFConst.MSKM_DMEN_COMMENT_BF, X31CWebConst.DATABEAN_GET_VALUE);
		// システム日付
		SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		String date = format.format(new Date());

		StringBuilder sbMskmDmenCommentUpd = new StringBuilder();
		sbMskmDmenCommentUpd.append(JKKStrConst.MSKM_DMEN_COMMENT_LINE1).append(JKKStrConst.KAIGYO_CD);
		sbMskmDmenCommentUpd.append(JKKStrConst.MSKM_DMEN_COMMENT_LINE2).append(userId)
			.append("（").append(userNm).append(") ").append(date).append(JKKStrConst.KAIGYO_CD);
		sbMskmDmenCommentUpd.append(JKKStrConst.MSKM_DMEN_COMMENT_LINE3).append(JKKStrConst.KAIGYO_CD);
		sbMskmDmenCommentUpd.append(mskmDmenComment).append(JKKStrConst.KAIGYO_CD);
		sbMskmDmenCommentUpd.append(mskmDmenCommentBf);
		bean.sendMessageString(KKW14401SFConst.MSKM_DMEN_COMMENT_UPD
				, X31CWebConst.DATABEAN_SET_VALUE, sbMskmDmenCommentUpd.toString());

		// (2)サービス呼出処理
		// (a) 申込断面コメント変更サービスの呼び出しを行う。
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0539");

		// マッピングクラスの定義
		KKSV0539_KKSV0539OPDBMapper mapper = new KKSV0539_KKSV0539OPDBMapper();
		mapper.setKKSV053901SC(paramBean, dataMap, funcCd);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

	}

    /**
	 * サービスフォームBeanのクリア処理<br>
	 * <br>
	 * サービスフォームBeanの引継ぎ項目以外の値をクリアします。
	 * 引継ぎ項目：申込書番号
	 *             更新前更新年月日時分秒
	 *             更新前申込断面コメント
	 * 
	 */
	private void clearBean()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// サービスフォームBeanの項目をクリアする。
		bean.sendMessage(KKW14401SFConst.MSKM_DMEN_COMMENT, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(KKW14401SFConst.MSKM_DMEN_COMMENT_UPD, X31CWebConst.DATABEAN_CLEAR);
	}

}
