/*********************************************************************
 *   All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JACejbAC0461SecProc
 *   ソースファイル名：JACejbAC0461SecProc.java
 *   作成者          ：富士通
 *   日付            ：2012年04月26日
 *＜機能概要＞
 *   サービス契約蓄積副次処理部品クラス
 *＜修正履歴＞
 *   バージョン  修正日      修正者      修正内容
 *   v3.00       2012/04/26  富士通      新規作成
 *   v8.00       2014/03/26  FJ)小野    【OM-2014-0001225】請求先情報分割処理でタイムアウトが発生しシステムエラーとなる事象に対応。
 *
 **********************************************************************/

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 eo.ejb.cbm.entity.AC0461ETMsg;
import eo.ejb.cbm.entity.AC0461LE;
import eo.ejb.common.JCCModelCommon;

/**
 * <p>
 * サービス契約蓄積副次処理部品です。
 * </p>
 * @author 富士通
 */
public class JACejbAC0461SecProc extends JACejbAC0461DBABase
{

	/**
	 * コンストラクタです。
	 */
	public JACejbAC0461SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * サービス契約蓄積請求先更新を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	public void seikyUpdate(CAANMsg inMsg)
	{
		// サービス番号と請求年月をキーに一覧照会を行う
		CAANMsg inMsgForUpdSelect = new CAANMsg(AC0461ETMsg.class.getName());
		inMsgForUpdSelect.set(AC0461ETMsg.SVC_NO, inMsg.getString(AC0461ETMsg.SVC_NO));
		inMsgForUpdSelect.set(AC0461ETMsg.SEIKY_YM, inMsg.getString(AC0461ETMsg.SEIKY_YM));
		
		AC0461LE le = new AC0461LE();
		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(AC0461ETMsg.SEIKY_KEI_NO, inMsg.getString(AC0461ETMsg.SEIKY_KEI_NO));
		reMsg.set(AC0461ETMsg.UPD_DTM, JCCModelCommon.getSysDateTimeStamp());
		reMsg.set(AC0461ETMsg.UPD_OPEACNT, inMsg.getString(AC0461ETMsg.OPERATORID));

		return reMsg;
	}

	/**
	 * <p>
	 * 更新を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	private void updateDB(CAANMsg inMsg)
	{
		try
		{
			super.updateSvcKeiChikuseki(inMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}


	/**
	 * 項目の配列を取得します。
	 * @return Object[][] 項目の配列
	 */
	@Override
	protected Object[][] getSchemaContents()
	{
		return AC0461ETMsg.getSchemaContents();
	}

    /**
     * スキーマ名を取得します。
     * @return スキーマ名
     */
	@Override
	protected String getSchemaName()
	{
		return "AC0461";
	}

    /**
     * DBテーブル名を取得します。
     * @return DBテーブル名
     */
	@Override
	protected String getTableName()
	{
		return AC0461ETMsg.getTableName();
	}
}
