/*********************************************************************
 *   All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JACejbAC0591SecProc
 *   ソースファイル名：JACejbAC0591SecProc.java
 *   作成者          ：富士通
 *   日付            ：2012年04月26日
 *＜機能概要＞
 *   通信量明細副次処理部品クラス
 *＜修正履歴＞
 *   バージョン  修正日      修正者      修正内容
 *   v3.00       2012/04/26  富士通      新規作成
 *   v5.00       2013/09/26  FJ)小野     【OM-2013-0002413】請求先情報併合画面で確定完了するとシステムエラーが発生する。
 *   v9.00       2014/07/01  FJ)小野     【OM-2014-0002090】FTTH通信明細、FTTH通信合計のインデックス変更に伴うオンライン機能対応。
 *
 **********************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANFinderException;
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.ejb.cbm.entity.AC0591ETMsg;
import eo.ejb.cbm.entity.AC0591LE;
import eo.ejb.common.JCCModelCommon;

/**
 * <p>
 * 通信量明細副次処理部品です。
 * </p>
 * @author 富士通
 */
public class JACejbAC0591SecProc extends TemplateSQLEntity
{

	/**
	 * コンストラクタです。
	 */
	public JACejbAC0591SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * 通信量明細請求先更新を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	public void seikyUpdate(CAANMsg inMsg)
	{
		// サービス契約番号と請求年月をキーに一覧照会を行う
		CAANMsg inMsgForUpdSelect = new CAANMsg(AC0591ETMsg.class.getName());
		inMsgForUpdSelect.set(AC0591ETMsg.SVC_KEI_NO, inMsg.getString(AC0591ETMsg.SVC_KEI_NO));
		inMsgForUpdSelect.set(AC0591ETMsg.SEIKY_YM, inMsg.getString(AC0591ETMsg.SEIKY_YM));
		
		AC0591LE le = new AC0591LE();
		CAANMsg[] result = null;
		try
		{
			result = le.findByCondition(inMsgForUpdSelect);
			for (CAANMsg reMsg : result)
			{
				// 更新処理を行う
				updateDB(setMsgOfUpdProc(inMsg, reMsg));
			}
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

	}

	/**
	 * <p>
	 * 通信量明細請求先更新のメッセージを設定します。
	 * </p>
	 * @param inMsg メッセージ
	 * @param reMsg 更新前データ
	 * @return CAANMsg メッセージ
	 */
	private CAANMsg setMsgOfUpdProc(CAANMsg inMsg, CAANMsg reMsg)
	{
		reMsg.set(AC0591ETMsg.SEIKY_KEI_NO, inMsg.getString(AC0591ETMsg.SEIKY_KEI_NO));
		reMsg.set(AC0591ETMsg.UPD_DTM, JCCModelCommon.getSysDateTimeStamp());
		reMsg.set(AC0591ETMsg.UPD_OPEACNT, inMsg.getString(AC0591ETMsg.OPERATORID));

		return reMsg;
	}

	/**
	 * <p>
	 * 更新を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	private void updateDB(CAANMsg inMsg)
	{
		try
		{
			// OM-2014-0002090対応により、
			// AC0591ETMsgクラスにて請求年月をPK扱いで設定したことにより、更新はPK更新メソッドにより実行する。
			super.update(inMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}


	/**
	 * 項目の配列を取得します。
	 * @return Object[][] 項目の配列
	 */
	@Override
	protected Object[][] getSchemaContents()
	{
		return AC0591ETMsg.getSchemaContents();
	}

    /**
     * スキーマ名を取得します。
     * @return スキーマ名
     */
	@Override
	protected String getSchemaName()
	{
		return "AC0591";
	}

    /**
     * DBテーブル名を取得します。
     * @return DBテーブル名
     */
	@Override
	protected String getTableName()
	{
		return AC0591ETMsg.getTableName();
	}
}
