/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKK072531lCC
*   ソースファイル名：JKK072531lCC.java
*   作成者          ：FJ
*   日付            ：2013年11月22日
*＜機能概要＞
*   サービスキャンセルＣＣ用のマッピング部品
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*	v4.00.00	2013/11/22	FJ			新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.sun.enterprise.tools.common.util.StringUtils;

import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;

public class JKKSV0725301MappingCC extends AbstractCommonComponent {

	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite mapping(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {

		if (param == null) {
			return param;
		}

		HashMap<String, Object> parentMap = (HashMap<String, Object>)param.getData(fixedText);
		if (parentMap == null || parentMap.size() == 0) {
			return param;
		}

		// 工事案件番号の設定がある場合のみ設定
		String kojiakNo = (String)parentMap.get("kojiak_no");
		if (!StringUtils.isEmpty(kojiakNo)) {
			// 工事案件一意照会
			HashMap<String, Object> ku0011_a010_map = selectKojiAkInf(handle, param, fixedText, kojiakNo);
			if (ku0011_a010_map!=null) {
				// 工事キャンセル年月日
				parentMap.put("koji_cancel_ymd", ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_STP_ADD_YMD));
				// 工事キャンセル理由コード
				parentMap.put("koji_cancel_rsn_cd", ku0011_a010_map.get(EKU0011A010CBSMsg1List.OPMS_KOJIAK_STP_RSLT_CD));
				// 工事案件中止理由コード１
				parentMap.put("kojiak_stp_rsn_cd_1", ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_STP_RSN_CD_1));
				// 工事案件中止理由コード２
				parentMap.put("kojiak_stp_rsn_cd_2", ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_STP_RSN_CD_2));
			}
		}

		// サービスキャンセルＣＣ用のパラメータを設定
		param.setData("trgt_data", parentMap);

		return param;
	}

	/**
	 * 工事案件情報を取得します.
	 * @param param
	 * @param fixedText
	 * @param kojiAkNo
	 * @return
	 * @throws Exception
	 */
	private HashMap<String, Object> selectKojiAkInf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String kojiAkNo) throws Exception {

		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		if (StringUtils.isEmpty(kojiAkNo)) {
			return null;
		}

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiAkNo);
		// 工事案件一意照会を実施
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		reqMap = mapper.setEKU0011A010(param, fixedText, condMap);
		resMap = scCall.run( reqMap, handle );
		HashMap<String, Object> ku0011_a010_map = mapper.getEKU0011A010(param, fixedText, resMap);
		mapper.scResultCheck( param );

		// 一意照会結果が取得できなかった場合はnull返却
		if (StringUtils.isEmpty((String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_NO) )) {
			return null;
		}

		return ku0011_a010_map;
	}
}

