/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
*   ソースファイル名：DKW02901SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月26日
*＜機能概要＞
 * 未回収一覧登録画面を処理するロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/26   FJ          新規作成
*   v5.00.00    2013/10/31   FJ          OM-2013-0003814(最大件数指定方法変更に伴う画面ID設定)
*   v5.00.01	2013/11/12	 FJ          OM-2013-0004060 性能改善（タイムアウトエラーのハンドリング追加）
**********************************************************************/
package eo.web.webview.DKW02901SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.common.constant.JPCModelConstant.*;
import static eo.common.constant.JPCOnlineMessageConstant.*;
import static eo.web.webview.DKW02901SF.DKW02901SFConst.*;
import static eo.web.webview.common.JDKScreenConst.*;
import static eo.web.webview.common.JDKWebCommon.*;
import static eo.common.util.JDKCommonUtil.*;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

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 com.fujitsu.futurity.web.x31.X31SRuntimeException;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JDKCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.DKW03202SF.DKW03202SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.mapping.DKSV0022_DKSV0022OPDBMapper;
import eo.web.webview.mapping.DKSV0049_DKSV0049OPDBMapper;
import eo.web.webview.mapping.DKSV0050_DKSV0050OPDBMapper;

/**
 * 未回収一覧登録画面を処理するロジッククラスです。
 * @author 富士通
 */
public class DKW02901SFLogic extends JCCWebBusinessLogic
{
	/** シリアル番号 */
	private static final long serialVersionUID = 1L;
	
	/** セッションに保管する文字列データのキー */
	private static final String [] SEARCH_CONDITION_KEIES = {SEARCH_BTRYHOZN_NO
																, SEARCH_HMPIN_DIV
																, SEARCH_HMPIN_UK_YMD_FROM
																, SEARCH_HMPIN_UK_YMD_TO
																, SEARCH_KIKI_SEIZO_NO
																, SEARCH_MDL_NO
																, SEARCH_PRC_GRP_CD
																, SEARCH_SVC_KEI_NO
																};
	
	/** 明細項目と詳細画面項目のひも付け */
	private static final Map<String, String> DETAIL_MAP = new HashMap<String, String>();
	static
	{
		DETAIL_MAP.put(DKW03202SFConst.SVC_KEI_NO, LOAD_OYA_SVKEI_NO_03);
		DETAIL_MAP.put(DKW03202SFConst.PRC_GRP_CD_NM, PRC_GRP_CD_NM_03);
		DETAIL_MAP.put(DKW03202SFConst.SYSID, SYSID_03);
		DETAIL_MAP.put(DKW03202SFConst.KEISHA_NM, KEISHA_NM_03);
		DETAIL_MAP.put(DKW03202SFConst.KEISHA_PCD, PCD_03);
		DETAIL_MAP.put(DKW03202SFConst.KEISHA_TELNO, HISOS_TELNO_03);
		DETAIL_MAP.put(DKW03202SFConst.HMPIN_DIV_NM, HMPIN_DIV_NM_03);
		DETAIL_MAP.put(DKW03202SFConst.BTRYHOZN_NO, BTRYHOZN_NO_03);
		DETAIL_MAP.put(DKW03202SFConst.SHUKKA_LOT_NO, SHUKKA_LOT_NO_03);
		DETAIL_MAP.put(DKW03202SFConst.MODEL_NO, MODEL_NO_03);
		DETAIL_MAP.put(DKW03202SFConst.ITEM_NM, ITEM_NM_03);
		DETAIL_MAP.put(DKW03202SFConst.KIKI_SEIZO_NO, KIKI_SEIZO_NO_03);
		DETAIL_MAP.put(DKW03202SFConst.KKTK_SBT_CD_NM, KKTK_SBT_NM_03);
	}

	/** 入力必須プルダウンの項目名 */
	private static final String [] REQUIRED_PULLDOWNS = {HMPIN_DIV_INFO, SOKO_INFO, GDS_STAT_INFO};
	/** オプションプルダウンの項目名 */
	private static final String [] OPTIONAL_PULLDOWNS = {PRC_GRP_INFO, MODEL_INFO};
	
	/**
	 * 初期表示を処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean init() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		setNextScreen(SCREEN_ID_DKW02901, SCREEN_NAME_DKW02901);
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, String> inputMap = new HashMap<String, String>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0049");
		
		DKSV0049_DKSV0049OPDBMapper mapper = new DKSV0049_DKSV0049OPDBMapper();
		mapper.setDKSV004901SC(paramBean, outputMap, FUNC_CD_1);
		mapper.setDKSV004902SC(paramBean, outputMap, FUNC_CD_1);
		mapper.setDKSV004903SC(paramBean, outputMap, FUNC_CD_1);
		mapper.setDKSV004904SC(paramBean, outputMap, FUNC_CD_2);
		mapper.setDKSV004905SC(paramBean, outputMap, FUNC_CD_1);

		invokeService(paramMap, inputMap, outputMap);

		mapper.getDKSV004901SC(paramBean, outputMap);
		mapper.getDKSV004902SC(paramBean, outputMap);
		mapper.getDKSV004903SC(paramBean, outputMap);
		mapper.getDKSV004904SC(paramBean, outputMap);
		mapper.getDKSV004905SC(paramBean, outputMap);
		
		for (String pulldown : OPTIONAL_PULLDOWNS)
		{
			pushEmptyToTopOfPulldown(pulldown, CD_LIST_01, NM_LIST_01);
		}
		for (String pulldown : REQUIRED_PULLDOWNS)
		{
			appendPrefix(getBean(this, pulldown), NM_LIST_01);
		}
		
		setScreenMode(0);
		
		if (!restoreConditionFromSession())
		{
			return true;
		}

		restoreSearchCondition();
		if (!innerSearch(FUNC_CD_1, MIHENKYAKU_LIST))
		{
			return true;
		}
		
		setScreenMode(1);
		
		String selectedNo = getData(this, SELECTED_CD);
		X31SDataBeanAccessArray list = getServiceFormBean().getDataBeanArray(MIHENKYAKU_LIST);
		int length = list.getCount();
		for (int i = 0; i < length; i++)
		{
			String noOnLine = getData(list.getDataBean(i), HMPIN_KIKI_NO_03);
			if (noOnLine.equals(selectedNo))
			{
				setData(this, (long)i, SELECTED_INDEX);
				break;
			}
		}
		
		return true;
	}
	

	/**
	 * 検索ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean search() throws Exception
	{
		storeSearchCondition();
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02901);
		boolean gotResults = innerSearch(FUNC_CD_1, MIHENKYAKU_LIST);
		setScreenMode(gotResults ? 1 : 0);
		setNextScreen(SCREEN_ID_DKW02901, SCREEN_NAME_DKW02901);
		return true;
	}

	/**
	 * ページングを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean paging() throws Exception
	{
		innerSearch(FUNC_CD_1, MIHENKYAKU_LIST);
		setNextScreen(SCREEN_ID_DKW02901, SCREEN_NAME_DKW02901);
		return true;
	}



	/**
	 * クリアボタン押下イベントを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean clear() throws Exception
	{
		setData(this, "", SAKUSEI_STA_YMD, YEAR_02);
		setData(this, "", SAKUSEI_STA_YMD, MON_02);
		setData(this, "", SAKUSEI_STA_YMD, DAY_02);
		setData(this, "", SAKUSEI_END_YMD, YEAR_02);
		setData(this, "", SAKUSEI_END_YMD, MON_02);
		setData(this, "", SAKUSEI_END_YMD, DAY_02);

		setData(this, "", SVC_KEI_NO);
		setData(this, "", KIKI_SEIZO_NO);
		setData(this, "", BTRYHOZN_NO);

		for (String pulldown : REQUIRED_PULLDOWNS)
		{
			setData(this, 0L, pulldown, INDEX_01);
		}
		for (String pulldown : OPTIONAL_PULLDOWNS)
		{
			setData(this, 0L, pulldown, INDEX_01);
		}
		
		getServiceFormBean().getDataBeanArray(MIHENKYAKU_LIST).clearArray();
		
		storeSearchCondition();
		return init();
	}
	
	
	/**
	 * 未返却機器詳細へ遷移します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public boolean detail() throws Exception
	{
		JCCWebCommon.setScreenId(this, SCREEN_ID_DKW03202, getGamenId());
		
		HashMap detailMap = new HashMap();
		
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW03202, detailMap);
		Set<String> keies = DETAIL_MAP.keySet();
		for (String key : keies)
		{
			detailMap.put(key, getData(getSelectedRecord(), DETAIL_MAP.get(key)));
		}
		detailMap.put(DKW03202SFConst.KEISHA_AD, getData(getSelectedRecord(), ADDRESS_03));
		detailMap.put(DKW03202SFConst.RETURN_SCREEN_ID, SCREEN_ID_DKW02901);
		detailMap.put(DKW03202SFConst.RETURN_SCREEN_NM, SCREEN_NAME_DKW02901);
		
		HashMap myMap = new HashMap();
		for (String key : SEARCH_CONDITION_KEIES)
		{
			myMap.put(key, getData(this, key));
		}
		myMap.put(SELECTED_CD, getData(getSelectedRecord(), HMPIN_KIKI_NO_03));
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW02901, myMap);

		setNextScreen(SCREEN_ID_DKW03202, SCREEN_NAME_DKW03202);
		
		return true;
	}

	/**
	 * 登録確認ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean confirm() throws Exception 
	{
		X31SDataBeanAccess nextScreenData = getBean(this, SELECTED_MIHENKYAKU_DATA);
		X31SDataBeanAccess selectedData = getSelectedRecord();

		storePullDown(this, SOKO_INFO, INDEX_04, CD_04, NM_04, CD_LIST_04, NM_LIST_04);
		storePullDown(this, SOKO_INFO, INDEX_04, TTM_DIV_04, TTM_DIV_LIST_04);
		storePullDown(this, GDS_STAT_INFO, INDEX_01, CD_01, NM_01, CD_LIST_01, NM_LIST_01);
		
		copyStructure(selectedData, nextScreenData);
		setData(this, getData(selectedData, HMPIN_KIKI_NO_03), SELECTED_CD);

		JCCWebCommon.setMessageInfo(this, EKB0370__I, new String [] { "未返却回収登録"});
		setNextScreen(SCREEN_ID_DKW02902, SCREEN_NAME_DKW02902);
		return true;
	}


	/**
	 * 修正ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean redo() throws Exception 
	{
		setNextScreen(SCREEN_ID_DKW02901, SCREEN_NAME_DKW02901);
		return true;
	}

	/**
	 * 確定ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public boolean fix() throws Exception 
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0050");
		
		DKSV0050_DKSV0050OPDBMapper mapper = new DKSV0050_DKSV0050OPDBMapper();
		mapper.setDKSV005001SC(paramBean, inputMap, FUNC_CD_1);
		mapper.setDKSV005002SC(paramBean, inputMap, FUNC_CD_1);
		mapper.setDKSV005003SC(paramBean, inputMap, FUNC_CD_2);
		mapper.setDKSV005004SC(paramBean, inputMap, FUNC_CD_1);
		mapper.setDKSV005005CC(paramBean, inputMap, FUNC_CD_1);
		
		X31CMessageResult msgResult = null;
		
		msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCWebCommon.setMessageInfo(this, EKB0380__I, new String [] { "未返却回収登録"});
		setNextScreen(SCREEN_ID_DKW02903, SCREEN_NAME_DKW02903);
		return true;
	}
	

	/**
	 * 完了ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean fin() throws Exception 
	{
		search();
		setNextScreen(SCREEN_ID_DKW02901, SCREEN_NAME_DKW02901);
		return true;
	}
	
	
	
	
	/**
	 * 選択されたレコードを取得します。
	 * @return 返品機器番号
	 */
	private X31SDataBeanAccess getSelectedRecord()
	{
		Long index = getDataL(this, SELECTED_INDEX);
		return getServiceFormBean().getDataBeanArray(MIHENKYAKU_LIST).getDataBean(index.intValue());
	}
	


	/**
	 * 検索処理を実行します。
	 * @param functionCode 機能コード
	 * @param listName サービスからの返り値を受ける項目名
	 * @return 検索処理の成功:true 失敗:false
	 * @throws Exception 例外
	 */
	private boolean innerSearch(String functionCode, String listName) throws Exception 
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, String> inputMap = new HashMap<String, String>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		inputMap.put("gamenId", SCREEN_ID_DKW02901);
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0022");

		DKSV0022_DKSV0022OPDBMapper mapper = new DKSV0022_DKSV0022OPDBMapper();
		mapper.setDKSV002201SC(paramBean, inputMap, functionCode);

		JCCWebCommon.upmapperPageLinkInfo(this, "DKSV002201CC", inputMap, SCREEN_ID_DKW02901);
		
		// 処理前の時間を取得
		long searchStartTime = System.currentTimeMillis();
		
		try {
			// 検索処理呼出
			invokeService(paramMap, inputMap, outputMap);
		} catch (X31SRuntimeException ex) {
			if (System.currentTimeMillis() - searchStartTime > 240000)
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD840__I);
				return false;
			}
			else
			{
				throw ex;
			}
		}
		
		JCCWebCommon.downmapperPageLinkInfo(this, "DKSV002201CC", outputMap, SCREEN_ID_DKW02901);
		
		mapper.getDKSV002201SC(paramBean, outputMap, listName);

		String searchErrFlg = JCCWebCommon.getSearchErrFlg("DKSV002201CC", outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			DEBUG_LOG.debug("検索結果0件");
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			DEBUG_LOG.debug(String.format("検索結果%s件以上", JCCWebCommon.getSearchConst("DKW02901_MAX_SHOW_CNT")));
			JCCWebCommon.setMessageInfo(this, "EKB0340--I", new String [] {JCCWebCommon.getSearchConst("DKW02901_MAX_SHOW_CNT")});
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			DEBUG_LOG.debug(String.format("データが見つからない"));
			if (getCommonInfoBean().getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST).getCount() == 0)
			{
				JCCWebCommon.setMessageInfo(this, "EKB0350--I");
			}
		}
		
		JCCWebCommon.setSearchCommand(this, "L_PAG");
		setData(this, 0L, SELECTED_INDEX);
		adjustList();
		
		return true;
	}
	

	
	/**
	 * 検索結果の一覧の表示調整をします。
	 * @throws Exception 例外
	 */
	private void adjustList() throws Exception
	{
		X31SDataBeanAccessArray list = getServiceFormBean().getDataBeanArray(MIHENKYAKU_LIST);
		int size = list.getCount();
		for (int i = 0 ; i < size ; i++) 
		{
			X31SDataBeanAccess data = list.getDataBean(i);

			setData(data, Integer.toString(i + 1), NO_03);
			setData(data, ((i + 1) % 2 == 0) ? "even" : "odd", COLOR_03);

			setData(data, substr(getData(data, KEISHA_NM_03), 0, 5), DISP_KEISHA_NM_03);
			setData(data, substr(getData(data, PRC_GRP_CD_NM_03), 0, 10), DISP_PRC_GRP_CD_NM_03);

			setData(data, join("", getData(data, ADDRESS_STATE_NM_03)
										, getData(data, ADDRESS_CITY_NM_03)
										, getData(data, ADDRESS_OAZTSU_NM_03)
										, getData(data, ADDRESS_AZCHO_NM_03)
										, getData(data, ADDRESS_BNCHIGO_03)
										, getData(data, ADDRESS_ADRTTM_03)
										, getData(data, ADDRESS_ADRRM_03)), ADDRESS_03);
			setData(data, isNull(getData(data, DSL_SOD_SEND_YMD_03)) ? "未発行" : "発行済", DSL_SOD_03);
		}
	}
	
	
	/**
	 * 画面入力値を検索条件に設定します。
	 */
	private void storeSearchCondition()
	{
		for (String pulldown : REQUIRED_PULLDOWNS)
		{
			storePullDown(this, pulldown, INDEX_01, CD_01, NM_01, CD_LIST_01, NM_LIST_01);
		}
		for (String pulldown : OPTIONAL_PULLDOWNS)
		{
			storePullDown(this, pulldown, INDEX_01, CD_01, NM_01, CD_LIST_01, NM_LIST_01);
		}

		setData(this,	getData(this, SAKUSEI_STA_YMD, YEAR_02) + 
						getData(this, SAKUSEI_STA_YMD, MON_02) + 
						getData(this, SAKUSEI_STA_YMD, DAY_02), SEARCH_HMPIN_UK_YMD_FROM);
		setData(this, 	getData(this, SAKUSEI_END_YMD, YEAR_02) + 
						getData(this, SAKUSEI_END_YMD, MON_02) + 
						getData(this, SAKUSEI_END_YMD, DAY_02), SEARCH_HMPIN_UK_YMD_TO);
		
		setData(this, getData(this, HMPIN_DIV_INFO, CD_01), SEARCH_HMPIN_DIV);
		setData(this, getData(this, PRC_GRP_INFO, CD_01), SEARCH_PRC_GRP_CD);
		setData(this, getData(this, MODEL_INFO, CD_01), SEARCH_MDL_NO);

		setData(this, getData(this, KIKI_SEIZO_NO), SEARCH_KIKI_SEIZO_NO);
		setData(this, getData(this, SVC_KEI_NO), SEARCH_SVC_KEI_NO);
		setData(this, getData(this, BTRYHOZN_NO), SEARCH_BTRYHOZN_NO);
	}
	

	/**
	 * セッションに格納した検索条件を復元します。
	 * @return 成否
	 */
	@SuppressWarnings("unchecked")
	private boolean restoreConditionFromSession()
	{
		HashMap map = JCCWebCommon.getScreenInfo(this);
		if (map == null)
		{
			return false;
		}

		for (String key : SEARCH_CONDITION_KEIES)
		{
			setData(this, (String)map.get(key), key);
		}
		if (map.containsKey(SELECTED_CD))
		{
			setData(this, map.get(SELECTED_CD).toString(), SELECTED_CD);
		}
		
		return true;
	}
	
	
	/**
	 * 前回検索時の検索条件を復元します。
	 */
	private void restoreSearchCondition()
	{
		initCalendar(SEARCH_HMPIN_UK_YMD_FROM, SAKUSEI_STA_YMD);
		initCalendar(SEARCH_HMPIN_UK_YMD_TO, SAKUSEI_END_YMD);

		setData(this, getData(this, SEARCH_SVC_KEI_NO), SVC_KEI_NO);
		setData(this, getData(this, SEARCH_KIKI_SEIZO_NO), KIKI_SEIZO_NO);
		setData(this, getData(this, SEARCH_BTRYHOZN_NO), BTRYHOZN_NO);

		initPulldownIndexByCode(MODEL_INFO, getData(this, SEARCH_MDL_NO));
		initPulldownIndexByCode(HMPIN_DIV_INFO, getData(this, SEARCH_HMPIN_DIV));
		initPulldownIndexByCode(PRC_GRP_INFO, getData(this, SEARCH_PRC_GRP_CD));
	}
	
	
	/**
	 * 検索条件からカレンダの入力を初期化します
	 * @param searchKeyLabel 日付情報が格納された検索キー
	 * @param calendarLabel 入力データを格納するキー
	 */
	private void initCalendar(String searchKeyLabel, String calendarLabel)
	{
		String ymd = getData(this, searchKeyLabel);
		if (JDKCommonUtil.isNull(ymd))
		{
			return;
		}

		setData(this, substr(ymd, 0, 4), calendarLabel, YEAR_02);
		setData(this, substr(ymd, 4, 6), calendarLabel, MON_02);
		setData(this, substr(ymd, 6, 8), calendarLabel, DAY_02);
	}
	
	
	/**
	 * 検索条件からプルダウンの初期値を設定します。
	 * @param pulldownLabel プルダウンの項目名
	 * @param code 初期化するコード値
	 */
	private void initPulldownIndexByCode(String pulldownLabel, String code)
	{
		if (JDKCommonUtil.isNull(code))
		{
			return;
		}
		
		X31SDataBeanAccess pulldown = getServiceFormBean().getDataBeanArray(pulldownLabel).getDataBean(0);
		int length = (Integer)pulldown.sendMessage(CD_LIST_01, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0; i < length; i++)
		{
			String test = pulldown.sendMessageString(CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			if (test.equals(code))
			{
				setData(this, (long)i, pulldownLabel, INDEX_01);
				return;
			}
		}
	}
	
	

	/**
	 * 画面遷移先を設定します。
	 * @param nextScreenId 遷移先画面ＩＤ
	 * @param nextScreenName 遷移先画面名
	 */
	private void setNextScreen(String nextScreenId, String nextScreenName)
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		DEBUG_LOG.debug(String.format("遷移先 CD：%s NM：%s", nextScreenId, nextScreenName));
	}
	

	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @param pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 * @param pushString 追加する文字列
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList)
	{
		X31SDataBeanAccess pulldownBean = super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);
		
		slideArrayOnDatabean(pulldownBean, cdList, "");
		slideArrayOnDatabean(pulldownBean, nmList, "");
	}
	
	
	/**
	 * データビーンの配列要素をインデックスが増加する方向に１つずらす
	 * @param bean データビーン
	 * @param listName 対象項目ID
	 * @param pushString 追加する文字列
	 */
	private void slideArrayOnDatabean(X31SDataBeanAccess bean, String listName, String pushString)
	{
		int size = (Integer)(bean.sendMessage(listName, X31CWebConst.DATABEAN_GET_COUNT));
		
		bean.sendMessageString(listName, X31CWebConst.DATABEAN_ADD_VALUE, "");
		
		for (int i = size ; i > 0 ; i--)
		{
			String target = bean.sendMessageString(listName, X31CWebConst.DATABEAN_GET_VALUE, i - 1);
			bean.sendMessageString(listName, X31CWebConst.DATABEAN_SET_VALUE, i, target);
		}
		
		bean.sendMessageString(listName, X31CWebConst.DATABEAN_SET_VALUE, 0, pushString);
	}
	

	/**
	 * スクリーンモードを設定します。
	 * @param mode スクリーンモード
	 */
	private void setScreenMode(long mode)
	{
		setData(this, mode, SCREEN_MODE);
		DEBUG_LOG.debug(String.format("画面モードを %d に設定します", mode));
	}
}
