/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW14112SFLogic
*   ソースファイル名：KKW14112SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年08月13日
*＜機能概要＞
*   はぴe契約削除補正登録画面 Viewロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/08/13   FJ          新規作成
*
**********************************************************************/

package eo.web.webview.KKW14112SF;


import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0625_KKSV0625OPDBMapper;


@SuppressWarnings("serial")
public class KKW14112SFLogic extends JCCWebBusinessLogic
{
    

	
	/**
	 * はぴe契約削除補正登録画面 初期表示イベント
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception
	{
		// 引継情報を取得
		JCCWebCommon.getScreenInfo(this);

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		// 取得情報をログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14112);

		return true;
	}
	
	
	/**
	 * はぴe契約削除補正登録画面 「登録確認」ボタン押下イベント
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean actionCfm() throws Exception
	{
		
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		
		// 引継情報を取得
		JCCWebCommon.getScreenInfo(this);
		
// v11.00.00 ADD START
		
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 記事に改行コード有
		if (!retIsErrMemo(paramBean[0])) {
			
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4840_NW, new String[] {"改行"});
			
			// 単項目チェックエラー扱いで一旦終了.
			return false;
		}
// v11.00.00 ADD END
		
		// サービスの呼び出し
		X31CMessageResult msgResult = callService_KKSV0625(serviceBean, JPCModelConstant.FUNC_CD_2);
		if(msgResult == null)
		{

			// はぴe契約補正対象一覧画面へ遷移
			JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW14113, JKKScreenConst.SCREEN_ID_KKW14112);
			
			// はぴe契約削除補正登録確認画面へ遷移
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14113);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14113);
			
			// はぴe契約削除補正登録確認画面メッセージ出力
			String[] msgInfo = new String[]{"、はぴｅ契約削除補正情報の削除"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	
	/**
	 * はぴe契約削除補正登録確認画面 「確定」ボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean actionFix() throws Exception
	{
	
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 更新処理
		X31CMessageResult msgResult = callService_KKSV0625(serviceBean,JPCModelConstant.FUNC_CD_1);
		if(msgResult == null)
		{
			// はぴe契約削除補正登録完了画面へ遷移
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,JKKScreenConst.SCREEN_ID_KKW14114);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14114);
			
			//はぴe契約削除補正登録完了画面メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9360__I,  new String[]{"はぴｅ契約削除補正情報の削除"});
			
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}
	
	/**
	 * はぴe契約削除補正登録確認画面 「修正」ボタン押下イベント
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// はぴe契約削除補正登録画面へ遷移
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,JKKScreenConst.SCREEN_ID_KKW14112);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14112);
		
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}
	
	/**
	 *はぴe契約削除補正登録画面  「戻る」ボタン押下イベント
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		// 画面ID設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW14105, JKKScreenConst.SCREEN_ID_KKW14112);
		
		// はぴe契約補正対象一覧画面へ遷移
		commoninfoBean.sendMessageString( CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId( this ) ); 
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

	/**
	 * はぴe契約削除補正登録完了画面 「対象一覧画面へ」ボタン押下イベント
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */	
	public boolean actionFin() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// はぴe契約補正対象一覧画面へ遷移
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW14105,  JKKScreenConst.SCREEN_ID_KKW14114);
		commoninfoBean.sendMessageString( CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId( this ) ); 
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}


	/**
	 * サービス（KKSV0625）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private X31CMessageResult callService_KKSV0625(X31SDataBeanAccess serviceBean , String funcCd )
			throws Exception {

		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0625");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0625OP");

		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceBean };

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0625_KKSV0625OPDBMapper mapper = new KKSV0625_KKSV0625OPDBMapper();
		mapper.setKKSV062501SC(paramBean, inputMap,funcCd);

		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return msgResult;
	}
	
// v11.00.00 ADD START
	
	/**
	 * 
	 * 改行コードチェック
	 * 
	 * @param  paramBean
	 * @return true：一致、false：不一致
	 */
	private boolean retIsErrMemo(X31SDataBeanAccess paramBean) {
		
		// 記事の改行チェック
		String memo = paramBean.sendMessageString(KKW14112SFConst.HOSEI_SKEKKA_RSN_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// そもそも,nullはチェック不要
		if (JKKStringUtil.isNullBlank(memo))
			return true;
		
		final String[] conVals = new String[]{"\\r\\n"}; 
		
		String tg = "";
		for (String val : conVals)
			tg = memo.replaceAll(val, "　");
		
		// 不一致は,改行コードが存在したという事.
		return memo.equals(tg) ? true : false;
	}
//v11.00.00 ADD END
}
