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