/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0248_FUSV0248OPDBMapper
*	ソースファイル名：FUSV0248_FUSV0248OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年06月19日
*＜機能概要＞
*	BP（eo光ネット長割申込(変更)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00		2012/06/19	FJ)南岡	   【ANK-0392-00-00】長期割引契約制度対応
*	v4.00		2012/10/09	FJ)岡井	   【ANK-1223-00-00】進捗補足事項編集対応
*   v4.00       2012/12/18  FJ)岡井	   【TAI-2012-0000136】不要な呼び出しを削除
*   v4.00       2012/12/19  FJ)岡井	   【IT1-2012-0002299】割引サービス契約スキーマ更新項目追加対応
*
**********************************************************************/
package eo.web.webview.mapping;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW10501SF.FUW10501SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 *
 * @author 富士通
 */
public class FUSV0248_FUSV0248OPDBMapper
{
	/** DataBean操作種別：項目値取得 */
	private static final String GET = X31CWebConst.DATABEAN_GET_VALUE;

	// ■SC名
	/** 申込内容承認登録SC */
	private static final String FUSV024801SC = "FUSV024801SC";
	/** 割引サービス契約一意照会SC */
	private static final String FUSV024805SC = "FUSV024805SC";
	/** 割引サービス契約課金開始日変更SC */
	private static final String FUSV024802SC = "FUSV024802SC";
	/** 進捗登録SC */
	private static final String FUSV024803SC = "FUSV024803SC";
	/** 申込明細照査・後続業務依頼SC */
	private static final String FUSV024804SC = "FUSV024804SC";

	// ■SCリスト名
	/** 申込内容承認登録明細 */
	private static final String EKK0011D020CBSMSG1LIST = "EKK0011D020CBSMsg1List";
	/** 異動理由明細 */
	private static final String EKK1091D010CBSMSG1LIST = "EKK1091D010CBSMsg1List";
	/** 割引サービス契約一意照会明細 */
	private static final String EKK0451A010CBSMSG1LIST = "EKK0451A010CBSMsg1List";

	// ■項目ID
	/** SYSID */
	private static final String SYSID = "sysid";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** 更新年月日時分秒(更新前) */
	private static final String UPD_DTM_BF = "upd_dtm_bf";
	/** 請求契約番号 */
	private static final String SEIKY_KEI_NO = "seiky_kei_no";
	/** 割引サービス契約番号 */
	private static final String WRIB_SVC_KEI_NO = "wrib_svc_kei_no";
	/** 変更後割引サービス契約自動継続識別コード */
	private static final String WRIB_SVC_KEI_AT_KEIZK_SKCD = "wrib_svc_kei_at_keizk_skcd";
	/** 進捗特記事項1 */
	private static final String PRG_TKJK_1 = "prg_tkjk_1";
	/** ＫＥＹ＿割引サービス契約番号 */
	private static final String KEY_WRIB_SVC_KEI_NO = "key_wrib_svc_kei_no";
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** 特記事項１要素を取得する際のid */
	private static final String PRGADD_ID = "0";
	/** 定義取得パス 進捗特記事項1 */
	private static final String PATH_SHINCHOKU = "DISPSETTING/SETTING[@screenId='FUW10502']/DISPTEXT[@groupid='SHINCHOKU']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";
	/** 置換文字列：%0% */
	private static final String REPLACE_STR_0 = "%0%";
	/** 置換文字列：%1% */
	private static final String REPLACE_STR_1 = "%1%";
	/** 定義XML項目取得ID：変更無し */
	private static final String XML_ID_NASHI = "nashi";
	/** 定義XML項目取得ID：自動継続する */
	private static final String JDKEI_SURU = "jdkei_suru";
	/** 定義XML項目取得ID：自動継続しない */
	private static final String JDKEI_SHINAI = "jdkei_shinai";

	/**
	 * コンストラクタです。
	 */
	public FUSV0248_FUSV0248OPDBMapper()
	{
	}

	/**
	 * 申込内容承認登録SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV024801SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// SYSID
		parentMap.put(SYSID, bean[1].sendMessageString(CommonInfoCFConst.SYSID_21, GET));

		// 申込内容承認登録明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK0011D020CBSMSG1LIST, arrayList);

		outputMap.put(FUSV024801SC, parentMap);

		return outputMap;
	}

	/**
	 * 割引サービス契約一意照会SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV024805SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿割引サービス契約番号
		parentMap.put(KEY_WRIB_SVC_KEI_NO, bean[4].sendMessageString(CommonInfoCFConst.WRIB_SVC_KEI_NO_30, GET));

		// 割引サービス契約一意照会明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK0451A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV024805SC, parentMap);

		return outputMap;
	}

	/**
	 * 割引サービス契約課金開始日変更SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV024802SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// 割引サービス契約番号
		parentMap.put(WRIB_SVC_KEI_NO, bean[0].sendMessageString(FUW10501SFConst.WRIB_SVC_KEI_NO, GET));
		// 更新年月日時分秒(更新前)
		parentMap.put(UPD_DTM_BF, bean[4].sendMessageString(CommonInfoCFConst.LAST_UPD_DTM_30, GET));
		// 割引サービス契約自動継続識別コード
		parentMap.put(WRIB_SVC_KEI_AT_KEIZK_SKCD, bean[0].sendMessageString(FUW10501SFConst.AFTER_WRIB_SVC_KEI_AT_KEIZK_SKCD, GET));

		outputMap.put(FUSV024802SC, parentMap);

		return outputMap;
	}

	/**
	 * 進捗登録SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV024803SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// 請求契約番号
		parentMap.put(SEIKY_KEI_NO, bean[3].sendMessageString(CommonInfoCFConst.SEIKY_KEI_NO_32, GET));
		// サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[2].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, GET));
		// 割引サービス契約番号
		parentMap.put(WRIB_SVC_KEI_NO, bean[0].sendMessageString(FUW10501SFConst.WRIB_SVC_KEI_NO, GET));

		// 進捗特記事項1
		try
		{
			// クラス名を取得
			Map<String, String> shinchokuMap = JFUWebCommon.getDispItemsAsMap(PATH_SHINCHOKU, QUERY_ATTR_NAME);
			// 自動継続フラグ
			boolean autoKeiFlg = bean[0].sendMessageBoolean(FUW10501SFConst.MSKM_AUTO_KEIZK, GET);
			// 文言格納用変数
			String mongon1 = JFUStrConst.EMPTY;
			String mongon2 = JFUStrConst.EMPTY;
			// 項目値設定用変数
			String prgTkjk1 = JFUStrConst.EMPTY;

			if(shinchokuMap != null && shinchokuMap.size() > 0)
			{
				// 申込種別文言取得
				mongon1 = shinchokuMap.get(XML_ID_NASHI);

				// 自動継続文言取得
				if(autoKeiFlg)
				{
					// 自動継続する場合
					mongon2 = shinchokuMap.get(JDKEI_SURU);
				}
				else
				{
					// 自動継続しない場合
					mongon2 = shinchokuMap.get(JDKEI_SHINAI);
				}
			}

			// 文字列
			if(mongon1 != null && mongon1.length() > 0 && mongon2 != null && mongon2.length() > 0)
			{
				prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW10502, PRGADD_ID);
				prgTkjk1 = prgTkjk1.replace(REPLACE_STR_0, mongon1);
				prgTkjk1 = prgTkjk1.replace(REPLACE_STR_1, mongon2);
			}

			if(prgTkjk1 != null && prgTkjk1.length() > 0)
			{
				parentMap.put(PRG_TKJK_1, prgTkjk1);
			}
			else
			{
				DEBUG_LOG.debug("※進捗特記事項1がXMLから正常に取得できませんでした。処理は続行します。");
			}
		}
		catch (Exception e)
		{
			DEBUG_LOG.debug("※進捗特記事項1がXMLから正常に取得できませんでした。処理は続行します。");
		}

		// 異動理由明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK1091D010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV024803SC, parentMap);

		return outputMap;
	}

	/**
	 * 申込明細照査・後続業務依頼SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV024804SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(FUSV024804SC, parentMap);

		return outputMap;
	}
}