/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JZMejbZM0511NumberParts
*	ソースファイル名：JZMejbZM0511NumberParts.java
*	作成者			：富士通
*	日付			：2015年02月12日
*＜機能概要＞
*	Webアクセス認証キー採番部品クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v13.00.00   2015/02/12  FJ)寺園     ANK-2433-00-00  新規作成
*   v13.00.01   2015/02/25  FJ)寺園     IT1-2015-0000019  Webアクセス認証キーパスワードの暗号化を削除
*
**********************************************************************/

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.ZM0511ETMsg;
import eo.ejb.cbm.entity.ZM0511LE;
import eo.ejb.common.JCCModelCommon;

/**
 * <p>
 * Webアクセス認証キー採番部品クラスです。
 * </p>
 * @author 富士通
 */
public class JZMejbZM0511NumberParts extends JZMejbNumberPartsBase
{

	/** Webアクセス認証キー番号シーケンス名 */
	private static final String SEQ_WEB_ACCSS_NSKEY_NO = "SEQ_WEB_ACCSS_NSKEY_NO";

	/** 接頭語(空白) */
	private static final String PREFIX_KUUHAKU = "";
	
	/** 桁数(12) */
	private static final int KETASUU = 12;

	/** Webアクセス認証キー種別コード */
	private static final String WEB_ACCSS_NSKEY_SBT_CD = "web_accss_nskey_sbt_cd";

	/** Ｗｅｂアクセス認証キー桁数 */
	private static final String WEB_ACCSS_NSKEY_DIGITNO = "web_accss_nskey_digitno";

	/** Ｗｅｂアクセス認証キーパスワード桁数 */
	private static final String WEB_ACCSS_NSKEY_PWD_DIGITNO = "web_accss_nskey_pwd_digitno";

	/** 無効フラグ（有効） */
	private static final String MK_FLG_YK = "0";

	/**
	 * コンストラクタです。
	 */
	public JZMejbZM0511NumberParts()
	{
	}

	/**
	 * <p>
	 * Webアクセス認証キー-Webアクセス認証キー番号採番処理を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 採番されたWebアクセス認証キー番号
	 */
	public static String getWebAccssNskeyNo(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		
		if (isFuncMode(inMsg))
		{
			return null;
		}
		
		// モデル共通アクセッサー部品・Oracleシーケンス取得処理
		String value = JCCModelCommon.getFormatedNextSeq(SEQ_WEB_ACCSS_NSKEY_NO , PREFIX_KUUHAKU , KETASUU); 
		
		return value;
	}

	/**
	 * <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(inMsg.getStringAsInt(WEB_ACCSS_NSKEY_DIGITNO));

			CAANMsg inETMsgZM0511 = new CAANMsg(ZM0511ETMsg.class.getName());
			inETMsgZM0511.set(ZM0511ETMsg.WEB_ACCSS_NSKEY_SBT_CD, inMsg.getString(WEB_ACCSS_NSKEY_SBT_CD));
			inETMsgZM0511.set(ZM0511ETMsg.WEB_ACCSS_NSKEY, value);
			inETMsgZM0511.set(ZM0511ETMsg.MK_FLG, MK_FLG_YK);

			try
			{
				// Webアクセス認証キーの検索を行う
				CAANMsg[] retZM0511 = new ZM0511LE().findByCondition(inETMsgZM0511);

				// 検索結果が存在する場合は採番値をクリアする
				if (retZM0511.length > 0)
				{
					value = null;
				}
			}
			catch(CAANException ce)
			{
				throw new CAANRuntimeException(ce);
			}
		}

		return value;
	}

	/**
	 * <p>
	 * Webアクセス認証キーパスワードの採番処理を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 採番されたWebアクセス認証キーパスワード
	 */
	public static Object getWebAccssNskeyPwd(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		// 機能コードのチェック（偶数の場合は採番しない）
		if (isFuncMode(inMsg))
		{
			return null;
		}

		// Webアクセス認証キーパスワードの取得
		String value = getWebAccssNskeyPwd(inMsg.getStringAsInt(WEB_ACCSS_NSKEY_PWD_DIGITNO));

		//IT1-2015-0000019 MOD START
//		// Webアクセス認証キーパスワードを暗号化する
//		String valueEncrypt = JCCModelCommon.getEncryptResult(inMsg, inContext, value);
//
//		return valueEncrypt;
		return value;
		//IT1-2015-0000019 MOD END
	}

}
