/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUIPv6AdshokaiCC
*   ソースファイル名：JFUIPv6AdshokaiCC.java
*   作成者          ：富士通
*   日付            ：2012年03月22日
*＜機能概要＞
*   IPv6アドレス一覧照会コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v3.00       2011/03/22   FJ）南岡    新規作成【ANK-0046-00-00】 IPV6対応
*   v14.00      2015/11/22   FJ）中谷    変更【OM-2015-0002670】IPv6解約時のSOD不具合対応
*   v14.00      2016/02/05   FJ）中西    変更【OM-2016-0000140】IPv6申込、解約SOD不具合対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
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 eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0481B010CBSMsg;

/**
 * IPv6アドレス一覧照会コモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUIPv6AdshokaiCC extends JFUBaseNetChgCommonCC
{

	/** テンプレートID */
	private static final String TEMPLATE_ID = "EZM0481B010";
	/** テンプレートID(明細) */
	private static final String TEMPLATE_ID_DETAIL = EZM0481B010CBSMsg.EZM0481B010CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST = Arrays.asList(EZM0481B010CBSMsg.KEY_CHUSKK_CD);
	/** IN項目：サービス契約番号 */
	private static final String IN_SVC_KEI_NO = "svc_kei_no";

	/** 関連チェックエラー項目 */
	private static final String ERROR_COLUMN = EZM0481B010CBSMsg.KEY_CHUSKK_CD_ERR;

	/** 旧認証ID識別 */
	private static final String OLD_NINSHO_ID = "_OLD";

	/**
	 * 検索処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite getResultData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		List list = new ArrayList();

		// SOD対象となる有効なサービス契約内訳情報マップを下りマッピングする。
		list.add(getUcwkInfoMap(handle, param, fixedText, (String)inMap.get(IN_SVC_KEI_NO)));
		// OM-2016-0000140_IPv6申込、解約SOD 対応 mod start
		
		List list2 = new ArrayList();
		// プラン変更中はオプションサービス契約に旧認証ID側の内訳番号を設定する。
		list2.add(getUcwkInfoMap(handle, param, fixedText, (String)inMap.get(IN_SVC_KEI_NO), NISHO_ID_DIV_OLD));
		
		// 取得した結果を再設定
		inMap.put(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, list);
		inMap.put(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST + OLD_NINSHO_ID, list2);
		// OM-2016-0000140_IPv6申込、解約SOD 対応 mod end

		return executeSC(handle, param, fixedText, TEMPLATE_ID, TEMPLATE_ID_DETAIL, IN_COLUMN_LIST, ERROR_COLUMN);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return チェック処理用マップ
	 * @throws Exception 
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return getInvokeCBS(handle, param, fixedText, TEMPLATE_ID, TEMPLATE_ID_DETAIL, IN_COLUMN_LIST);
	}
}
