/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：WCW01806SFLogic
*	ソースファイル名：WCW01806SFLogic.java
*	作成者			：富士通
*	日付			：2011年04月11日
*＜機能概要＞
*	グループID値域設定更新のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/04/11	富士通		新規作成
*
**********************************************************************/
package eo.web.webview.WCW01806SF;

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.JPCOnlineMessageConstant;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.WCW01803SF.WCW01803SFConst;
import eo.web.webview.WCW01806SF.WCW01806SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JWCCommonConst;
import eo.web.webview.common.JWCScreenConst;	
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.mapping.WCSV0021_WCSV0021OPDBMapper;
import eo.web.webview.mapping.WCSV0030_WCSV0030OPDBMapper;
import eo.web.webview.mapping.WCSV0032_WCSV0032OPDBMapper;

/**
 * グループＩＤ値域の更新を行う。
 *
 * @author 富士通
 */

public class WCW01806SFLogic extends JCCWebBusinessLogic
{

	public String strOldStationValue;
	public String strOldGrpIDValue;
	public String strOldLowlValue;
	public String strOldUpplValue;

	/**
	 * 更新画面初期表示処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		JCCWebCommon.getScreenInfo(this);

		///// 共有フォームBean設定^ /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		///// メッセージ表示処理 /////
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB7040__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "グループID値域設定欄";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		// MESSAGE_LISTにメッセージを追加する。
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0021");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0021OP");

		///// サービス呼出処理 /////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		//下りマッピング定義
		mappingForDB_BP_WCSV0021_GET(paramBean, outputMap);
		
		getMessageList();

		strOldStationValue = paramBean[0].sendMessageString(WCW01806SFConst.KYOKU_CD, X31CWebConst.DATABEAN_GET_VALUE);
		strOldGrpIDValue = paramBean[0].sendMessageString(WCW01806SFConst.GRP_ID_RANGE_CD, X31CWebConst.DATABEAN_GET_VALUE);
		strOldLowlValue = paramBean[0].sendMessageString(WCW01806SFConst.GRP_ID_RANGE_LOWL_VALUE, X31CWebConst.DATABEAN_GET_VALUE);
		strOldUpplValue = paramBean[0].sendMessageString(WCW01806SFConst.GRP_ID_RANGE_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE);

		return true;
	}
	
	/**
	 * 更新画面確定ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean update() throws Exception 
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (bean == null)
		{
			throw new Exception();
		}
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		String strStationValue = paramBean[0].sendMessageString(WCW01803SFConst.KYOKU_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String strGrpIDValue = paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String strLowlValue = paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_LOWL_VALUE, X31CWebConst.DATABEAN_GET_VALUE);
		String strUpplValue = paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE);
		String strTstaYMD = JCCWebCommon.getSysDate();

		//グループＩＤ値域上限値の16進数チェック
		if(!checkSixteen(strUpplValue))
		{
			setErrMsgId(WCW01803SFConst.GRP_ID_RANGE_UPPL_VALUE);
			return false;
		}
		//グループＩＤ値域下限値の16進数チェック
		if(!checkSixteen(strLowlValue))
		{
			setErrMsgId(WCW01803SFConst.GRP_ID_RANGE_LOWL_VALUE);
			return false;
		}
		//文字列比較(上限値・下限値逆の場合エラー)
		if(strUpplValue.compareTo(strLowlValue) < 0)
		{
			setErrMsgId();
			return false;
		}		
		paramBean[0].sendMessageString(WCW01803SFConst.GIDRANGE_SETSCP_TSTAYMD, X31CWebConst.DATABEAN_SET_VALUE, strTstaYMD);

		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		///// メッセージ表示処理 /////
		//String strMsg = JWCCommonConst.Msg_WCW01807;
		//String MESSAGE_ID = "EKB0370--I";
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB0370__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "グループID値域設定更新";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		// MESSAGE_LISTにメッセージを追加する。
		//X31SDataBeanAccess commonSubbean = commonBeanArray.addDataBean();
		//X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		//commonSubbean.sendMessageString(CommonInfoCFConst.MESSAGE_ID_02, X31CWebConst.DATABEAN_SET_VALUE, "");
		//commonSubbean.sendMessageString(CommonInfoCFConst.MESSAGE_02, X31CWebConst.DATABEAN_SET_VALUE, strMsg);
		//commonSubbean.sendMessageString("項目ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, "");
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		// 強調表示
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01807);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01807);

		return true;
	}
	
	/**
	 * 更新確認画面確定ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean fix() throws Exception 
	{

		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		paramMap = new HashMap<String, Object>();
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		
		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0032");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0032OP");

		String strStationValue = paramBean[0].sendMessageString(WCW01803SFConst.KYOKU_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String strGrpIDValue = paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String strLowlValue = paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_LOWL_VALUE, X31CWebConst.DATABEAN_GET_VALUE);
		String strUpplValue = paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(WCW01803SFConst.KYOKU_CD, X31CWebConst.DATABEAN_SET_VALUE, strOldStationValue);
		paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_CD, X31CWebConst.DATABEAN_SET_VALUE, strOldGrpIDValue);
		paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_LOWL_VALUE, X31CWebConst.DATABEAN_SET_VALUE, strOldLowlValue);
		paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_UPPL_VALUE, X31CWebConst.DATABEAN_SET_VALUE, strOldUpplValue);
		
		mappingForDB_BP_Delete(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);

		
		///// サービス呼出処理 /////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		
		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0030");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0030OP");

		paramBean[0].sendMessageString(WCW01803SFConst.KYOKU_CD, X31CWebConst.DATABEAN_SET_VALUE, strStationValue);
		paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_CD, X31CWebConst.DATABEAN_SET_VALUE, strGrpIDValue);
		paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_LOWL_VALUE, X31CWebConst.DATABEAN_SET_VALUE, strLowlValue);
		paramBean[0].sendMessageString(WCW01803SFConst.GRP_ID_RANGE_UPPL_VALUE, X31CWebConst.DATABEAN_SET_VALUE, strUpplValue);
		
		mappingForDB_BP_Insert(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);

		///// サービス呼出処理 /////
		 msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		///// メッセージ表示処理 /////
		//String strMsg = JWCCommonConst.Msg_WCW01808;
		//String MESSAGE_ID = "EKB0380--I";
		String MESSAGE_ID = JPCOnlineMessageConstant.EKB0380__I;
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "グループID値域設定更新";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		// MESSAGE_LISTにメッセージを追加する。
		//X31SDataBeanAccess commonSubbean = commonBeanArray.addDataBean();
		//X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		//commonSubbean.sendMessageString(CommonInfoCFConst.MESSAGE_ID_02, X31CWebConst.DATABEAN_SET_VALUE, "");
		//commonSubbean.sendMessageString(CommonInfoCFConst.MESSAGE_02, X31CWebConst.DATABEAN_SET_VALUE, strMsg);
		//commonSubbean.sendMessageString("項目ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, "");
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01808);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01808);
		
		return true;
	}
	
	/**
	 * 更新確認画面修正ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean syusei() throws Exception
	{

		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01806);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01806);
		
		return true;
	}
	

	/**
	 * 更新確認画面完了ボタン完了処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean fin() throws Exception
	{

		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01801);
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01801);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		return true;
	}
		
	
	/**
	 * キャンセルボタン完了処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean cancel() throws Exception
	{

		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01801);
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01801);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		return true;
	}
	
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_Delete(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0032_WCSV0032OPDBMapper mapper = new WCSV0032_WCSV0032OPDBMapper();
		
		mapper.setEWC0051E010(paramBean, inputMap, func_code);
		return;
	}
	
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_Insert(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0030_WCSV0030OPDBMapper mapper = new WCSV0030_WCSV0030OPDBMapper();
		
		mapper.setEWC0051D010(paramBean, inputMap, func_code);
		return;
	}
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0021_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0021_WCSV0021OPDBMapper mapper = new WCSV0021_WCSV0021OPDBMapper();

		mapper.getWCSV002101SC(paramBean, outputMap);
		mapper.getWCSV002102SC(paramBean, outputMap);
		return;
	}

	/**
	 * 16進数か否かを判定します。
	 * @param val
	 * @return 判定結果
	 */
	public boolean checkSixteen(String val)
	{
		if(val.matches("[0-9A-F]+"))
		{
			return true;
		}
		return false;
	}

	/**
	 * 16進数チェックエラー時のメッセージIDと引数を設定します。
	 * @param errVal
	 */
	private void setErrMsgId(String errVal)
	{
		String MESSAGE_ID = "";
		MESSAGE_ID = JPCOnlineMessageConstant.EKB8760_TW;

		String[] stringArray = new String[] {errVal};

		setErrMsg(MESSAGE_ID, stringArray);
	}

	/**
	 * 上限値・下限値相互チェックエラー時のメッセージIDと引数を設定します。
	 */
	private void setErrMsgId()
	{
		String MESSAGE_ID = "";
		MESSAGE_ID = JPCOnlineMessageConstant.EKB1210_NW;

		String[] stringArray = new String[] {"上限値","下限値","16進数"};

		setErrMsg(MESSAGE_ID, stringArray);
	}

	/**
	 * エラーメッセージを設定します。
	 * @param MESSAGE_ID
	 * @param stArray
	 */
	private void setErrMsg(String MESSAGE_ID ,String[] stArray)
	{
		///// 共有フォームBean設定/////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stArray, "");
	}
}