/*******************************************************************************
 *	 All Rights reserved,Copyright (c) K-Opticom 
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム構築
 *	モジュール名	：JCRejbCR0021GetSequence
 *	ソースファイル名：JCRejbCR0021GetSequence.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.CR0021ETMsg;
import eo.ejb.cbm.entity.CR0021LE;
import eo.ejb.cbm.entity.CR0221ETMsg;

/**
 * 対応記録明細番号採番部品<p>
 * <BR>
 * @author 富士通
 */
public class JCRejbCR0021GetSequence extends TemplateSQLEntity
{

	/**
	 * コンストラクタです。
	 */
	public JCRejbCR0021GetSequence()
	{
		super();
	}

	/**
	 * <p>
	 * 対応記録明細番号採番処理。
	 * </p>
	 * @param taioKirokNo 対応記録番号
	 * @return 引数の対応記録番号で対応記録明細を検索し、対応記録明細番号の現在の最大値に1を加えたものを返却します。
	 */
	public String getTaioKirokDtlNo(String taioKirokNo)
	{
		// 対応記録明細のETメッセージを生成
		CAANMsg searchMsg = new CAANMsg(CR0021ETMsg.class.getName());

		// 検索条件を設定
		// 対応記録番号
		searchMsg.set(CR0021ETMsg.TAIO_KIROK_NO, taioKirokNo);

		// 検索結果
		CAANMsg[] retMsg = null;

		// 対応記録明細を検索する
		try
		{
			retMsg = new CR0021LE().findByCondition(searchMsg);
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		// 返却値初期化
		String maxNumber = "1";

		// 検索結果が1件以上の場合
		if (retMsg != null && retMsg.length > 0)
		{
			// 対応記録明細番号で降順ソート
			Arrays.sort(retMsg, new JCRSortComparator("TAIO_KIROK_DTL_NO", JCRSortComparator.SORT_TYPE_DESC));

			// 降順ソート後の1件目を取得
			CAANMsg outMsg = retMsg[0];
			maxNumber = String.valueOf(outMsg.getStringAsInt(CR0021ETMsg.TAIO_KIROK_DTL_NO) + 1);
		}

		// 前ゼロつき10ケタに編集し、リターン
		return JPCEditString.fillZero(maxNumber, 10, false);

	}

	/**
	 * このエンティティのスキーマの内容を取得します。<br>
	 * @return スキーマのContents
	 */
	@Override
	protected Object[][] getSchemaContents() 
	{
		return CR0221ETMsg.getSchemaContents();
	}

	/**
	 * このエンティティのスキーマの名を取得します。<br>
	 * @return スキーマ名
	 */
	@Override
	protected String getSchemaName() 
	{
		return CR0221ETMsg.class.getName();
	}

	/**
	 * このエンティティの参照するテーブル名を取得します。<br>
	 * @return テーブル名
	 */
	@Override
	protected String getTableName() 
	{
		return CR0221ETMsg.getTableName();
	}

}
