/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKejbKK2451SecProc
*	ソースファイル名：JKKejbKK2451SecProc.java
*	作成者			：富士通
*	日付			：2011年08月07日
*＜機能概要＞
*	他事業者割引契約対象契約に対する副次処理を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/07	富士通		新規作成
*
**********************************************************************/

package eo.ejb.common.db;

import java.util.ArrayList;
import java.util.List;

import com.fujitsu.futurity.common.JCMConstants;
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.AgentDispatchContext;

import eo.ejb.cbm.entity.KK2451ETMsg;
import eo.ejb.cbm.entity.KK2451LE;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JSYejbSysDate;

/**
 * <p>
 * 他事業者割引契約対象契約に対する副次処理を行う部品です。
 * </p>
 * @author 富士通
 */
public class JKKejbKK2451SecProc extends JKKejbKK2451DBABase
{

	/** 無効フラグ(有効) */
	private static final String MK_FLG_0 = "0";

	/**
	 * コンストラクタです。
	 */
	public JKKejbKK2451SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * 他事業者割引契約対象契約適用終了年月日を運用日付-1日で登録します。
	 * </p>
	 * @param cbsMsg CBSメッセージ
	 * @param tajgsWribKeyNo 他事業者割引契約番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 */
	public void createTajgswkeiTgkeiTendymd(CAANMsg cbsMsg, AgentDispatchContext inContext, String tajgsWribKeyNo)
	{

		// 他事業者割引契約対象契約
		KK2451LE le = new KK2451LE();

		// 他事業者割引契約対象契約一覧
		CAANMsg[] rsltList = null;

		// 引数リスト
		List<String> prmList = new ArrayList<String>();

		// 検索条件の設定
		CAANMsg inETMsg = new CAANMsg(KK2451ETMsg.class.getName());
		inETMsg.set(KK2451ETMsg.TAJGS_WRIB_KEI_NO, tajgsWribKeyNo);
		inETMsg.set(KK2451ETMsg.MK_FLG, MK_FLG_0);

		try
		{
			// 他事業者割引契約番号に紐付く他事業者割引契約対象契約を取得する
			rsltList = le.findByCondition(inETMsg);

			// 取得結果が0件の場合、処理終了
			if (rsltList.length == 0)
			{

				return;
			}

			// 引数リストの設定を行う
			String strPrm = "";
			for (int i = 0; i < rsltList.length; i++)
			{

				// 他事業者割引契約番号 + "," + 他事業者割引契約対象契約番号
				strPrm = rsltList[i].getObject(KK2451ETMsg.TAJGS_WRIB_KEI_NO).toString() + ","
						+ rsltList[i].getObject(KK2451ETMsg.TAJGSWKEI_TGKEI_NO).toString();

				// 引数リストに存在しなければ、引数を追加する
				if (!prmList.contains(strPrm))
				{
					prmList.add(strPrm);
				}

			}

			// 引数一覧分繰り返す
			String[] spltStr = null;
			CAANMsg inETMsg2 = new CAANMsg(KK2451ETMsg.class.getName());
			for (int i = 0; i < prmList.size(); i++)
			{

				// 引数リスト
				spltStr = prmList.get(i).split(",");

				inETMsg.set(KK2451ETMsg.TAJGS_WRIB_KEI_NO, spltStr[0]);
				inETMsg.set(KK2451ETMsg.TAJGSWKEI_TGKEI_NO, spltStr[1]);

				// 作成したメッセージを使用してカレント検索を行う
				inETMsg2 = super.findByCurrent(inETMsg);

				// カレントデータがある場合、他事業者割引契約対象契約適用終了年月日の更新を行う（実際は登録）
				if (inETMsg2 != null)
				{

					inETMsg2.set(KK2451ETMsg.GENE_ADD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS")); // システム日時
					inETMsg2.set(KK2451ETMsg.TAJGSWKEI_TGKEI_TENDYMD, JKKModelCommon.addDay(JKKModelCommon.getOpeDate(cbsMsg), -1)); // 運用日付 - 1日
					inETMsg2.set(KK2451ETMsg.ADD_DTM, cbsMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					inETMsg2.set(KK2451ETMsg.ADD_OPEACNT, cbsMsg.getString(KK2451ETMsg.OPERATORID));
					inETMsg2.set(KK2451ETMsg.UPD_DTM, cbsMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					inETMsg2.set(KK2451ETMsg.UPD_OPEACNT, cbsMsg.getString(KK2451ETMsg.OPERATORID));

					super.create(inETMsg2);
				}

				spltStr = null;
				inETMsg2.clear();
			}

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

	}

}
