/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JZMejbFU0371NumberParts
*	ソースファイル名：JZMejbFU0371NumberParts.java
*	作成者			：富士通
*	日付			：2022年01月05日
*＜機能概要＞
*	量販訪販Webアクセス認証キー採番部品クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v57.00.00   2022/01/05  FJ)張本     ANK-4170-00-00_eフロントの改善要望に関するeo顧客基幹SのAPI・画面連携変更対応(2022年1月下旬リリース)
*
**********************************************************************/

package eo.ejb.common.edit;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.FU0371ETMsg;
import eo.ejb.cbm.entity.FU0371LE;

/**
 * <p>
 * 量販訪販Webアクセス認証キー採番部品クラスです。
 * </p>
 * @author 富士通
 */
public class JZMejbFU0371NumberParts extends JZMejbNumberPartsBase
{

	/**
	 * コンストラクタです。
	 */
	public JZMejbFU0371NumberParts()
	{
	}

	/**
	 * <p>
	 * 量販訪販Webアクセス認証キーの採番を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 採番されたWebアクセス認証キー
	 */
	public static Object getWebAccssNskey(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		// 機能コードのチェック（偶数の場合は採番しない）
		if (isFuncMode(inMsg))
		{
			return null;
		}

		String value = null;

		while (value == null)
		{
			// Webアクセス認証キーの取得
			value = getWebAccssNskey(16);

			CAANMsg inETMsgFU0371 = new CAANMsg(FU0371ETMsg.class.getName());
			inETMsgFU0371.set(FU0371ETMsg.RH_VH_WEB_ACCSS_NSKEY, value);

			try
			{
				// Webアクセス認証キーの検索を行う
				CAANMsg[] retFU0371 = new FU0371LE().findByCondition(inETMsgFU0371);

				// 検索結果が存在する場合は採番値をクリアする
				if (retFU0371.length > 0)
				{
					value = null;
				}
			}
			catch(CAANException ce)
			{
				throw new CAANRuntimeException(ce);
			}
		}

		return value;
	}

}
