/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKejbKK2441NumberParts
*	ソースファイル名：JKKejbKK2441NumberParts.java
*	作成者			：富士通
*	日付			：2012年8月9日
*＜機能概要＞
*	他事業者割引契約採番部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/08/09	FJ)			新規作成
*
**********************************************************************/

package eo.ejb.common.edit;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbSucceedDataAccess;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.common.JCCModelCommon;

/**
 * <p>
 * 他事業者割引契約の採番部品クラス
 * </p>
 * @author 富士通
 */
public class JKKejbKK2441NumberParts extends JKKejbNumberPartsBase
{

	/** シーケンス定義名１ */
	private static final String SEQ_NAME1 = "SEQ_TAJGS_WRIB_KEI_NO";

	/** シーケンス定義名２ */
	private static final String SEQ_NAME2 = "SEQ_KDDI_JGS_KEI_KANRI_NO";

	/** 接頭語(空白) */
	private static final String PREFIX_KUUHAKU = "";
	
	/** 接頭語（KE） */
	private static final String PREFIX_KE = "KE";

	/** 桁数(15) */
	private static final int KETASUU15 = 15;

	/** 桁数(7) */
	private static final int KETASUU7 = 7;

	/** アクセスキー */
	private static final String ACCESS_KEY = "TAJGSWRIBKEINO";

	/**
	 * <p>
	 * 新しいJKKejbKK2441NumberPartsクラスを作成します
	 * </p>
	 */
	public JKKejbKK2441NumberParts()
	{
	}

	/**
	 * 他事業者割引契約番号採番処理
	 * <p>
	 * 他事業者割引契約番号を採番する
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 採番された他事業者割引契約番号
	 */
	public Object getTajgsWribKeiNo(CAANMsg inMsg, AgentDispatchContext inContext)
	{

		// (1) 機能コードが偶数の場合、処理を終了する。
		if (isFuncMode(inMsg))
		{
			return null;
		}

		// (2) データ引継ぎ部品・データ引継ぎ取得処理により、引継ぎデータの取得を行う。
		String value = (String)JSYejbSucceedDataAccess.getSucceedData(ACCESS_KEY);

		if (value != null)
		{
			// (3) (2)にて取得した引継ぎデータが設定済みだった場合、引継ぎデータを返却して処理を終了する。
			return value;
		}

		// (4) オラクルシーケンス取得処理を呼び出す。
		value = JCCModelCommon.getFormatedNextSeq(SEQ_NAME1, PREFIX_KUUHAKU, KETASUU15);

		// (5) (4)にて採番した番号を、データ引継ぎ部品・データ引継ぎ設定処理により、引継データに設定する。
		JSYejbSucceedDataAccess.setSucceedData(ACCESS_KEY, value);

		// (6) (4)にて採番した番号を返却する。
		return value;
	}

	/**
	 * KDDI事業者契約管理番号採番処理
	 * <p>
	 * KDDI事業者契約管理番号を採番する
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 採番されたKDDI事業者契約管理番号
	 */
	public Object getKddiJgsKeiKanriNo(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		// (1) 機能コードが偶数の場合、処理を終了する。
		if (isFuncMode(inMsg))
		{
			return null;
		}

		// (2) オラクルシーケンス取得処理を呼び出す。
		String value = JCCModelCommon.getFormatedNextSeq(SEQ_NAME2, PREFIX_KE, KETASUU7);

		// (3) 接尾語にチェックデジットを付与する。
		JKKejbNumberPartsBase jnpb = new JKKejbNumberPartsBase();
		value += jnpb.getCheckDigit21(value);

		// (4) (3)にて編集した番号を返却する。
		return value;
	}
}
