/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSvcKeiUseStpAddShijisho11Tgt
*	ソースファイル名	：JBSbatKKSvcKeiUseStpAddShijisho11Tgt.java
*	作成者				：富士通　
*	作成日				：2013年04月11日
*＜機能概要＞
*　利用停止後指示書G登録対象抽出処理です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/04/11   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM083;
import eo.business.util.file.JBSbatKKIFM452;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKSvcKeiUseStpAddShijisho08Tgt extends JBSbatBusinessService
{

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = JBSbatKK_T_SVC_KEI.TABLE_NAME;

	/** SQL定義キー(KK_SELECT_255)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_255 = "KK_SELECT_255";

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	private class Result{
		
		private static final String SYSID="SYSID";
		private static final String UPD_UM="UPD_UM";
		
		String sysid;
		String updUm;

		public Result(JBSbatCommonDBInterface record) throws Exception {
			this(record.getString(SYSID),record.getString(UPD_UM));
		}

		public Result(String sysid, String updUm) {
			this.sysid = sysid;
			this.updUm = updUm;
		}

		public String getSysid() {
			return sysid;
		}
		public String getUpdUm() {
			return updUm;
		}
		
	}
	
//
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		
		super.logPrint.printDebugLog("JBSbatKKSvcKeiUseStpAddShijisho08Tgt.initial  this.opeDate=" + this.opeDate);

	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{

		String svcKeiNo=inMap.getString(JBSbatKKIFM083.SVC_KEI_NO);
		super.logPrint.printDebugLog("execute  svcKeiNo=" + svcKeiNo);
		
		List<Result> resultList=resolveResultList(svcKeiNo);
		
		//結果を順次出力ファイルオブジェクトに追加

		// 出力ファイルオブジェクトを生成
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		for(Result result:resultList){
			//出力値編集
			JBSbatServiceInterfaceMap outMap=new JBSbatServiceInterfaceMap();
			outMap.setString(JBSbatKKIFM452.SYSID,result.getSysid());
			outMap.setString(JBSbatKKIFM452.UPD_UM,result.getUpdUm());
			outMap.setOutFlg(true);
			//出力として設定
			outputItem.addOutMapList(outMap);
		}
		return outputItem;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	}
	

	/**
	 * SQLKEY(KK_SELECT_255)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	運用日付
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_255(Object[] params) throws Exception
	{
		// バインド変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		for(Object param:params){
			paramList.setValue(param.toString());
		}

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_255);
	}
	
	private List<Result> resolveResultList(String svcKeiNo) throws Exception{
		List<Result> resultList=new ArrayList<Result>();
		
		executeKK_T_SVC_KEI_KK_SELECT_255(new Object[]{svcKeiNo,this.opeDate,svcKeiNo});
		
		for(JBSbatCommonDBInterface result= db_KK_T_SVC_KEI.selectNext();result!=null;result= db_KK_T_SVC_KEI.selectNext()){
			resultList.add(new Result(result));
		}
		
		return resultList;
	}
}

