/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：WCW01706SFLogic
*	ソースファイル名：WCW01706SFLogic.java
*	作成者			：富士通
*	日付			：2011年09月01日
*＜機能概要＞
*	デジタルティアグループ設定更新のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/01	富士通		新規作成
*
**********************************************************************/
package eo.web.webview.WCW01706SF;

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.JWCStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
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.WCSV0027_WCSV0027OP_01DBMapper;
import eo.web.webview.mapping.WCSV0028_WCSV0028OP_01DBMapper;
import eo.web.webview.mapping.WCSV0041_WCSV0041OPDBMapper;

/**
 * デジタルティアグループ設定の更新を行う。
 *
 * @ author 富士通
 */

public class WCW01706SFLogic extends JCCWebBusinessLogic
{

	static final String DGTIA_DSP_FLG_HYOJI = "表示";
	static final String DGTIA_DSP_FLG_HIHYOJI = "非表示";
	static final String IPPAN_TOKUSHU_FLG_IPPAN = "一般";
	static final String IPPAN_TOKUSHU_FLG_TOKUSHU = "特殊";
	
	/**
	 * 登録画面初期表示処理
	 * @author 富士通
	 * @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);
		getMessageList();
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01706);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01706);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
	
		bean.sendMessageString(WCW01706SFConst.CTRL_TIA_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, "CD00371");
		bean.sendMessageString(WCW01706SFConst.CTRL_DSP_KBN_CD, X31CWebConst.DATABEAN_SET_VALUE, "CD00780");
		bean.sendMessageString(WCW01706SFConst.CTRL_STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getSysDate());
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		mappingForDB_BP_WCSV0028_SET(paramBean, inputMap, "1");

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0028");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0028OP");

		///// サービス呼出処理 /////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		//下りマッピング定義
		mappingForDB_BP_WCSV0028_GET(paramBean, outputMap);
		
		mappingForDB_BP_WCSV0027_SET(paramBean, inputMap, "2");

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "WCSV0027");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0027OP");

		///// サービス呼出処理 /////
		msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		//下りマッピング定義
		mappingForDB_BP_WCSV0027_GET(paramBean, outputMap);
		
		X31SDataBeanAccessArray beanArrayTiaInfo = bean.getDataBeanArray(WCW01706SFConst.TIA_INFO);
		X31SDataBeanAccessArray beanArrayslctTiaInfo = bean.getDataBeanArray(WCW01706SFConst.SLCT_TIA_INFO);
		int intTiaInfoCnt = beanArrayTiaInfo.getCount();
		int intslctTiaInfoCnt = beanArrayslctTiaInfo.getCount();
		
		for(int i = 0; i < intslctTiaInfoCnt; i++)
		{
			String strSlctTiaCd = beanArrayslctTiaInfo.getDataBean(i).sendMessageString(WCW01706SFConst.TIA_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			String strSlctTiaSbtCd = beanArrayslctTiaInfo.getDataBean(i).sendMessageString(WCW01706SFConst.TIA_SBT_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			for(int j = 0; j < intTiaInfoCnt; j++)
			{
				String strTiaCd = beanArrayTiaInfo.getDataBean(j).sendMessageString(WCW01706SFConst.TIA_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
				String strTiaSbtCd = beanArrayTiaInfo.getDataBean(j).sendMessageString(WCW01706SFConst.TIA_SBT_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
				if(strSlctTiaCd.equals(strTiaCd) && strSlctTiaSbtCd.equals(strTiaSbtCd))
				{
					beanArrayTiaInfo.getDataBean(j).sendMessageBoolean(WCW01706SFConst.SELECT_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					continue;
				}
			}
		}
		
		X31SDataBeanAccessArray beanArray = bean.getDataBeanArray(WCW01706SFConst.TIA_INFO);
		for(int i = 0; i < beanArray.getCount(); i++)
		{
			// 行色替え
			beanArray.getDataBean(i).sendMessageString(WCW01706SFConst.ROW_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, getRowStyle(i+1));
		}
		
		return true;
	}
	
	/**
	 * 登録画面確定ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean kakunin() 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, "WCSV0041");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0041OP");
		
		// ティアマップ情報を格納する
		X31SDataBeanAccessArray beanSlctTiaArray = bean.getDataBeanArray(WCW01706SFConst.SLCT_TIA_INFO);
		beanSlctTiaArray.clearArray();
		X31SDataBeanAccessArray beanTiaArray = bean.getDataBeanArray(WCW01706SFConst.TIA_INFO);
		
		int intTiaCnt = 0;
		intTiaCnt = beanTiaArray.getCount();
		int intSlctTiaCnt = 0;

		Boolean blnChkBean = false;
		for (int i = 0; i < intTiaCnt; i++)
		{
			if (beanTiaArray.getDataBean(i).sendMessageBoolean(WCW01706SFConst.SELECT_FLG_01, X31CWebConst.DATABEAN_GET_VALUE))
			{
				beanSlctTiaArray.addDataBean();
				beanSlctTiaArray.getDataBean(intSlctTiaCnt).sendMessageString(WCW01706SFConst.TIA_CD_03, X31CWebConst.DATABEAN_SET_VALUE, beanTiaArray.getDataBean(i).sendMessageString(WCW01706SFConst.TIA_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
				beanSlctTiaArray.getDataBean(intSlctTiaCnt).sendMessageString(WCW01706SFConst.TIA_NM_03, X31CWebConst.DATABEAN_SET_VALUE, beanTiaArray.getDataBean(i).sendMessageString(WCW01706SFConst.TIA_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				beanSlctTiaArray.getDataBean(intSlctTiaCnt).sendMessageString(WCW01706SFConst.TIA_SBT_CD_03, X31CWebConst.DATABEAN_SET_VALUE, beanTiaArray.getDataBean(i).sendMessageString(WCW01706SFConst.TIA_SBT_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
				beanSlctTiaArray.getDataBean(intSlctTiaCnt).sendMessageString(WCW01706SFConst.TIA_SBT_NM_03, X31CWebConst.DATABEAN_SET_VALUE, beanTiaArray.getDataBean(i).sendMessageString(WCW01706SFConst.TIA_SBT_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				intSlctTiaCnt++;
				
			}
			blnChkBean = false;
		}
		
		mappingForDB_BP_WCSV0041_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_2);

		///// サービス呼出処理 /////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		//名称表示
		if(bean.sendMessageString(WCW01706SFConst.DGTIA_GRP_BBT_CD, X31CWebConst.DATABEAN_GET_VALUE).equals(JWCStrConst.CD_DIV_IPPAN_TOKUSHU_FLG_IPPAN))
		{
			bean.sendMessageString(WCW01706SFConst.DGTIA_GRP_BBT_NM, X31CWebConst.DATABEAN_SET_VALUE, IPPAN_TOKUSHU_FLG_IPPAN);
		}
		else
		{
			bean.sendMessageString(WCW01706SFConst.DGTIA_GRP_BBT_NM, X31CWebConst.DATABEAN_SET_VALUE, IPPAN_TOKUSHU_FLG_TOKUSHU);
		}
		
		if(bean.sendMessageString(WCW01706SFConst.DSP_FLG, X31CWebConst.DATABEAN_GET_VALUE).equals(JWCStrConst.CD_DIV_DGTIA_DSP_FLG_HYOJI))
		{
			bean.sendMessageString(WCW01706SFConst.DSP_FLG_NM, X31CWebConst.DATABEAN_SET_VALUE, DGTIA_DSP_FLG_HYOJI);
		}
		else
		{
			bean.sendMessageString(WCW01706SFConst.DSP_FLG_NM, X31CWebConst.DATABEAN_SET_VALUE, DGTIA_DSP_FLG_HIHYOJI);
		}
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		String MESSAGE_ID = "EKB0370--I";
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "デジタルティアグループ設定変更";
		
		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		// 強調表示
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01707);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01707);

		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, "WCSV0041");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "WCSV0041");

		mappingForDB_BP_WCSV0041_SET(paramBean, inputMap, JWCCommonConst.FUNC_CODE_1);

		///// サービス呼出処理 /////
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		String MESSAGE_ID = "EKB0380--I";
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "デジタルティアグループ設定更新";

		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01708);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01708);

		return true;
	}
	
	/**
	 * 登録確認画面修正ボタン押下処理
	 * @return 
	 * @throws Exception 
	 */
	public boolean syusei() throws Exception
	{
		
		///// 共有フォームBean設定（遷移先画面） /////
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		String MESSAGE_ID = "EKB7040--I";
		String[] stringArray;
		stringArray = new String[1];
		stringArray[0] = "ティアグループ設定情報";

		// 共有フォームBeanからMESSAGE_LISTデータタイプBeanを取得する。
		X31SDataBeanAccessArray commonBeanArray = commonBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST);
		// MESSAGE_LISTをクリアする。
		commonBeanArray.clearArray();
		
		JCCWebCommon.setMessageInfo( this, MESSAGE_ID, stringArray, "");
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_ID_WC01706);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01706);

		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_WC01701);
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01701);
		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_WC01701);
		//commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JWCScreenConst.SCREEN_NAME_WC01701);
		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_WCSV0027_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0027_WCSV0027OP_01DBMapper mapper = new WCSV0027_WCSV0027OP_01DBMapper();
		
		mapper.setWCSV002701SC(paramBean, inputMap, func_code);
		mapper.setWCSV002702SC(paramBean, inputMap, func_code);
		mapper.setWCSV002704SC(paramBean, inputMap, func_code);
		return;
	}

	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0028_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0028_WCSV0028OP_01DBMapper mapper = new WCSV0028_WCSV0028OP_01DBMapper();
		
		mapper.setWCSV002802SC(paramBean, inputMap, func_code);
		mapper.setWCSV002803SC(paramBean, inputMap, func_code);
		return;
	}	
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0041_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0041_WCSV0041OPDBMapper mapper = new WCSV0041_WCSV0041OPDBMapper();
		
		mapper.setWCSV004101SC(paramBean, inputMap, func_code);
		mapper.setWCSV004103SC(paramBean, inputMap, func_code);
		return;
	}
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0027_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0027_WCSV0027OP_01DBMapper mapper = new WCSV0027_WCSV0027OP_01DBMapper();

		mapper.getWCSV002703SC(paramBean, outputMap);
		mapper.getWCSV002704SC(paramBean, outputMap);
		return;
	}
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   下りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_WCSV0028_GET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		// DataBean-BPマッピングクラス生成
		WCSV0028_WCSV0028OP_01DBMapper mapper = new WCSV0028_WCSV0028OP_01DBMapper();

		mapper.getWCSV002801SC(paramBean, outputMap);
		mapper.getWCSV002803SC(paramBean, outputMap);
		return;
	}

	/**
	 * 行スタイル取得処理です。
	 * 指定した行番号の場合の、スタイルを取得します。
	 * @param rowNo 行番号
	 * @return 行スタイル
	 */
	private String getRowStyle(int rowNo)
	{
		if (rowNo % 2 == 0)
		{
			return JWCStrConst.ROW_STYLE_EVEN;
		}
		else
		{
			return JWCStrConst.ROW_STYLE_ODD;
		}
	}
}
