/*********************************************************************
* All Rights reserved, Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通マスタ）
*   モジュール名    ：ZMW03401SFLogic
*   ソースファイル名：ZMW03401SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年04月03日
*＜機能概要＞
*   ロール情報登録のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v3.00.00    2012/04/03   FJ）岩元    新規作成
*	v3.00.00	2012/04/03   FJ) 岩元	 【SGY-2012-000006】統合認証対応
*   v5.00.00    2013/08/14   FJ) 日野    【OT-2013-0000713】ディレイド文字コード対応
*
**********************************************************************/

package eo.web.webview.ZMW03401SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CVector;
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.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0100_ZMSV0100OPDBMapper_ZMSV010001CC;
import eo.web.webview.mapping.ZMSV0100_ZMSV0100OPDBMapper_ZMSV010002CC;
import eo.web.webview.mapping.ZMSV0102_ZMSV0102OPDBMapper;
import eo.web.webview.mapping.ZMSV0103_ZMSV0103OPDBMapper;
import eo.web.webview.mapping.ZMSV0122_ZMSV0122OPDBMapper;

/**
 * ロール情報登録のビューロジックです。
 * @author 909281
 *
 */
@SuppressWarnings("serial")
public class ZMW03401SFLogic extends JCCWebBusinessLogic
{

	/** メッセージID EKB0330--I  */
	private static final String SEARCH_ERR_MESSAGE_ZERO_I = JPCOnlineMessageConstant.EKB0330__I;

	/** メッセージID EKB0340--I  */
	private static final String SEARCH_ERR_MESSAGE_OVERMAX_I =  JPCOnlineMessageConstant.EKB0340__I;
	
	/** メッセージID EKB0350--I  */
	private static final String SEARCH_ERR_MESSAGE_NODATA_I =  JPCOnlineMessageConstant.EKB0350__I;
	
	/** メッセージID EKB0300-KW  */
	private static final String SEARCH_ERR_MESSAGE_ZERO_W = JPCOnlineMessageConstant.EKB0320_KW;

	/** メッセージID EKB0320-KW  */
	private static final String SEARCH_ERR_MESSAGE_OVERMAX_W =  JPCOnlineMessageConstant.EKB0320_KW;

	/** メッセージID EKB0320-KW  */
	private static final String SEARCH_ERR_MESSAGE_NODATA_W =  JPCOnlineMessageConstant.EKB0320_KW;

	/** メッセージID EKB0350--I  */
	private static final String SEARCH_ERR_MESSAGE_NO_DISP_DTL =  JPCOnlineMessageConstant.EKBA620__I;

	/** 最大検索数 */
	private static final String ZMW03401_MAX_SHOW_CNT = "ZMW03401_MAX_SHOW_CNT";
	
	/** 最大表示数 */
	private static final String ZMW03401_ROW_PER_PAGE = "ZMW03401_ROW_PER_PAGE";

	/** 確認メッセージ置換文字*/
	private static final String[] MSG_REP_INIT = {"ロール情報登録依頼"};
	
	/** 完了メッセージ置換文字*/
	private static final String[] MSG_REP_FIN = {"ロール情報登録依頼"};
	
	/** ロールコードが存在しない場合のエラーメッセージ */
	private static final String[] NO_ROLE_MSG_ITEM = {"ロール", "情報"};
	
	/**
	 * ロール登録初期表示処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean init()throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		
		if(JZMWebCommon.getScreenInfo(this) == null)
		{

			String screenId = JZMWebCommon.getScreenId(this);
			
			// 遷移先画面ID、名称の設定
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
					X31CWebConst.DATABEAN_SET_VALUE, screenId);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
					X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);

			setTransferPageId(screenId + JZMWebConst.PJP);
			
			return true;
		}

		// ページリンク情報の消去
		JZMWebCommon.clearPageLinkInfo(this, this.getGamenId());
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		X31SDataBeanAccess[] paramBean = {bean};
		
		boolean isAdd = isAdd(bean);
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV122);

		// サービス実行入力データ用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// ロール検索エラーフラグの取得用
		String roleSearchErrFlg = null;

		// 権限検索エラーフラグの取得用
		String authoritySearchErrFlg = null;
		
		// マッピングクラスのインスタンスを生成
		ZMSV0122_ZMSV0122OPDBMapper mapper = new ZMSV0122_ZMSV0122OPDBMapper();
		
		if(isAdd)
		{
			mapper.setZMSV012203CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			
			// ページング情報の設定
			JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC12203, dataMap);
		}
		else
		{
			mapper.setZMSV012201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setZMSV012202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setZMSV012204CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			
			// ページング情報の設定
			JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC12204, dataMap);
		}

		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);

		if(!isAdd)
		{
			// ロール検索エラーフラグの取得
			roleSearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC12201, outputMap);

			
			if(!JZMWebCommon.isNullOrBlank(roleSearchErrFlg))
			{
				if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(roleSearchErrFlg))
				{
					// 検索結果が0件の場合、エラーメッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO_W, NO_ROLE_MSG_ITEM);
				}
				
				JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03301, JZMWebConst.BLANK);
				setTransferPageId(JZMScreenConst.SCREEN_ID_ZMW03301 + JZMWebConst.PJP);
				
				return true;
			}
		}
		
		// 権限検索エラーフラグ取得
		if(isAdd)
		{
			authoritySearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC12203, outputMap);
		}
		else
		{
			authoritySearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC12204, outputMap);
		}

		// 権限検索のエラー処理
		
		if(!JZMWebCommon.isNullOrBlank(authoritySearchErrFlg))
		{
			if(isAdd)
			{
				// 登録画面の場合
				
				if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(authoritySearchErrFlg))
				{
					// 検索結果が0件の場合、エラーメッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO_I);
				}
				else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(authoritySearchErrFlg))
				{

					String[] item = {JZMWebCommon.getSearchConst(ZMW03401_MAX_SHOW_CNT)};
					
					// 検索結果が最大検索件数を超える場合、エラーメッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_OVERMAX_I, item);
				}
				
				// 戻り先画面を設定する。
				JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03302, JZMWebConst.BLANK);
				setTransferPageId(JZMScreenConst.SCREEN_ID_ZMW03302 + JZMWebConst.PJP);
				
				return true;
			}
			else
			{
				// 複写登録画面の場合

				if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(authoritySearchErrFlg))
				{
					// 検索結果が0件の場合、エラーメッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO_W);

					JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03301, JZMWebConst.BLANK);
					setTransferPageId(JZMScreenConst.SCREEN_ID_ZMW03301 + JZMWebConst.PJP);
					
					return true;
				}
				else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(authoritySearchErrFlg))
				{
					// 複写登録かつ検索エラーフラグ2の場合、明細を非表示に設定。
					String[] item = {JZMWebCommon.getSearchConst(ZMW03401_MAX_SHOW_CNT)};
					
					// 検索結果が最大検索件数を超える場合、メッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NO_DISP_DTL, item);
					
					// 明細表示フラグを設定。
					JZMWebCommon.setSendMessageBoolean(bean, ZMW03401SFConst.DTL_DSP_FLG, false);
				}
			}
		}
		
		// 一覧の初期化
		bean.getDataBeanArray(ZMW03401SFConst.EZM0011B010CBSMSG1LIST).clearArray();
		
		if(isAdd)
		{

			mapper.getZMSV012203CC(paramBean, outputMap);
			
			// ページング情報の設定
			JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC12203, outputMap);
			if(!JZMWebCommon.hasSplitedYmd(bean, ZMW03401SFConst.TSTAYMD_YEAR, ZMW03401SFConst.TSTAYMD_MON, ZMW03401SFConst.TSTAYMD_DAY))
			{
				// 運用日付の取得
				String opeDate = JZMWebCommon.getOpeDate(this, null);
				
				// 適用年月日-年
				JZMWebCommon.setSendMessageString(bean, ZMW03401SFConst.TSTAYMD_YEAR, opeDate.substring(0, 4));
				
				// 適用年月日-月
				JZMWebCommon.setSendMessageString(bean, ZMW03401SFConst.TSTAYMD_MON, opeDate.substring(4, 6));
				
				// 適用年月日-日
				JZMWebCommon.setSendMessageString(bean, ZMW03401SFConst.TSTAYMD_DAY, opeDate.substring(6, 8));
			}
		}
		else
		{
			// マッピングクラスの呼び出し
			mapper.getZMSV012201SC(paramBean, outputMap);
			mapper.getZMSV012202SC(paramBean, outputMap);
			mapper.getZMSV012204CC(paramBean, outputMap);
			

			// 年月日を分割設定する
			JZMWebCommon.setSplitYmd(bean,
							ZMW03401SFConst.TSTAYMD,
							ZMW03401SFConst.TSTAYMD_YEAR,
							ZMW03401SFConst.TSTAYMD_MON,
							ZMW03401SFConst.TSTAYMD_DAY);
			
			JZMWebCommon.setSplitYmd(bean,
					ZMW03401SFConst.TENDYMD,
					ZMW03401SFConst.TENDYMD_YEAR,
					ZMW03401SFConst.TENDYMD_MON,
					ZMW03401SFConst.TENDYMD_DAY);
			
			// ページング情報の設定
			JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC12204, outputMap);
		}
		
		// 検索のコマンドIDを設定。
		JZMWebCommon.setSearchCommand(this, JZMWebConst.EVENT_ID_PAGING);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW03401SFConst.EZM0011B010CBSMSG1LIST, ZMW03401SFConst.ROW_STYLE_CLASS_01);
		
		// 行選択フラグを設定。
		setRowChoiceFlg();
		
		// 選択権限有無フラグを設定。
		setChoiceAuthorityUmFlg(bean);
		
		// 遷移先画面を設定。
		JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03401, JZMScreenConst.SCREEN_NAME_ZMW03401);
		
		return true;
	}

	/**
	 * ページング処理を行います。(登録画面)
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean paging()throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		if(!pagingBase(false))
		{
			return true;
		}
		
		JZMWebCommon.setNextScreenInfo(commoninfoBean, JZMScreenConst.SCREEN_ID_ZMW03401, JZMScreenConst.SCREEN_NAME_ZMW03401);
		
		return true;
	}
	
	/**
	 * ページング処理を行います。(確認画面)
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean paging2()throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		if(!pagingBase(false))
		{
			return true;
		}
		
		// メッセージの設定の設定
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I , MSG_REP_INIT);
		
		// メッセージエリアの背景色を強調する。
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
		
		JZMWebCommon.setNextScreenInfo(commoninfoBean, JZMScreenConst.SCREEN_ID_ZMW03402, JZMScreenConst.SCREEN_NAME_ZMW03402);
		
		return true;
	}

	
	/**
	 * ページング処理を行います。
	 * @param gotoTorokuGamen 登録画面への遷移
	 * @return 処理結果
	 */
	private boolean pagingBase(boolean gotoTorokuGamen)
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 選択した権限をリストに追加します。
		addChoiceAuthorityCd(bean);
		
		// 選択した権限の有無を設定します。
		setChoiceAuthorityUmFlg(bean);
		
		// 検索処理の呼び出し
		String searchErrFlg = callAuthoritySearchSrv(gotoTorokuGamen);
		
		// 権限検索エラーフラグが出た場合は引継ぎ情報を格納する。
		if(searchErrFlg != null && !JZMWebConst.BLANK.equals(searchErrFlg))
		{
			if(!isNoDispDtl(isAdd(bean), searchErrFlg))
			{
				if(isAdd(bean))
				{
					// ロール設定権限選択画面に遷移する。
					seniTo3302(bean);
					return false;
				}
				else
				{
					// ロール一覧画面に遷移する。
					JZMWebCommon.setNextScreenInfo(getCommonInfoBean(), JZMScreenConst.SCREEN_ID_ZMW03301, JZMScreenConst.SCREEN_NAME_ZMW03301);
					return false;
				}
			}
			
		}

		// 行選択フラグを設定する。
		setRowChoiceFlg();
		
		return true;
	}

	/**
	 * ロール設定権限情報選択画面に遷移する。<br />
	 * @param bean サービスフォームBean
	 */
	private void seniTo3302(X31SDataBeanAccess bean)
	{
		
		JZMWebCommon.clearPageLinkInfo(this, JZMScreenConst.SCREEN_ID_ZMW03401);
		JZMWebCommon.clearPageLinkInfo(this, JZMScreenConst.SCREEN_ID_ZMW03402);
		
		// 権限選択画面に遷移する。
		JZMWebCommon.setNextScreenInfo(getCommonInfoBean(), JZMScreenConst.SCREEN_ID_ZMW03302, JZMScreenConst.SCREEN_NAME_ZMW03302);
	}
	
	/**
	 * 修正ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean shusei()throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		JZMWebCommon.clearPageLinkInfo(this, JZMScreenConst.SCREEN_ID_ZMW03401);
		JZMWebCommon.clearPageLinkInfo(this, JZMScreenConst.SCREEN_ID_ZMW03402);
		
		if(!pagingBase(true))
		{
			return true;
		}
		
		JZMWebCommon.setNextScreenInfo(commoninfoBean, JZMScreenConst.SCREEN_ID_ZMW03401, JZMScreenConst.SCREEN_NAME_ZMW03401);
		
		return true;
	}
	

	/**
	 * 登録確認ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean addCfm()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 権限コードを追加権限コードリストに追加する。
		addChoiceAuthorityCd(bean);
		
		// 選択権限有無フラグを設定する。
		setChoiceAuthorityUmFlg(bean);
		
		// 適用開始年月日の取得と設定
		String  ymd = JPCUtilCommon.concatYmd(
				bean.sendMessageString(ZMW03401SFConst.TSTAYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE), 
				bean.sendMessageString(ZMW03401SFConst.TSTAYMD_MON, X31CWebConst.DATABEAN_GET_VALUE), 
				bean.sendMessageString(ZMW03401SFConst.TSTAYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW03401SFConst.TSTAYMD , X31CWebConst.DATABEAN_SET_VALUE , JZMWebCommon.nullToBlank(ymd));
		
		// 適用終了年月日の取得と設定
		ymd = JPCUtilCommon.concatYmd(
				bean.sendMessageString(ZMW03401SFConst.TENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(ZMW03401SFConst.TENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE), 
				bean.sendMessageString(ZMW03401SFConst.TENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ZMW03401SFConst.TENDYMD, X31CWebConst.DATABEAN_SET_VALUE , JZMWebCommon.nullToBlank(ymd));
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケース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>();
		
		// ユースケースIDの設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV103);
		
		// マッピングクラスのインスタンスを生成
		ZMSV0103_ZMSV0103OPDBMapper mapper = new ZMSV0103_ZMSV0103OPDBMapper();
		
		boolean isAdd = isAdd(bean);
		
		if(isAdd)
		{
			mapper.setZMSV010302SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
			mapper.setZMSV010303CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			// ページング情報の設定
			JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10303, dataMap, JZMScreenConst.SCREEN_ID_ZMW03402);
		}
		else
		{
			mapper.setZMSV010301CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setZMSV010302SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
			
			mapper.setZMSV010304CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

			JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10304, dataMap, JZMScreenConst.SCREEN_ID_ZMW03402);
			
		}
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);
		
		String authoritySearchErrFlg = null;
		
		if(isAdd)
		{
			authoritySearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC10303, outputMap);
		}
		else
		{
			authoritySearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC10304, outputMap);
		}

		// 権限検索のエラー処理
		
		if(!JZMWebCommon.isNullOrBlank(authoritySearchErrFlg))
		{
			
			// 権限検索エラーに対応するエラーメッセージを設定する。
			setAuthorityErrMsg(isAdd, authoritySearchErrFlg);

			if(!isNoDispDtl(isAdd, authoritySearchErrFlg))
			{
				// エラーメッセージが表示される場合
				if(JZMWebCommon.hasMsgList(commonBean))
				{
					if(isAdd)
					{
						seniTo3302(bean);
					}
					else
					{
						JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03301, JZMScreenConst.SCREEN_NAME_ZMW03301);
					}
					
					return true;
				}
				
			}
		}
		
		// 一覧の初期化
		bean.getDataBeanArray(ZMW03401SFConst.EZM0011B010CBSMSG1LIST).clearArray();
		
		if(isAdd)
		{
			// マッピングクラスの呼び出し
			mapper.getZMSV010303CC(paramBean, outputMap);
			
			// ページング情報の設定
			JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10303, outputMap, JZMScreenConst.SCREEN_ID_ZMW03402);
		}
		else
		{
			// マッピングクラスの呼び出し
			mapper.getZMSV010304CC(paramBean, outputMap);

			// ページング情報の設定
			JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10304, outputMap, JZMScreenConst.SCREEN_ID_ZMW03402);
		}

		// 検索のコマンドIDを設定する。
		JZMWebCommon.setSearchCommand(this, JZMWebConst.EVENT_ID_PAGING, JZMScreenConst.SCREEN_ID_ZMW03402);
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW03401SFConst.EZM0011B010CBSMSG1LIST, ZMW03401SFConst.ROW_STYLE_CLASS_01);

		// 選択権限有無フラグの設定
		setChoiceAuthorityUmFlg(bean);
		
		// メッセージの設定の設定
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I , MSG_REP_INIT);
		
		// メッセージエリアの背景色を強調する。
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);

		// 表示された一覧にチェックを入れる。
		setRowChoiceFlg();
		
		// 画面遷移
		JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03402, JZMScreenConst.SCREEN_NAME_ZMW03402);
		
		return true;
	}
	
	/**
	 * 明細非表示かどうかを判定します。
	 * @param isAdd 登録画面判定
	 * @param authoritySearchErrFlg 検索エラーフラグ
	 * @return 判定結果
	 */
	private boolean isNoDispDtl(boolean isAdd, String authoritySearchErrFlg)
	{
		return !isAdd && !JZMWebCommon.getSendMessageBoolean(getServiceFormBean(), ZMW03401SFConst.DTL_DSP_FLG)
		&& JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(authoritySearchErrFlg);
	}
	
	/**
	 * 確定ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean fix()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケース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>();
		
		String dspRoleCd = JZMWebCommon.getSendMessageString(bean, ZMW03401SFConst.DSP_ROLE_CD);
		String roleNm = JZMWebCommon.getSendMessageString(bean, ZMW03401SFConst.ROLE_NM);
		String tstaymd = JZMWebCommon.getSendMessageString(bean, ZMW03401SFConst.TSTAYMD);
		String tendymd = JZMWebCommon.getSendMessageString(bean, ZMW03401SFConst.TENDYMD);
		
		// 選択権限コードリスト
		ArrayList<String> cdList = new ArrayList<String>();

		// 選択権限更新年月日時分秒リスト
		ArrayList<String> dtmList = new ArrayList<String>();
		
		for(int i = 0; i < bean.getDataBeanArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST).getCount(); i++)
		{
			X31SDataBeanAccess comboBean = bean.getDataBeanArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST).getDataBean(i);
			cdList.add(JZMWebCommon.getSendMessageString(comboBean, ZMW03401SFConst.CHOICE_AUTHORITY_CD_02));
			dtmList.add(JZMWebCommon.getSendMessageString(comboBean, ZMW03401SFConst.CHOICE_AUTHORITY_UPD_DTM_02));
		}

		boolean isAdd = isAdd(bean);

		// ユースケースIDの設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV102);

		// マッピングクラスのインスタンスを生成
		ZMSV0102_ZMSV0102OPDBMapper mapper = new ZMSV0102_ZMSV0102OPDBMapper();
		
		// バイナリ用Map
		HashMap<String, Object> attachMap = null;
		
		if(isAdd)
		{
			attachMap = JZMWebCommon.getRoleAttachMap(0, dspRoleCd, roleNm, tstaymd, tendymd, null, cdList, dtmList, null, null);	

			mapper.setZMSV010202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
			mapper.setZMSV010203SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setZMSV010204SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			String roleCd = JZMWebCommon.getSendMessageString(bean, ZMW03401SFConst.ROLE_CD);
			String roleUpdDtm = JZMWebCommon.getSendMessageString(bean, ZMW03401SFConst.UPD_DTM);
			
			StringBuffer sb = new StringBuffer();
			JZMWebCommon.setAttachMapLine(sb, JZMWebConst.ROLE_DLYD_COPY_ADD, roleCd, null, null, null, roleUpdDtm, null, null);
			JZMWebCommon.setAttachMapLine(sb, JZMWebConst.ROLE_DLYD_COPY_ADD, dspRoleCd, roleNm, tstaymd, tendymd, null, null, null);
			
			attachMap = new HashMap<String, Object>();
			HashMap<String, Object> fileMap = new HashMap<String, Object>();
			ArrayList fileList = new ArrayList();
			fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE,  sb.toString().getBytes(JZMWebConst.ENCODE_MS932));
			fileList.add(fileMap);
			attachMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);

			mapper.setZMSV010201CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setZMSV010202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
			mapper.setZMSV010203SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setZMSV010204SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		
		
		// マッピング
		HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC10203);
		inDataMap.put(JZMWebConst.ECC0111D010_DLYD_TRN_JSSI_UNYO_DTM, JZMWebCommon.getOpeDateTimeStamp(this, null));
		inDataMap.put(JZMWebConst.ECC0111D010_FILE_DEL_YMD, JZMWebConst.ENDYMD);

		inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.SC10204);
		inDataMap.put(JZMWebConst.EZM0251D010_TRN_REQ_DTM, JZMWebCommon.getOpeDateTime(this, null).substring(0, 12));
		inDataMap.put(JZMWebConst.EZM0251D010_FILE_DEL_YMD, JZMWebConst.ENDYMD);
		inDataMap.put(JZMWebConst.EZM0251D010_TRN_IRAISHA_OPEACNT, JZMWebCommon.getSendMessageString(commonBean, CommonInfoCFConst.USER_ID));
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap, attachMap);

		// メッセージの設定の設定
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I , MSG_REP_FIN);
		
		// 画面遷移
		JZMWebCommon.setNextScreenInfo(commonBean, JZMScreenConst.SCREEN_ID_ZMW03403, JZMScreenConst.SCREEN_NAME_ZMW03403);
		
		return true;
	}

	
	/**
	 * 戻るボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean back()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// 画面遷移
		JZMWebCommon.setNextScreenInfo(commonBean, JZMWebCommon.getScreenId(this), JZMWebConst.BLANK);
		
		return true;
	}

	/**
	 * 完了ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fin()throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// 画面遷移
		JZMWebCommon.setNextScreenInfo(commonBean, JZMWebCommon.getScreenId(this), JZMWebConst.BLANK);
		
		return true;
	}
	
	/**
	 * 権限検索サービスを呼び出します。
	 * <br />
	 * @param gotoTorokuGamen 登録画面への遷移
	 * @return 検索エラーフラグ
	 */
	@SuppressWarnings("unchecked")
	private String callAuthoritySearchSrv(boolean gotoTorokuGamen)
	{
		
		X31SDataBeanAccess bean = getServiceFormBean();
		
		X31SDataBeanAccess[] paramBean = {bean};
		
		boolean isAdd = isAdd(bean);
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV100);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 検索エラーフラグの取得
		String searchErrFlg = null;
		
		String maxShowCnt = JZMWebCommon.getSearchConst(ZMW03401_MAX_SHOW_CNT);
		
		String rowPerPage = JZMWebCommon.getSearchConst(ZMW03401_ROW_PER_PAGE);

		// 一覧の初期化
		bean.getDataBeanArray(ZMW03401SFConst.EZM0011B010CBSMSG1LIST).clearArray();
		
		if(isAdd)
		{
			
			// マッピングクラスのインスタンスを生成
			ZMSV0100_ZMSV0100OPDBMapper_ZMSV010001CC mapper = new ZMSV0100_ZMSV0100OPDBMapper_ZMSV010001CC();
			
			HashMap<String, Object> dataMap = getCC10001DataMap(paramBean, mapper, maxShowCnt, rowPerPage);
			
			if(gotoTorokuGamen)
			{
				// ページング情報の設定
				JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10001, dataMap, JZMScreenConst.SCREEN_ID_ZMW03401);
			}
			else
			{
				// ページング情報の設定
				JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC10001, dataMap);
			}
			
			// サービスの呼び出し
			invokeService(paramMap, dataMap, outputMap);
			
			// マッピングクラスの呼び出し
			mapper.getZMSV010001CC(paramBean, outputMap);

			if(gotoTorokuGamen)
			{
				// ページング情報の設定
				JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10001, outputMap, JZMScreenConst.SCREEN_ID_ZMW03401);
			
			}
			else
			{
				// ページング情報の設定
				JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC10001, outputMap);
			}
			
			// 検索エラーフラグの取得
			searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC10001, outputMap);
			
		}
		else
		{
			// マッピングクラスのインスタンスを生成
			ZMSV0100_ZMSV0100OPDBMapper_ZMSV010002CC mapper = new ZMSV0100_ZMSV0100OPDBMapper_ZMSV010002CC();
			
			HashMap<String, Object> dataMap = getCC10002DataMap(paramBean, mapper, maxShowCnt, rowPerPage);
			
			if(gotoTorokuGamen)
			{
				// ページング情報の設定
				JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10002, dataMap, JZMScreenConst.SCREEN_ID_ZMW03401);
			}
			else
			{
				// ページング情報の設定
				JZMWebCommon.upmapperPageLinkInfo(this, JZMWebConst.CC10002, dataMap);
			}
			
			// サービスの呼び出し
			invokeService(paramMap, dataMap, outputMap);
			
			// マッピングクラスの呼び出し
			mapper.getZMSV010002CC(paramBean, outputMap);
			
			if(gotoTorokuGamen)
			{
				// ページング情報の設定
				JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.ZERO, JZMWebConst.CC10002, outputMap, JZMScreenConst.SCREEN_ID_ZMW03401);
			}
			else
			{
				JZMWebCommon.downmapperPageLinkInfo(this, JZMWebConst.CC10002, outputMap);
			}
			// ページング情報の設定
			
			// 検索エラーフラグの取得
			searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC10002, outputMap);
		}

		
		// 権限検索エラーに対応するエラーメッセージを設定する。
		setAuthorityErrMsg(isAdd, searchErrFlg);
		
		// 行の背景色を設定
		JZMWebCommon.setRowStyleClass(bean, ZMW03401SFConst.EZM0011B010CBSMSG1LIST, ZMW03401SFConst.ROW_STYLE_CLASS_01);
	
		return searchErrFlg;
	}


	/**
	 * 権限エラーフラグに対応するメッセージを設定する。
	 * @param isAdd 登録画面判定フラグ
	 * @param authoritySearchErrFlg 権限エラーフラグ
	 */
	private void setAuthorityErrMsg(boolean isAdd, String authoritySearchErrFlg)
	{
		if(isAdd)
		{
			// 登録画面の場合
			
			if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(authoritySearchErrFlg))
			{
				// 検索結果が0件の場合、エラーメッセージを表示
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO_I);
				
			}
			else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(authoritySearchErrFlg))
			{

				String[] item = {JZMWebCommon.getSearchConst(ZMW03401_MAX_SHOW_CNT)};
				
				// 検索結果が最大検索件数を超える場合、エラーメッセージを表示
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_OVERMAX_I, item);
			}
			else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(authoritySearchErrFlg))
			{
				// 検索結果が0件の場合、エラーメッセージを表示
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NODATA_I);
			}
		}
		else
		{
			// 複写登録画面の場合

			if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(authoritySearchErrFlg))
			{
				// 検索結果が0件の場合、エラーメッセージを表示
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_ZERO_W);
				
			}
			else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(authoritySearchErrFlg))
			{

				if(JZMWebCommon.getSendMessageBoolean(getServiceFormBean(), ZMW03401SFConst.DTL_DSP_FLG))
				{
					// 複写登録かつ検索エラーフラグ2かつ初期表示時点で検索最大限を超えていた場合、明細を非表示に設定。
					
					// ロールが更新されたとして、エラーメッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_OVERMAX_W);
				}
				else
				{
					
					// 複写登録かつ検索エラーフラグ2の場合
					String[] item = {JZMWebCommon.getSearchConst(ZMW03401_MAX_SHOW_CNT)};
					
					// 検索結果が最大検索件数を超える場合、メッセージを表示
					JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NO_DISP_DTL, item);
				}
			}
			else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(authoritySearchErrFlg))
			{
				// 検索結果が0件の場合、エラーメッセージを表示
				JZMWebCommon.setMessageInfo(this, SEARCH_ERR_MESSAGE_NODATA_W);
			}
		}
	}


	/**
	 * CC10002のDataMapを取得する。
	 * @param paramBean paramBean
	 * @param mapper mapper
	 * @param maxShowCnt 最大検索件数
	 * @param rowPerPage 最大表示件数
	 * @return DataMap
	 */
	@SuppressWarnings("unchecked")
	private HashMap getCC10002DataMap(X31SDataBeanAccess[] paramBean,
			ZMSV0100_ZMSV0100OPDBMapper_ZMSV010002CC mapper,
			String maxShowCnt,
			String rowPerPage)
	{

		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		mapper.setBeanListNm(ZMW03401SFConst.EZM0011B010CBSMSG1LIST);
		mapper.setKeyClmNmRoleCd(ZMW03401SFConst.ROLE_CD);
		mapper.setKeyClmNmAuthorityCd(ZMW03401SFConst.AUTHORITY_CD);
		mapper.setKeyClmNmAuthorityNm(ZMW03401SFConst.AUTHORITY_NM);
		mapper.setKeyClmNmAuthoritySbtCd(ZMW03401SFConst.AUTHORITY_SBT_CD);
		mapper.setListClmNmRoleCd(ZMW03401SFConst.ROLE_CD_01);
		mapper.setListClmNmAuthorityCd(ZMW03401SFConst.AUTHORITY_CD_01);
		mapper.setListClmNmAuthorityNm(ZMW03401SFConst.AUTHORITY_NM_01);
		mapper.setListClmNmAuthoritySbtCdNm(ZMW03401SFConst.AUTHORITY_SBT_CD_NM_01);
		mapper.setListClmNmAuthorityTendymd(ZMW03401SFConst.AUTHORITY_TENDYMD_01);
		mapper.setListClmNmAuthorityTstaymd(ZMW03401SFConst.AUTHORITY_TSTAYMD_01);
		mapper.setListClmNmAuthorityUpdDtm(ZMW03401SFConst.AUTHORITY_UPD_DTM_01);
		mapper.setListClmNmRoleChoiceFlg(ZMW03401SFConst.ROW_CHOISE_FLG_01);
		
		mapper.setZMSV010002CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1, maxShowCnt, rowPerPage);
		
		HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get(JZMWebConst.CC10002);
		
		inDataMap.put(JZMWebConst.EZM0031_KEY_SEARCH_DIV, JZMWebConst.ONE);
		
		return dataMap;
	}

	/**
	 * CC10001のDataMapを取得する。
	 * @param paramBean paramBean
	 * @param mapper mapper
	 * @param maxShowCnt 最大検索件数
	 * @param rowPerPage 最大表示件数
	 * @return DataMap
	 */
	@SuppressWarnings("unchecked")
	private HashMap getCC10001DataMap(X31SDataBeanAccess[] paramBean,
			ZMSV0100_ZMSV0100OPDBMapper_ZMSV010001CC mapper,
			String maxShowCnt,
			String rowPerPage)
	{

		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		mapper.setKeyClmNmAuthorityCd(ZMW03401SFConst.AUTHORITY_CD);
		mapper.setKeyClmNmAuthorityNm(ZMW03401SFConst.AUTHORITY_NM);
		mapper.setKeyClmNmAuthoritySbtCd(ZMW03401SFConst.AUTHORITY_SBT_CD);
		mapper.setListClmNmAuthorityCd(ZMW03401SFConst.AUTHORITY_CD_01);
		mapper.setListClmNmAuthorityNm(ZMW03401SFConst.AUTHORITY_NM_01);
		mapper.setListClmNmAuthoritySbtCdNm(ZMW03401SFConst.AUTHORITY_SBT_CD_NM_01);
		mapper.setListClmNmAuthorityTendymd(ZMW03401SFConst.AUTHORITY_TENDYMD_01);
		mapper.setListClmNmAuthorityTstaymd(ZMW03401SFConst.AUTHORITY_TSTAYMD_01);
		mapper.setListClmNmAuthorityUpdDtm(ZMW03401SFConst.AUTHORITY_UPD_DTM_01);
		
		mapper.setZMSV010001CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1, maxShowCnt, rowPerPage);
		
		return dataMap;
	}

	/**
	 * 行選択フラグにチェックを入れる。
	 */
	private void setRowChoiceFlg()
	{
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 権限一覧を取得する。
		X31SDataBeanAccessArray msgList = bean.getDataBeanArray(ZMW03401SFConst.EZM0011B010CBSMSG1LIST);
		
		// すでに選択されている権限にチェックを行う。
		for(int i = 0; i < msgList.getCount(); i++)
		{
			X31SDataBeanAccess subBean = msgList.getDataBean(i);
			
			if(isAdd(bean))
			{
				String authCd = JZMWebCommon.getSendMessageString(subBean, ZMW03401SFConst.AUTHORITY_CD_01);
				
				if(getSameAuthorityCdIndex(bean, authCd) > -1)
				{
					JZMWebCommon.setSendMessageBoolean(subBean, ZMW03401SFConst.ROW_CHOISE_FLG_01, true);
				}
			}
			else
			{
				JZMWebCommon.setSendMessageBoolean(subBean, ZMW03401SFConst.ROW_CHOISE_FLG_01, true);
			}
		}
	}
	
	/**
	 * 選択権限有無フラグに値を設定する。
	 * @param bean サービスフォームBean
	 */
	private void setChoiceAuthorityUmFlg(X31SDataBeanAccess bean)
	{
		
		boolean isCopyAdd = JZMWebCommon.getSendMessageBoolean(bean, ZMW03401SFConst.COPY_ADD_FLG);
		if(isCopyAdd)
		{
			JZMWebCommon.setSendMessageString(bean, ZMW03401SFConst.CHOICE_AUTHORITY_CNT, JZMWebConst.ONE);
		}
		else
		{
			JZMWebCommon.setSendMessageString(bean, ZMW03401SFConst.CHOICE_AUTHORITY_CNT,
					bean.getDataBeanArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST).getCount());
		}
	}


	/**
	 * 選択された権限コードをリストに追加します。
	 * @param bean サービスフォームBean
	 */
	private void addChoiceAuthorityCd(X31SDataBeanAccess bean)
	{
		
		if(isAdd(bean))
		{
			// 権限一覧を取得する。
			X31SDataBeanAccessArray dspList = bean.getDataBeanArray(ZMW03401SFConst.EZM0011B010CBSMSG1LIST);
			
			// 選択権限コードリストを取得する。
			X31CVector<String> choiceAuthorityList = new X31CVector<String>();
			bean.sendMessageStringArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST, X31CWebConst.DATABEAN_GET_VALUE, choiceAuthorityList);

			for(int i = 0; i < dspList.getCount(); i++)
			{
				X31SDataBeanAccess subBean = dspList.getDataBean(i);
				String authCd = JZMWebCommon.getSendMessageString(subBean, ZMW03401SFConst.AUTHORITY_CD_01);
				String updDtm = JZMWebCommon.getSendMessageString(subBean, ZMW03401SFConst.AUTHORITY_UPD_DTM_01);

				int sameAuthorityCdIndex = getSameAuthorityCdIndex(bean, authCd);
				
				// 権限一覧が選択されている場合、権限を選択権限コードリストに追加する。
				if(JZMWebCommon.getSendMessageBoolean(subBean, ZMW03401SFConst.ROW_CHOISE_FLG_01))
				{
					if(sameAuthorityCdIndex == -1)
					{
						X31SDataBeanAccess comboBean = bean.getDataBeanArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST).addDataBean();
						JZMWebCommon.setSendMessageString(comboBean, ZMW03401SFConst.CHOICE_AUTHORITY_CD_02, authCd);
						JZMWebCommon.setSendMessageString(comboBean, ZMW03401SFConst.CHOICE_AUTHORITY_UPD_DTM_02, updDtm);
					}
				}
				else
				{
					// 選択されていない場合、選択権限コードリストから削除する。
					if(sameAuthorityCdIndex >= 0)
					{
						bean.getDataBeanArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST).removeDataBean(sameAuthorityCdIndex);
					}
				}
			}
			bean.sendMessageStringArray(ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST, X31CWebConst.DATABEAN_SET_VALUE, choiceAuthorityList); 
		}
	}

	/** 
	 * Beanリストから同一の権限コードが含まれているindexを返します。
	 * @param bean サービスフォームBean
	 * @param authCd 権限コード
	 * @return index(見つからない場合は -1)
	 */
	private int getSameAuthorityCdIndex(X31SDataBeanAccess bean, String authCd)
	{
		return JZMWebCommon.getSameAuthorityCdIndex(bean, ZMW03401SFConst.CHOICE_AUTHORITY_CD_LIST, ZMW03401SFConst.CHOICE_AUTHORITY_CD_02, authCd);
	}
	
	/**
	 * paramMapに項目名称と同一のキーでサービスフォームBeanの値を設定します。
	 * @param bean サービスフォームBean
	 * @param paramMap 情報格納用マップ
	 * @param clmNm 項目名称
	 */
//	private void putParamMap(X31SDataBeanAccess bean,
//			HashMap<String, Object> paramMap, String clmNm)
//	{
//		paramMap.put(clmNm, JZMWebCommon.getSendMessageString(bean, clmNm));
//	}

	/**
	 * 新規登録画面かどうかを判定します。
	 * @param bean サービスフォームBean
	 * @return 判定結果
	 */
	private boolean isAdd(X31SDataBeanAccess bean)
	{
		return !JZMWebCommon.getSendMessageBoolean(bean, ZMW03401SFConst.COPY_ADD_FLG);
	}
}
