/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通マスタ）
*   モジュール名    ：ZMW11401SFLogic
*   ソースファイル名：ZMW11401SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月16日
*＜機能概要＞
*   住所対象番号区画一括登録画面の画面制御を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v2.00       2011/06/16   FJ）山本    新規作成
*   v2.01       2011/11/09   FJ) 日野    【SGY-2011-0000007】
*   v3.00       2011/02/01   FJ) 日野    【UIZ-0004-00-00】視認性向上No.4（メッセージ領域背景黄色）対応
*   v4.00		2012/09/13	 FJ) 早崎	 【TAI-2012-0000095】Fortify対応
*   v5.00		2013/03/08   FJ) 日野    【TAI-2013-0000012】画面設計規約
*   
**********************************************************************/

package eo.web.webview.ZMW11401SF;

import java.util.ArrayList;
import java.util.HashMap;

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.ZMSV0083_ZMSV0083OPDBMapper;
import eo.web.webview.mapping.ZMSV0084_ZMSV0084OPDBMapper;

/**
 * 住所対象番号区画一括登録画面の画面制御を行います。<br>
 * <br>
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class ZMW11401SFLogic extends JCCWebBusinessLogic 
{
	
	/** 置き換えメッセージ */
	private static final String[] INSERT_MESSAGE = {"住所対象番号区画情報一括登録"};
	
	/** 最大検索件数 */
	private static final  String MAX_SHOW_CNT = "ZMW11401_MAX_SHOW_CNT";
	
	/** サービスIF項目id（KEY_申込事業所名） */
	public static final String KEY_MSKM_JIGSHONM = "key_mskm_jigshonm";
	
	/**
	 * 住所対象番号区画一括登録画面の初期表示処理を行います。<BR>
	 * <BR>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 戻り先IDの取得
		String screenId = JZMWebCommon.getScreenId(this);
		
		if(screenId == null)
		{
			// HashMapを設定する
			JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW11403, JZMScreenConst.SCREEN_ID_ZMW11401);
		}
		
		// 戻り先IDの有無で戻るボタン表示フラグを表示する
		JZMWebCommon.setSendMessageBoolean(bean, ZMW11401SFConst.BACK_BTN_DSP_FLG, null != screenId);
		
		// サービスフォーム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.SV83);
		
		// 画面情報取得
		JZMWebCommon.getScreenInfo(this);
		
		// マッピングクラス
		ZMSV0083_ZMSV0083OPDBMapper mapper = new ZMSV0083_ZMSV0083OPDBMapper();
		
		// マッピング処理（上り）
		String opeDate = JZMWebCommon.getOpeDate(this, null);
		mapper.setZMSV008301SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		((HashMap<String, Object>)dataMap.get(JZMWebConst.SC8301)).put(JZMWebConst.KEY_STDARDYMD, opeDate);
		mapper.setZMSV008302SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		((HashMap<String, Object>)dataMap.get(JZMWebConst.SC8302)).put(KEY_MSKM_JIGSHONM, null);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピング処理（下り）
		mapper.getZMSV008301SC(paramBean, outputMap);
		mapper.getZMSV008302SC(paramBean, outputMap);
		
		// 警察通報可否
		String kahi = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH);
		if(kahi == null || JZMWebConst.BLANK.equals(kahi))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH_SEL, JZMWebConst.ZERO);
		}
		else
		{
			String kahiValue = JZMWebCommon.getRadioValue(bean, ZMW11401SFConst.POLI_TSUHO_KH_INFO, ZMW11401SFConst.POLI_TSUHO_KH_VALUE_LIST_01, kahi);
			JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH_SEL, kahiValue);
		}
		
		// 消防通報可否
		kahi = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH);
		if(kahi == null || JZMWebConst.BLANK.equals(kahi))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_SEL, JZMWebConst.ZERO);
		}
		else
		{
			String kahiValue = JZMWebCommon.getRadioValue(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_INFO, ZMW11401SFConst.SHOBO_TSUHO_KH_VALUE_LIST_02, kahi);
			JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_SEL, kahiValue);
		}
		
		// 申込事業所番号
		String selectIndex = JZMWebCommon.getPullDownIndex(bean, ZMW11401SFConst.MSKM_JIGSHO_NO_INFO, ZMW11401SFConst.MSKM_JIGSHO_NO_VALUE_LIST_03, 
				JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.MSKM_JIGSHO_NO));
		JZMWebCommon.setPullDownIndex(bean, ZMW11401SFConst.MSKM_JIGSHO_NO_INFO, ZMW11401SFConst.MSKM_JIGSHO_NO_IDX_03, selectIndex);
		
		// 開始年月日に運用日付の設定
		setOpeDateToTstaymd(bean, opeDate);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11401);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11401);
		
		return true;
	}

	/**
	 * 適用年月日に運用日付の設定を行います。<br>
	 * 
	 * @param bean
	 * @param opeDate 運用日付
	 */
	private void setOpeDateToTstaymd(X31SDataBeanAccess bean, String opeDate)
	{
		// 適用開始年月日に運用日付を設定
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_YEAR, JPCUtilCommon.toYearFromYmd(opeDate));
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_MON, JPCUtilCommon.toMonthFromYmd(opeDate));
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_DAY, JPCUtilCommon.toDayFromYmd(opeDate));
	}
	
	/**
	 * 入力された内容の登録確認処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean addCfm() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 住所コード
		StringBuffer adCd = new StringBuffer();
		adCd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_1));
		adCd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_2));
		adCd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_3));
		adCd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.STA_AD_CD_4));
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.STA_AD_CD, adCd.toString());
		
		StringBuffer adCdEnd = new StringBuffer();
		adCdEnd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_1));
		adCdEnd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_2));
		adCdEnd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_3));
		adCdEnd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.END_AD_CD_4));
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.END_AD_CD, adCdEnd.toString());
		
		StringBuffer dspAdCd = new StringBuffer();
		dspAdCd.append(JPCUtilCommon.hyhunAdCd(adCd.toString()));
		dspAdCd.append(JZMWebConst.TWO_BYTE_BLANK);
		dspAdCd.append(JZMWebConst.TWO_BYTE_BLANK);
		dspAdCd.append(JZMWebConst.KIGOU_1);
		dspAdCd.append(JZMWebConst.TWO_BYTE_BLANK);
		dspAdCd.append(JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.END_AD_CD_4));
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.DSP_AD_CD, dspAdCd.toString());

		// 警察通報可否
		String poliTsuhoKahi = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH_SEL);
		String poliTsuhoKahiName = JZMWebCommon.getBeanArrayValue(bean, ZMW11401SFConst.POLI_TSUHO_KH_INFO, 
				new Integer(poliTsuhoKahi).intValue(), ZMW11401SFConst.POLI_TSUHO_KH_NM_LIST_01);
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH_NM, poliTsuhoKahiName);
		poliTsuhoKahi = JZMWebCommon.getBeanArrayValue(bean, ZMW11401SFConst.POLI_TSUHO_KH_INFO, 
				new Integer(poliTsuhoKahi).intValue(), ZMW11401SFConst.POLI_TSUHO_KH_VALUE_LIST_01);
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH, poliTsuhoKahi);
		
		
		// 消防通報可否
		String shoboTsuhoKahi = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_SEL);
		String shoboTsuhoKahiName = JZMWebCommon.getBeanArrayValue(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_INFO, 
				new Integer(shoboTsuhoKahi).intValue(), ZMW11401SFConst.SHOBO_TSUHO_KH_NM_LIST_02);
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_NM, shoboTsuhoKahiName);
		shoboTsuhoKahi = JZMWebCommon.getBeanArrayValue(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_INFO, 
				new Integer(shoboTsuhoKahi).intValue(), ZMW11401SFConst.SHOBO_TSUHO_KH_VALUE_LIST_02);
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH, shoboTsuhoKahi);
		
		// 申込事業所番号
		String selectedValue = JZMWebCommon. getPullDownSelectedValue(bean,
				ZMW11401SFConst.MSKM_JIGSHO_NO_INFO, ZMW11401SFConst.MSKM_JIGSHONM_LIST_03, ZMW11401SFConst.MSKM_JIGSHO_NO_IDX_03);
		bean.sendMessageString(ZMW11401SFConst.MSKM_JIGSHONM,
				X31CWebConst.DATABEAN_SET_VALUE, selectedValue);
		selectedValue = JZMWebCommon. getPullDownSelectedValue(bean,
				ZMW11401SFConst.MSKM_JIGSHO_NO_INFO, ZMW11401SFConst.MSKM_JIGSHO_NO_VALUE_LIST_03, ZMW11401SFConst.MSKM_JIGSHO_NO_IDX_03);
		bean.sendMessageString(ZMW11401SFConst.MSKM_JIGSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, selectedValue);   

		String yearValue = null;
		String monthValue = null;
		String dayValue = null;
		String ymdValue = null;
		
		// 適用開始年月日
		yearValue = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_YEAR);
		monthValue = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_MON);
		dayValue = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_DAY);
		ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD, ymdValue);
		
		// 予約適用年月日
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.RSV_APLY_YMD, ymdValue);
		
		// 適用終了年月日
		yearValue = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_YEAR);
		monthValue = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_MON);
		dayValue = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_DAY);
		ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
		JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD, ymdValue);
		
		// 件数チェック
		String staAdCd4 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.STA_AD_CD_4);
		String endAdCd4 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.END_AD_CD_4);
		int intStaAdCd = Integer.parseInt(staAdCd4);
		int intEndAdCd = Integer.parseInt(endAdCd4);
		int maxSize = intEndAdCd - intStaAdCd + 1;
		
		if(maxSize > Integer.parseInt(JZMWebCommon.getSearchConst(MAX_SHOW_CNT)))
		{
			
			// 200件を超える場合エラー
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1470_KW, INSERT_MESSAGE);
			return true;
		}
		
		// 明細データ作成
		createDetailData(bean);
		
		// サービスフォーム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.SV84);
		
		// マッピングクラス
		ZMSV0084_ZMSV0084OPDBMapper mapper = new ZMSV0084_ZMSV0084OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV008401SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setZMSV008402CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		setDetailData(bean, outputMap);
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11402);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW11402);
		
		return true;
	}
	
	/**
	 * 指定された住所コードの範囲で明細を作成し、情報を設定する。
	 * 
	 * @param bean サービスフォームBean
	 */
	private void createDetailData(X31SDataBeanAccess bean)
	{
		
		// 住所コード
		String adCd1 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_1);
		String adCd2 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_2);
		String adCd3 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_CD_3);
		String staAdCd4 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.STA_AD_CD_4);
		String endAdCd4 = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.END_AD_CD_4);
		
		// 番号区画コード
		String noKukakuCd = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.NO_KUKAKU_CD);
		
		// 市外局番
		String areacd = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AREACD);
		
		// 警察通報可否
		String poliTsuhoKh = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH);
		
		// 消防通報可否
		String shoboTsuhoKh = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH);
		
		// 申込事業所
		String mskmJigshoNo = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.MSKM_JIGSHO_NO);
		
		// 地域コード
		String ckiCd = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.CKI_CD);
		
		// 天気予報グループID
		String tenkiYohoGrpId = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.TENKI_YOHO_GRP_ID);
		
		// 発番順位
		String htbJun = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.HTB_JUN);
		
		// 適用開始年月日
		String adTgNoKukakuTstaymd = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD);
		
		// 適用終了年月日
		String adTgNoKukakuTendymd = JZMWebCommon.getSendMessageString(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD);
		
		// 明細リスト
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW11401SFConst.EZM0081B014CBSMSG1LIST);
		dataList.clearArray();
		
		int intStaAdCd = Integer.parseInt(staAdCd4);
		int intEndAdCd = Integer.parseInt(endAdCd4);
		int maxSize = intEndAdCd - intStaAdCd + 1;
		
		String adCd4 = null;
		for (int index = 0; index < maxSize; index++)
		{
			adCd4 = zeroSuppress(intStaAdCd);
			
			// 空DataBeanをセット
			dataList.addDataBean();
			X31SDataBeanAccess listBean = dataList.getDataBean(dataList.getCount() - 1);
			
			// 住所コード
			StringBuffer detailAdCd = new StringBuffer();
			detailAdCd.append(adCd1);
			detailAdCd.append(adCd2);
			detailAdCd.append(adCd3);
			detailAdCd.append(adCd4);
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.AD_CD_04, detailAdCd.toString());
			
			// 住所コード(表示用)
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.AD_CD_DSP_04, 
					JPCUtilCommon.hyhunAdCd(detailAdCd.toString()));
			
			// 番号区画コード
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.NO_KUKAKU_CD_04, noKukakuCd);
			
			// 市外局番
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.AREACD_04, areacd);
			
			// 警察通報可否
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.POLI_TSUHO_KH_04, poliTsuhoKh);
			
			// 消防通報可否
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.SHOBO_TSUHO_KH_04, shoboTsuhoKh);
			
			// 申込事業所番号
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.MSKM_JIGSHO_NO_04, mskmJigshoNo);
			
			// 地域コード
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.CKI_CD_04, ckiCd);
			
			// 天気予報グループID
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.TENKI_YOHO_GRP_ID_04, tenkiYohoGrpId);
			
			// 発番順位
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.HTB_JUN_04, htbJun);
			
			// 住所対象番号区画適用開始年月日
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD_04, adTgNoKukakuTstaymd);
			
			// 住所対象番号区画適用終了年月日
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_04, adTgNoKukakuTendymd);
			
			// 予約適用年月日
			JZMWebCommon.setSendMessageString(listBean, ZMW11401SFConst.RSV_APLY_YMD_04, adTgNoKukakuTstaymd);
			
			intStaAdCd++;
		}
		
		// 背景色のスタイルクラスを設定
		JZMWebCommon.setRowStyleClass(bean, ZMW11401SFConst.EZM0081B014CBSMSG1LIST, ZMW11401SFConst.ROW_STYLE_CLASS_04);
	}
	
	/**
	 * サービス実行結果を明細に設定する。<br>
	 * <br>
	 * @param bean      サービスフォームBean
	 * @param outputMap サービス処理結果
	 */
	@SuppressWarnings("unchecked")
	private void setDetailData(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		
		boolean isMessageSet = true;

		HashMap parentMap = (HashMap)outputMap.get(JZMWebConst.SC8401);

		ArrayList childList = null;
		
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW11401SFConst.EZM0081B014CBSMSG1LIST);
		childList = (ArrayList)parentMap.get(JZMWebConst.EZM0081B014CBSMSG1LIST);
		
		int clildListCount = 0;
		String adCd = JZMWebConst.BLANK;
		String targetAdCd = JZMWebConst.BLANK;
		HashMap childMap = null;
		X31SDataBeanAccess subbean = null;
		
		for(int index = 0; index < dataList.getCount(); index++)
		{
			
			// サービスIFの結果件数を超えた場合、処理終了
			if(clildListCount < childList.size() && !childList.isEmpty())
			{
				childMap = (HashMap)childList.get(clildListCount);
				targetAdCd = childMap.get(JZMWebConst.EZM0081_AD_CD).toString();
			}
			
			subbean = dataList.getDataBean(index);
			
			
			
			adCd = JZMWebCommon.getSendMessageString(subbean, ZMW11401SFConst.AD_CD_04);
			
			if(adCd.equals(targetAdCd))
			{
				
				// 郵便番号
				JZMWebCommon.setSendMessageString(subbean, ZMW11401SFConst.PCD_04, childMap.get(JZMWebConst.EZM0081_PCD).toString());
				// 郵便番号のハイフン編集
				StringBuffer pcd = new StringBuffer(JZMWebConst.PCD_MARK);
				pcd = joinValue(pcd, JPCUtilCommon.hyhunPcd(childMap.get(JZMWebConst.EZM0081_PCD).toString()));
				JZMWebCommon.setSendMessageString(subbean, ZMW11401SFConst.PCD_DSP_04, pcd.toString());
				
				// 都道府県名
				JZMWebCommon.setSendMessageString(subbean, ZMW11401SFConst.STATE_NM_04, childMap.get(JZMWebConst.EZM0081_STATE_NM).toString());
				
				// 市区町村名
				JZMWebCommon.setSendMessageString(subbean, ZMW11401SFConst.CITY_NM_04, childMap.get(JZMWebConst.EZM0081_CITY_NM).toString());
				
				// 大字通称名
				JZMWebCommon.setSendMessageString(subbean, ZMW11401SFConst.OAZTSU_NM_04, childMap.get(JZMWebConst.EZM0081_OAZTSU_NM).toString());
				
				// 字丁目名
				JZMWebCommon.setSendMessageString(subbean, ZMW11401SFConst.AZCHO_NM_04, childMap.get(JZMWebConst.EZM0081_AZCHO_NM).toString());
				
				clildListCount++;
			}
			else
			{
				
				// 確認メッセージを表示(住所マスタ未存在)
				String[] ad_cd = {JPCUtilCommon.hyhunAdCd(adCd)};
				JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7170__Q, ad_cd);
				
				// サービスIFの検索結果に対象のデータが存在しない場合、次のデータへ。
				isMessageSet = false;
				continue;
			}
		}
		
		if(isMessageSet)
		{
			
			// 確認メッセージを表示
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, INSERT_MESSAGE);
		}
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
	}
	
	/**
	 * 住所コードを0埋めして返却<br>
	 * <br>
	 * @param intAdCd 対象の住所コード
	 * @return 0埋めされた住所コード
	 */
	private String zeroSuppress(int intAdCd)
	{
		String adCd = Integer.toString(intAdCd);
		
		if(adCd.length() == 3)
		{
			
			// 桁数が3桁の場合はそのまま返却
			return adCd;
		}
		
		if(adCd.length() == 2)
		{
			
			// 桁数が2桁の場合は、前に1桁0埋めをして返却
			StringBuffer returnAdCd = new StringBuffer(JZMWebConst.ZERO);
			returnAdCd.append(adCd);
			return returnAdCd.toString();
		}
		
		if(adCd.length() == 1)
		{
			
			// 桁数が2桁の場合は、前に2桁0埋めをして返却
			StringBuffer returnAdCd = new StringBuffer(JZMWebConst.ZERO);
			returnAdCd.append(JZMWebConst.ZERO);
			returnAdCd.append(adCd);
			return returnAdCd.toString();
		}
		
		return null;
	}
	
	/**
	 * 呼び出し元画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean back() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		return true;
	}
	
	/**
	 * 入力された内容にて、登録処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fix() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = 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>();
		
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV84);
		
		// マッピングクラス
		ZMSV0084_ZMSV0084OPDBMapper mapper = new ZMSV0084_ZMSV0084OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV008401SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setZMSV008402CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// 完了メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, INSERT_MESSAGE);

		// 画面遷移
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11403);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,  JZMScreenConst. SCREEN_NAME_ZMW11403);
		
		return true;
	}

	/**
	 * 登録画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean shusei() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW11401);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW11401);
		
		return true;
	}

	/**
	 * 登録処理を完了し、呼び出し元画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fin() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 戻り先画面IDの取得
		String screenId = JZMWebCommon.getScreenId(this);
		String screenNm = null;
		
		
		if(JZMScreenConst.SCREEN_ID_ZMW11401.equals(screenId))
		{
			screenNm = JZMScreenConst.SCREEN_NAME_ZMW11401;
			
			// サービスフォームBeanの内容の取得
			X31SDataBeanAccess bean = getServiceFormBean();
			
			// 各項目初期化
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_CD_1);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_CD_2);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_CD_3);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.STA_AD_CD_4);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.STA_AD_CD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.END_AD_CD_4);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.END_AD_CD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.DSP_AD_CD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.NO_KUKAKU_CD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AREACD);
			JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.POLI_TSUHO_KH_SEL, JZMWebConst.ZERO);
			JZMWebCommon.setSendMessageString(bean, ZMW11401SFConst.SHOBO_TSUHO_KH_SEL, JZMWebConst.ZERO);
			JZMWebCommon.setPullDownIndex(bean, ZMW11401SFConst.MSKM_JIGSHO_NO_INFO, ZMW11401SFConst.MSKM_JIGSHO_NO_IDX_03, JZMWebConst.ZERO);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.CKI_CD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.TENKI_YOHO_GRP_ID);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.HTB_JUN);
			setOpeDateToTstaymd(bean, JZMWebCommon.getOpeDate(this, null));
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TSTAYMD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_YEAR);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_MON);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD_DAY);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.AD_TG_NO_KUKAKU_TENDYMD);
			JZMWebCommon.setNullToBeanClm(bean, ZMW11401SFConst.RSV_APLY_YMD);
			X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW11401SFConst.EZM0081B014CBSMSG1LIST); 
			for(int i = 0; i < dataList.getCount(); i++)
			{
				dataList.removeDataBean(i);
			}
		}
		else
		{
			screenNm = JZMWebConst.BLANK;
		}
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, screenNm);
		
		return true;
	}
	
	/**
	 * 文字列を結合し返却します。<br>
	 * <br>
	 * @param value 結合元文字列
	 * @param joinValue 結合文字列
	 * @return value 結合された文字列
	 */
	private StringBuffer joinValue(StringBuffer value, String joinValue)
	{
		
		// 結合文字列がnullで無い場合、結合を行う。
		if(joinValue != null)
		{
			value.append(joinValue);
		}
		return value;
	}
}
