/*******************************************************************************
 *	 All Rights reserved,Copyright (c) K-Opticom 
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム構築
 *	モジュール名	：JCRejbCR0141GetSequence
 *	ソースファイル名：JCRejbCR0141GetSequence.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.JCRUtilCommon;
import eo.ejb.cbm.entity.CR0141ETMsg;
import eo.ejb.cbm.entity.CR0141LE;

/**
 * カテゴリー採番部品<p>
 * <BR>
 * @author 富士通
 */
public class JCRejbCR0141GetSequence extends TemplateSQLEntity
{

	/**
	 * コンストラクタです。
	 */
	public JCRejbCR0141GetSequence()
	{
		super();
	}

	/**
	 * <p>
	 * 表示順採番処理。
	 * </p>
	 * @param joiCtgrNo 上位カテゴリー番号
	 * @param taioKirokNo カテゴリーレベル
	 * @param taioKirokNo 業務個別設定組織コード
	 * @return 引数の上位カテゴリー番号、カテゴリーレベル、業務個別設定組織コードでカテゴリーを検索し、
	 *          表示順の現在の最大値に1を加えたものを返却します。
	 */
	public String getCtgrDspJun(String joiCtgrNo, String ctgrLv, String wkkbtOrgCd)
	{
		// カテゴリーのETメッセージを生成
		CAANMsg searchMsg = new CAANMsg(CR0141ETMsg.class.getName());

		// 検索条件を設定
		// 上位カテゴリー番号
		searchMsg.set(CR0141ETMsg.JOI_CTGR_NO, joiCtgrNo);
		// カテゴリーレベル
		searchMsg.set(CR0141ETMsg.CTGR_LV, ctgrLv);

		// 業務個別設定組織コード
		if (!JCRUtilCommon.isNull(wkkbtOrgCd))
		{
			
			searchMsg.set(CR0141ETMsg.WKKBT_ORG_CD, wkkbtOrgCd);
		}

		// 検索結果
		CAANMsg[] retMsg = null;

		// カテゴリーを検索する
		try
		{
			retMsg = new CR0141LE().findByCondition(searchMsg);
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		// 返却値初期化
		String maxNumber = "1";

		// 検索結果が1件以上の場合
		if (retMsg != null && retMsg.length > 0)
		{
			// 表示順で降順ソート
			Arrays.sort(retMsg, new JCRSortComparator("DSP_JUN", JCRSortComparator.SORT_TYPE_DESC, JCRSortComparator.SORT_ITEM_TYPE_NUMBER));

			// 降順ソート後の1件目を取得
			CAANMsg outMsg = retMsg[0];
			maxNumber = String.valueOf(outMsg.getStringAsInt(CR0141ETMsg.DSP_JUN) + 1);
		}

		// リターン
		return maxNumber;

	}

	/**
	 * このエンティティのスキーマの内容を取得します。<br>
	 * @return スキーマのContents
	 */
	@Override
	protected Object[][] getSchemaContents() 
	{
		return CR0141ETMsg.getSchemaContents();
	}

	/**
	 * このエンティティのスキーマの名を取得します。<br>
	 * @return スキーマ名
	 */
	@Override
	protected String getSchemaName() 
	{
		return CR0141ETMsg.class.getName();
	}

	/**
	 * このエンティティの参照するテーブル名を取得します。<br>
	 * @return テーブル名
	 */
	@Override
	protected String getTableName() 
	{
		return CR0141ETMsg.getTableName();
	}

}
