/*******************************************************************************
 *	 All Rights reserved,Copyright (c) K-Opticom 
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム構築
 *	モジュール名	：JCRejbCR0411GetSequence
 *	ソースファイル名：JCRejbCR0411GetSequence.java
 *	作成者			：富士通
 *	日付			：2011年03月14日
 *＜機能概要＞
 *	初期値項目識別明細番号採番部品
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/

package eo.ejb.common.db;

import java.util.Arrays;

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.TemplateSQLEntity;

import eo.common.util.JCRSortComparator;
import eo.common.util.JPCEditString;
import eo.ejb.cbm.entity.CR0411ETMsg;
import eo.ejb.cbm.entity.CR0411LE;

/**
 * 初期値項目識別明細番号採番部品<p>
 * <BR>
 * @author 富士通
 */
public class JCRejbCR0411GetSequence extends TemplateSQLEntity
{

	/**
	 * コンストラクタです。
	 */
	public JCRejbCR0411GetSequence()
	{
		super();
	}

	/**
	 * <p>
	 * 初期値項目識別明細番号採番処理。
	 * </p>
	 * @param wkkbtOrgCd 業務個別設定組織コード
	 * @return 引数の業務個別設定組織コードで業務個別設定組織別初期値制御を検索し、初期値項目識別明細番号の現在の最大値に1を加えたものを返却します。
	 */
	public String getShkvKmkSkbtDtlNo(String wkkbtOrgCd)
	{
		// 業務個別設定組織別初期値制御のETメッセージを生成
		CAANMsg searchMsg = new CAANMsg(CR0411ETMsg.class.getName());

		// 検索条件を設定
		// 業務個別設定組織コード
		searchMsg.set(CR0411ETMsg.WKKBT_ORG_CD, wkkbtOrgCd);

		// 検索結果
		CAANMsg[] retMsg = null;

		// 業務個別設定組織別初期値制御を検索する
		try
		{
			retMsg = new CR0411LE().findByCondition(searchMsg);
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		// 返却値初期化
		String maxNumber = "1";

		// 検索結果が1件以上の場合
		if (retMsg != null && retMsg.length > 0)
		{
			// 初期値項目識別明細番号で降順ソート
			Arrays.sort(retMsg, new JCRSortComparator("SHKV_KMK_SKBT_DTL_NO", JCRSortComparator.SORT_TYPE_DESC));

			// 降順ソート後の1件目を取得
			CAANMsg outMsg = retMsg[0];
			maxNumber = String.valueOf(outMsg.getStringAsInt(CR0411ETMsg.SHKV_KMK_SKBT_DTL_NO) + 1);
		}

		// 前ゼロつき10ケタに編集し、リターン
		return JPCEditString.fillZero(maxNumber, 3, false);

	}

	/**
	 * このエンティティのスキーマの内容を取得します。<br>
	 * @return スキーマのContents
	 */
	@Override
	protected Object[][] getSchemaContents() 
	{
		return CR0411ETMsg.getSchemaContents();
	}

	/**
	 * このエンティティのスキーマの名を取得します。<br>
	 * @return スキーマ名
	 */
	@Override
	protected String getSchemaName() 
	{
		return CR0411ETMsg.class.getName();
	}

	/**
	 * このエンティティの参照するテーブル名を取得します。<br>
	 * @return テーブル名
	 */
	@Override
	protected String getTableName() 
	{
		return CR0411ETMsg.getTableName();
	}

}
