package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKSvkeiShosaChkConstCC;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0161B010CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0341B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B010CBSMsg1List;
//import eo.ejb.cbs.cbsmsg.EKK0401B010CBSMsg;
//import eo.ejb.cbs.cbsmsg.EKK0401B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B010CBSMsg;

/**
 * サービス契約照査チェックで使用するマッパーです。<p>
 * <BR>
 * @ author FJ
 */
public class JKKSvkeiShosaChkShokaiMapperCC {
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0081A010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード（デフォルト：１）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0081A010);

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0081A010);

		// サービス契約一意照会.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO))) {
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}
			
		templateList.add(template);

		return templateList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0161B010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException 
	{
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

//		CAANMsg template = new CAANMsg(EKK0161B010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

//		// テンプレートID
//		template.set(EKK0161B010CBSMsg.TEMPLATEID, "EKK0161B010");
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0161B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_LIST);
//
//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//		// 機能コード
//		template.set(EKK0161B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_LIST);
//
//		// ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO))) {
//			template.setNull(EKK0161B010CBSMsg.KEY_SVC_KEI_NO);
//		} else {
//			template.set(EKK0161B010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
//		}
//
//		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:オプションサービス契約一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0351B010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0351B010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
		template.set(EKK0351B010CBSMsg.TEMPLATEID, "EKK0351B010");

		// 機能コード（デフォルト：１）
		template.set(EKK0351B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0351B010);

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// 機能コード
		template.set(EKK0351B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0351B010);

		// ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO))) {
			template.setNull(EKK0351B010CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0351B010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}

		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サブオプションサービス契約一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @param caanMsg 照会結果データ
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
//	@SuppressWarnings("unchecked")
//	public List<CAANMsg> editInMsgEKK0401B010(IRequestParameterReadOnly param, CAANMsg caanMsg)
//	throws RequestParameterException {
//		CAANMsg template = new CAANMsg(EKK0401B010CBSMsg.class.getName());
//		List<CAANMsg> templateList = new ArrayList<CAANMsg>();
//
//		// テンプレートID
//		template.set(EKK0401B010CBSMsg.TEMPLATEID, "(EKK0401B010");
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0401B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_LIST);

//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//		// 機能コード
//		template.set(EKK0401B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_LIST);
//
//		// オプションサービス契約番号
//		if (caanMsg.isNull(EKK0351B010CBSMsg1List.OP_SVC_KEI_NO))
//		{
//			template.setNull(EKK0401B010CBSMsg.KEY_OP_SVC_KEI_NO);
//		} 
//		else 
//		{
//			template.set(EKK0401B010CBSMsg.KEY_OP_SVC_KEI_NO, caanMsg.getString(EKK0351B010CBSMsg1List.OP_SVC_KEI_NO));
//		}
//
//		templateList.add(template);
//
//		return templateList;
//	}

	/**
	 *<DL>
	 *<DT>処理概要:機器提供サービス契約一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0341B010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

//		CAANMsg template = new CAANMsg(EKK0341B010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
//		template.set(EKK0341B010CBSMsg.TEMPLATEID, "(EKK0341B010");

		// 機能コード（デフォルト：１）
//		template.set(EKK0341B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_LIST);

//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//		// 機能コード
//		template.set(EKK0341B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_LIST);
//
//		// ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO))) 
//		{
//			template.setNull(EKK0341B010CBSMsg.KEY_SVC_KEI_NO);
//		} else {
//			template.set(EKK0341B010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
//		}
//
//		// ＫＥＹ＿申込明細番号
//		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.MSKM_DTL_NO)))
//		{
//			template.setNull(EKK0341B010CBSMsg.KEY_MSKM_DTL_NO);
//		} else {
//			template.set(EKK0341B010CBSMsg.KEY_MSKM_DTL_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.MSKM_DTL_NO));
//		}
//		
//		templateList.add(template);

		return templateList;
	}

	/**
	 *<DL>
	 *<DT>処理概要:割引サービス契約一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param userDataIndex param内のユーザデータのインデックス
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2011.06.07
	 */
	@SuppressWarnings("unchecked")
	public List<CAANMsg> editInMsgEKK0451B010(IRequestParameterReadOnly param, int userDataIndex)
	throws RequestParameterException {
		HashMap userMap = null;
		List<Map> shosaList = null;
		HashMap svkeiData = null;

		CAANMsg template = new CAANMsg(EKK0451B010CBSMsg.class.getName());
		List<CAANMsg> templateList = new ArrayList<CAANMsg>();

		// ユーザデータ情報
		userMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);

		shosaList = (List)userMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		svkeiData = (HashMap)shosaList.get(userDataIndex);

		// テンプレートID
		template.set(EKK0451B010CBSMsg.TEMPLATEID, "(EKK0451B010");

		// 機能コード（デフォルト：１）
		template.set(EKK0451B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0451B010);

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// 機能コード
		template.set(EKK0451B010CBSMsg.FUNC_CODE, JKKSvkeiShosaChkConstCC.FUNC_CODE_EKK0451B010);

		// ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if ("".equals(svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO))) 
		{
			template.setNull(EKK0451B010CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0451B010CBSMsg.KEY_SVC_KEI_NO, (String) svkeiData.get(JKKSvkeiShosaChkConstCC.SVC_KEI_NO));
		}

		templateList.add(template);

		return templateList;
	}
}
