/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKAplyDmenUtil
*   ソースファイル名：JKKAplyDmenUtil.java
*   作成者          ：富士通
*   日付            ：2012年07月07日
*＜機能概要＞
*   申込断面XML部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/07/07   FJ）多田    新規作成 【ANK-0373-00-00】申込断面ﾃﾞｰﾀ
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;


import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;

/**
 * 申込断面XML部品.
 * <br>
 * @author 富士通
 */
public class JKKAplyDmenUtil extends AbstractCommonComponent
{

	/** ワークエリア（断面） */
	private static final String CC_WORK_AREA_DMEN                  = "workDmen";

	/**
	 * 申込断面XML作成処理
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite createMskmDmenXml(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		/* 業務データ設定 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		setWkInfo(param, dataMap);
		JFUMskmDmenXmlCC mskmDmenXml = new JFUMskmDmenXmlCC();
		mskmDmenXml.createMskmDmenXml(handle, param, fixedText);

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_DMEN);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_AREA_DMEN, workDataMap);
		}

		workDataMap.put("work_mskm_naiyo", dataMap.get("mskm_naiyo"));

		if (!"0".equals(dataMap.get("return_code")))
		{
			String errMsg = "断面のXMLデータ作成に失敗しました";
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return param;
	}

	/**
	 * ワークエリア情報設定
	 * <br>
	 * @param param リクエストパラメータ
	 * @param dataMap 業務データ
	 * @throws Exception 業務サービス内でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private static void setWkInfo(IRequestParameterReadWrite param, HashMap dataMap) throws Exception
	{
		// 事業者契約管理番号（ワーク）
		String jigyoshaKeiKnriNo = JKKBpCommon.getWkJigyoshaKeiKnriNo(param);

		// 事業者契約管理番号（ワーク）に値が設定されている場合、ＸＭＬマップに格納する。
		if (jigyoshaKeiKnriNo != null && !"".equals(jigyoshaKeiKnriNo))
		{
			dataMap.put("jigyosha_kei_knri_no", jigyoshaKeiKnriNo);
		}

		// 申込書明細番号（eo光ネット・eo光電話）（ワーク）
		String mskmshoDtlNoNetTel = JKKBpCommon.getWkMskmshoDtlNoNetTel(param);

		// 申込書明細番号（eo光ネット・eo光電話）（ワーク）に値が設定されている場合、ＸＭＬマップに格納する。
		if (mskmshoDtlNoNetTel != null && !"".equals(mskmshoDtlNoNetTel))
		{
			dataMap.put("mskmsho_dtl_no_net_tel", mskmshoDtlNoNetTel);
		}

		// 申込書明細番号（eo光テレビ）（ワーク）
		String mskmshoDtlNoTv = JKKBpCommon.getWkMskmshoDtlNoTv(param);

		// 申込書明細番号（eo光テレビ）（ワーク）に値が設定されている場合、ＸＭＬマップに格納する。
		if (mskmshoDtlNoTv != null && !"".equals(mskmshoDtlNoTv))
		{
			dataMap.put("mskmsho_dtl_no_tv", mskmshoDtlNoTv);
		}

		// 申込書明細番号（eoモバイル）（ワーク）
		String mskmshoDtlNoMbl = JKKBpCommon.getWkMskmshoDtlNoMbl(param);

		// 申込書明細番号（eoモバイル）（ワーク）に値が設定されている場合、ＸＭＬマップに格納する。
		if (mskmshoDtlNoMbl != null && !"".equals(mskmshoDtlNoMbl))
		{
			dataMap.put("mskmsho_dtl_no_mbl", mskmshoDtlNoMbl);
		}

		// 申込書明細番号（ADSL）（ワーク）
		String mskmshoDtlNoAdsl = JKKBpCommon.getWkMskmshoDtlNoAdsl(param);

		// 申込書明細番号（ADSL）（ワーク）に値が設定されている場合、ＸＭＬマップに格納する。
		if (mskmshoDtlNoAdsl != null && !"".equals(mskmshoDtlNoAdsl))
		{
			dataMap.put("mskmsho_dtl_no_adsl", mskmshoDtlNoAdsl);
		}
	}
}
