/*********************************************************************
*   All Right reserved,Copyright (c) Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム構築
*   モジュール名    ：JTNejbTN0011SecProc
*   ソースファイル名：JTNejbTN0011SecProc.java
*   作成者          ：富士通
*   日付            ：2011年06月20日
*＜機能概要＞
*   場所副次処理部品クラス
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/06/20  富士通      新規作成
*
**********************************************************************/

package eo.ejb.common.db;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;

import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;

import eo.ejb.cbm.entity.TN0011ETMsg;
import eo.ejb.cbm.entity.TN0011LE;
import eo.ejb.cbs.cbsmsg.ETN0011D010CBSMsg;

/**
 * <p>
 * 場所副次処理部品です。
 * </p>
 * @author 富士通
 */
public class JTNejbTN0011SecProc extends JTNejbTN0011DBABase
{

	/**
	 * コンストラクタです。
	 */
	public JTNejbTN0011SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * 場所登録を行います。
	 * </p>
	 * @param cbsMsg CBSメッセージ
	 */
	public void eTN0011D010(CAANMsg cbsMsg, CAANMsg etMsg)
	{
		// 場所番号採番
		CAANMsg inMsg = new CAANMsg(TN0011ETMsg.class.getName());
		TN0011LE le = new TN0011LE();
		
		CAANMsg[] msgMaxPlaceNo = null;
		
		try{
			// 登録されている場所番号で最大のものに1加算(場所番号は数字の想定)
			msgMaxPlaceNo = le.findByCondition(inMsg);
		}catch (CAANException e){
			throw new CAANRuntimeException();
		}

		ArrayList<String> placeNoList = new ArrayList<String>();
		String newPlaceNo = null;
		if (0 == msgMaxPlaceNo.length){
			// まだ場所が登録されていない場合、すべてゼロを設定
			placeNoList.add(0, "0000000000");
		}else{
			for (int i = 0; i < msgMaxPlaceNo.length; i++){
				placeNoList.add(i, msgMaxPlaceNo[i].getString(TN0011ETMsg.PLACE_NO));
			}
			Collections.sort(placeNoList);
			Collections.reverse(placeNoList);
		}

		String f = "0000000000";
		DecimalFormat df = new DecimalFormat(f);
		newPlaceNo = df.format(Integer.parseInt(placeNoList.get(0)) + 1);

		// 採番した場所番号を設定する
		cbsMsg.set(ETN0011D010CBSMsg.PLACE_NO, newPlaceNo);
		etMsg.set(TN0011ETMsg.PLACE_NO, newPlaceNo);
		
		// 場所登録を行う
		insertDB(etMsg);
	}

	/**
	 * <p>
	 * 場所内容変更を行います。
	 * </p>
	 * @param cbsMsg CBSメッセージ
	 */
	public void eTN0011D020(CAANMsg cbsMsg, CAANMsg etMsg)
	{
		// 場所内容変更を行う
		insertDB(etMsg);
	}

	/**
	 * <p>
	 * 宅内機器設置場所変更を行います。
	 * </p>
	 * @param cbsMsg CBSメッセージ
	 */
	public void eTN0081D030(CAANMsg cbsMsg, CAANMsg etMsg)
	{
		// 場所内容変更を行う
		insertDB(etMsg);
	}

	/**
	 * <p>
	 * 登録を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	private void insertDB(CAANMsg inMsg)
	{
		try
		{
			super.create(inMsg);
		}
		catch (CAANCreateException e)
		{
			throw new RuntimeException(e);
		}
	}

}
