/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUAxMRenkei
*   ソースファイル名：JFUAxMRenkei.java
*   作成者          ：富士通
*   日付            ：2012年11月20日
*＜機能概要＞
*   AxM連携を行う共通部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*	v4.00.00	2012/11/20	 FJ)岩元	「ST1-2012-0000961」指示書・通知書対応
*
**********************************************************************/
package eo.web.webview.common;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;

public class JFUAxMRenkei
{

	/** ユースケースID */
	private static final String CKSV9001 = "CKSV9001";

	/** オペレーションID */
	private static final String CKSV9001OP = "CKSV9001OP";

	/** ユーザー定義文字列 */
	private static final String CKSV900101CC = "CKSV900101CC";

	/** 更新対象SYSID */
	private static final String UPD_TRGT_SYSID = "upd_trgt_sysid";

	/**
	 * AxM連携サービスを呼び出します
	 * <br>
	 * @param bl
	 * @param sysid
	 */
	@SuppressWarnings("unchecked")
	public static void executeAxmRenkeiService(X31BWebBusinessLogic bl)
	{
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = bl.getCommonInfoBean();
		// WEB新規情報
		X31SDataBeanAccess webNewInfo = getWebInfo(commonInfoBean);
		// モバイル情報
		X31SDataBeanAccess mobileInfo = getMobile(webNewInfo);
		// リダイレクト情報
		X31SDataBeanAccess redirectInfo = getRedirectinfo(webNewInfo);

		// 販売タイプ
		String hanbai_type = webNewInfo.sendMessageString(CommonInfoCFConst.HANBAI_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
		// モバイルコース
		String mobileCourse = mobileInfo.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込回線サービス
		String mskm_ksn_svc = webNewInfo.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// WIMAXロム
		String wimaxRom = redirectInfo.sendMessageString(CommonInfoCFConst.RED_WIMAXROM_17, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JFUStrConst.HNBAI_TYPE_CON.equals(hanbai_type))
		{
			// コンシューマではない場合処理終了
			return;
		}
		if (JFUStrConst.MSKM_KSN_SVC_MOBILE.equals(mskm_ksn_svc))
		{
			// モバイル単独の場合
			if (JFUStrConst.MOBILE_COURSE_WIMAX.equals(mobileCourse))
			{
				// WiMAXの場合
				if (!JFUStrConst.WIMAXROM_WHITE.equals(wimaxRom))
				{
					// 白ロムでなければ処理終了
					return;
				}
			}
			else if (!JFUStrConst.MOBILE_COURSE_WIFI.equals(mobileCourse))
			{
				// WiFi単独でなければ処理終了
				return;
			}
		}
		else
		{
			// モバイル単独ではない場合
			if (!JFUStrConst.MOBILE_COURSE_WIFI.equals(mobileCourse))
			{
				// WiFiスポットを申込まれていない場合処理終了
				return;
			}
		}
		// SYSID取得
		String sysid = webNewInfo.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス呼び出しの際の引数を生成
		HashMap paramMap2 = new HashMap();
		HashMap inputMap2 = new HashMap();
		HashMap outputMap2 = new HashMap();

		// サービスIDのセット
		paramMap2.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, CKSV9001);
		paramMap2.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, CKSV9001OP);

		// サービスへのデータセット
		HashMap mapRenkeiCC = new HashMap();
		inputMap2.put(CKSV900101CC, mapRenkeiCC);
		mapRenkeiCC.put(UPD_TRGT_SYSID, sysid);

		// AxM連携サービスの呼出
		bl.invokeService(paramMap2, inputMap2, outputMap2);

	}

	/**
	 * WEB新規情報
	 * 
	 * @param bean
	 * @return bn
	 */
	private static X31SDataBeanAccess getWebInfo(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray arr = bean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn = arr.getDataBean(0);

		return bn;
	}

	/**
	 * モバイル情報
	 * 
	 * @param bn
	 * @return bn1
	 */
	private static X31SDataBeanAccess getMobile(X31SDataBeanAccess bn)
	{
		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.EOMOBILE);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}

	/**
	 * リダイレクト情報
	 * 
	 * @param bn
	 * @return bn1
	 */
	@SuppressWarnings("unchecked")
	private static X31SDataBeanAccess getRedirectinfo(X31SDataBeanAccess bn)
	{

		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}
}
