/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUMladSodMappingCC
*   ソースファイル名：JFUMladSodMappingCC.java
*   作成者          ：富士通
*   日付            ：2013年12月03日
*＜機能概要＞
*   メールアドレスSODマッピングコモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v6.00       2013/12/03   FJ）中谷    新規作成【OM-2013-0004592】メールアドレス変更時SOD発行の改修
*   v6.00       2013/12/12   FJ）中谷    変更【ANK-1577-00-00】メール機能強化
*   
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.common.JCMConstants;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0361C050CBSMsg;

/**
 * メールアドレスSODマッピングコモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUMladSodMappingCC extends JFUBaseNetChgCommonCC
{
	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** IN項目:SYSID */
	private static final String IN_PARAM_KEY_SYSID = "key_sysid";
	/** IN項目:オプションサービス契約番号 */
	private static final String IN_PARAM_KEY_OP_SVC_KEI_NO = "key_op_svc_kei_no";
	/** IN項目:世代登録年月日時分秒 */
	private static final String IN_PARAM_KEY_GENE_ADD_DTM = "key_gene_add_dtm";

	/* メールアドレス変更用 */
	/** サービスID:メールアドレス変更 */
	private static final String SC_MLAD_CHANGE = "FUSV0065";
	/** サービスメッセージ:サービスオーダ発行コモンコンポーネント部品 */
	private static final String CC_TITLE_FUSV006507 = "FUSV006507CC";
	/** サービスメッセージ:オプションサービス契約<ISP>情報変更 */
	private static final String SC_TITLE_FUSV006503 = "FUSV006503SC";

	/* メールアドレス自動設定ツール用 */
	private static final String SC_MLAD_TOOL = "FUSV0122";
	/** サービスメッセージ:サービスオーダ発行コモンコンポーネント部品 */
	private static final String CC_TITLE_FUSV012207 = "FUSV012207CC";
	/** サービスメッセージ:オプションサービス契約<ISP>情報変更 */
	private static final String SC_TITLE_FUSV012205 = "FUSV012205SC";

	/* ■□ サービスオーダー発行CC ■□ */
	/** SOD(対象データリスト) */
	private static final String SOD_TRGT_DATA_LIST = "trgt_data_list";
	/** SOD(SOD基本情報) */
	private static final String SOD_SOD_KIHON_INFO = "sod_kihon_info";
	/** SOD(SYSID) */
	private static final String SOD_SYSID = "sysid";
	/** SOD(異動区分) */
	private static final String SOD_IDO_DIV = "ido_div";
	/** SOD(サービス契約情報) */
	private static final String SOD_SVC_KEI_INFO = "svc_kei_info";
	/** SOD(サービス契約番号) */
	private static final String SOD_SVC_KEI_NO = "svc_kei_no";
	/** SOD(オプションサービス契約情報) */
	private static final String SOD_OPSVKEI_INFO = "opsvkei_info";
	/** SOD(変更前オプションサービス契約番号) */
	private static final String SOD_CHBF_OPSVKEI_NO = "chbf_opsvkei_no";
	/** SOD(変更前オプションサービス契約世代登録年月日時分秒) */
	private static final String SOD_CHBF_OPSVKEI_GENE_ADD_DTM = "chbf_opsvkei_gene_add_dtm";
	/** SOD(変更後オプションサービス契約番号) */
	private static final String SOD_CHAF_OPSVKEI_NO = "chaf_opsvkei_no";
	/** SOD(変更後オプションサービス契約世代登録年月日時分秒) */
	private static final String SOD_CHAF_OPSVKEI_GENE_ADD_DTM = "chaf_opsvkei_gene_add_dtm";

	/**
	 * メールアドレスSODマッピング処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite mladSodMapping(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		try
		{
			// オーダ発行CC用マップ
			HashMap sodCCMap = new HashMap();

			// SC名：
			String fixedTextMladChg = null;
			String fixedTextSod = null;

			// サービスメッセージ設定
			if (fixedText.startsWith(SC_MLAD_CHANGE))
			{
				fixedTextMladChg = SC_TITLE_FUSV006503;
				fixedTextSod = CC_TITLE_FUSV006507;
			}
			else if (fixedText.startsWith(SC_MLAD_TOOL))
			{
				fixedTextMladChg = SC_TITLE_FUSV012205;
				fixedTextSod = CC_TITLE_FUSV012207;
			}

			// ユーザデータ取得
			HashMap inMap = (HashMap)param.getData(fixedText);

			String inParamFuncCd = (String)inMap.get(JCMConstants.FUNC_CODE_KEY);

			// チェックのみの場合
			if (JPCModelConstant.FUNC_CD_2.equals(inParamFuncCd))
			{
				// オーダー発行用マップ設定
				param.setData(fixedTextSod, sodCCMap);
				setFuncCode(param, fixedTextSod, JPCModelConstant.FUNC_CD_2);

				return param;
			}

			// IN項目:サービス契約番号
			String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);
			// IN項目:SYSID
			String inParamSysid = (String)inMap.get(IN_PARAM_KEY_SYSID);
			// IN項目:オプションサービス契約番号 
			String inParamOpSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_OP_SVC_KEI_NO);
			// IN項目:世代登録年月日時分秒
			String inParamGeneAddDtm = (String)inMap.get(IN_PARAM_KEY_GENE_ADD_DTM);

			// ユーザデータ取得(オプションサービス契約<ISP>情報変更)
			HashMap inMapOpSvcKei = (HashMap)param.getData(fixedTextMladChg);

			// 変更後世代登録年月日時分秒
			String chAfGeneAddDtm = (String)inMapOpSvcKei.get(EKK0361C050CBSMsg.KK0351_GENE_ADD_DTM);

			List trgtList = new ArrayList();

			// SODマップ
			HashMap sodMap = new HashMap();

			// SOD基本情報
			HashMap sodKihonMap = new HashMap();
			// SYSID
			sodKihonMap.put(SOD_SYSID, inParamSysid);
			// 異動区分
			sodKihonMap.put(SOD_IDO_DIV, JFUStrConst.CD00576_00031);
			// SODマップへ追加
			sodMap.put(SOD_SOD_KIHON_INFO, sodKihonMap);

			// サービス契約情報
			HashMap svcKeiMap = new HashMap();
			// サービス契約番号
			svcKeiMap.put(SOD_SVC_KEI_NO, inParamSvcKeiNo);
			// SODマップへ追加
			sodMap.put(SOD_SVC_KEI_INFO, svcKeiMap);

			// オプションサービス契約情報
			HashMap opSvcKeiMap = new HashMap();
			// 変更後オプションサービス契約番号
			opSvcKeiMap.put(SOD_CHBF_OPSVKEI_NO, inParamOpSvcKeiNo);
			// 変更前オプションサービス契約世代登録年月日時分秒
			opSvcKeiMap.put(SOD_CHBF_OPSVKEI_GENE_ADD_DTM, inParamGeneAddDtm);
			// 変更後オプションサービス契約番号
			opSvcKeiMap.put(SOD_CHAF_OPSVKEI_NO, inParamOpSvcKeiNo);
			// 変更後オプションサービス契約世代登録年月日時分秒
			opSvcKeiMap.put(SOD_CHAF_OPSVKEI_GENE_ADD_DTM, chAfGeneAddDtm);

			// SODマップへ追加
			sodMap.put(SOD_OPSVKEI_INFO, opSvcKeiMap);

			// 対象データリストへ追加
			trgtList.add(sodMap);

			sodCCMap.put(SOD_TRGT_DATA_LIST, trgtList);

			// オーダー発行用マップ設定
			param.setData(fixedTextSod, sodCCMap);
			setFuncCode(param, fixedTextSod, JPCModelConstant.FUNC_CD_1);
		}
		finally
		{
			this.deleteTempArea(param, fixedText);
		}

		return param;
	}
}
