/*********************************************************************
 *   All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JACejbAC0371SecProc
 *   ソースファイル名：JACejbAC0371SecProc.java
 *   作成者          ：富士通
 *   日付            ：2011年06月10日
 *＜機能概要＞
 *   eoモバイル合計副次処理部品クラス
 *＜修正履歴＞
 *   バージョン  修正日      修正者      修正内容
 *   v1.00.00    2011/06/10  富士通      新規作成
 *
 **********************************************************************/

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.AC0371ETMsg;
import eo.ejb.cbm.entity.AC0371LE;
import eo.ejb.common.JCCModelCommon;

/**
 * <p>
 * eoモバイル合計副次処理部品です。
 * </p>
 * @author 富士通
 */
public class JACejbAC0371SecProc extends TemplateSQLEntity
{

	/**
	 * コンストラクタです。
	 */
	public JACejbAC0371SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * eoモバイル合計請求先更新を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	public void seikyUpdate(CAANMsg inMsg)
	{
		// サービス契約番号と請求年月をキーに一覧照会を行う
		CAANMsg inMsgForUpdSelect = new CAANMsg(AC0371ETMsg.class.getName());
		inMsgForUpdSelect.set(AC0371ETMsg.SVC_KEI_NO, inMsg.getString(AC0371ETMsg.SVC_KEI_NO));
		inMsgForUpdSelect.set(AC0371ETMsg.SEIKY_YM, inMsg.getString(AC0371ETMsg.SEIKY_YM));
		
		AC0371LE le = new AC0371LE();
		CAANMsg[] result = null;
		try
		{
			result = le.findByCondition(inMsgForUpdSelect);
			for (CAANMsg reMsg : result)
			{
				// 更新処理を行う
				updateDB(setMsgOfUpdProc(inMsg, reMsg));
			}
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

	}

	/**
	 * <p>
	 * eoモバイル合計請求先更新のメッセージを設定します。
	 * </p>
	 * @param inMsg メッセージ
	 * @param reMsg 更新前データ
	 * @return CAANMsg メッセージ
	 */
	private CAANMsg setMsgOfUpdProc(CAANMsg inMsg, CAANMsg reMsg)
	{
		reMsg.set(AC0371ETMsg.SEIKY_KEI_NO, inMsg.getString(AC0371ETMsg.SEIKY_KEI_NO));
		reMsg.set(AC0371ETMsg.UPD_DTM, JCCModelCommon.getSysDateTimeStamp());
		reMsg.set(AC0371ETMsg.UPD_OPEACNT, inMsg.getString(AC0371ETMsg.OPERATORID));

		return reMsg;
	}

	/**
	 * <p>
	 * 更新を行います。
	 * </p>
	 * @param inMsg メッセージ
	 */
	private void updateDB(CAANMsg inMsg)
	{
		try
		{
			super.update(inMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}


	/**
	 * 項目の配列を取得します。
	 * @return Object[][] 項目の配列
	 */
	@Override
	protected Object[][] getSchemaContents()
	{
		return AC0371ETMsg.getSchemaContents();
	}

    /**
     * スキーマ名を取得します。
     * @return スキーマ名
     */
	@Override
	protected String getSchemaName()
	{
		return "AC0371";
	}

    /**
     * DBテーブル名を取得します。
     * @return DBテーブル名
     */
	@Override
	protected String getTableName()
	{
		return AC0371ETMsg.getTableName();
	}
}
