/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：Futurity
*	モジュール名	：JKKBatWorkParamKanriUtil
*	ソースファイル名：JKKBatWorkParamKanriUtil.java
*	作成者			：富士通
*	日付			：2011年04月22日
*＜機能概要＞
*	業務パラメータの取得を行います。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/04/22	富士通		新規作成
*
**********************************************************************/

package eo.business.common;

import java.sql.SQLException;


import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.util.JBSbatCheckUtil;


/**
 * 業務パラメータの取得を行います。
 * <br>
 * @author 富士通
 */
public class JKKBatWorkParamKanriUtil {

	/**
	 * 業務パラメータ取得処理です。
	 * ｢業務パラメータID｣と一致する業務パラメータ設定値を取得します。
	 * 
	 * @param cmnItem 業務共通電文
	 * @param paramId 業務パラメータID
	 * @return 業務パラメータ設定値
	 * @throws Exception 業務パラメータ取得処理に失敗した場合
	 */
	public static String getWorkParamSetteValue(JBSbatCommonItem cmnItem,String paramId) throws Exception
	{

		// 業務共通電文チェック
		if (cmnItem == null)
		{
			throw new Exception("バッチ共通電文がnullです。");
		}
		
		// バッチ運用日チェック
		if (cmnItem.getOpeDate() == null)
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00001W",new String[]{"バッチ運用日"});
			throw new Exception("バッチ運用日がnullです。");
		}
		String opeDate = cmnItem.getOpeDate();
		opeDate = opeDate.replaceAll(" ","");	//半角空白削除
		opeDate = opeDate.replaceAll("　","");	//全角空白削除
		if (opeDate.equals(""))
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00001W",new String[]{"バッチ運用日"});
			throw new Exception("バッチ運用日が空白です。");
		}
		if (!JBSbatCheckUtil.invoke(cmnItem.getOpeDate() ,new String[]{"year_month_day1"}))
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00009W",new String[]{"バッチ運用日",cmnItem.getOpeDate()});
			throw new Exception("バッチ運用日のフォーマットが不正です。");
		}
		
		// 業務パラメータID
		if (paramId == null || paramId.length() == 0)
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00001W",new String[]{"業務パラメータID"});
			throw new Exception("業務パラメータIDがnullです。");
		}		
		String id = paramId;
		id = id.replaceAll(" ","");		//半角空白削除
		id = id.replaceAll("　","");	//全角空白削除
		if (id.equals(""))
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00001W",new String[]{"業務パラメータID"});
			throw new Exception("業務パラメータIDが空白です。");
		}
		if (!JBSbatCheckUtil.invoke(paramId ,new String[]{"hannkakuesuuji2"}))
		{
			cmnItem.getLogPrint().printBusinessErrorLog("SY00013W",new String[]{"業務パラメータID",paramId});
			throw new Exception("業務パラメータIDのフォーマットが不正です。");
		}
		
		String paramSetteValue = null;
		JBSbatSQLAccess stmt = null;
		try
		{
			
			// 業務パラメータ管理アクセスを生成する
			stmt = new JBSbatSQLAccess(cmnItem,"ZM_M_WORK_PARAM_KNRI");

			// 検索キーを設定する
			JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
			dbList.setValue(paramId);		// 業務パラメータID
			dbList.setValue(cmnItem.getOpeDate()); // バッチ運用日
			dbList.setValue(cmnItem.getOpeDate()); // バッチ運用日
			
			// 依頼ジョブID,バッチ運用日を基にレコードを取得する
			stmt.selectBySqlDefine(dbList,"KK_SELECT_016");
			

			JBSbatCommonDBInterface inMap = new JBSbatCommonDBInterface(); 
			while((inMap = stmt.selectNext())!=null){
			    paramSetteValue = inMap.getString("WORK_PARAM_SETTE_VALUE");
			}
			// 検索結果が0件の場合NULLを返し処理を終了する。
			if( paramSetteValue == null ){
				return null;
			}
			
		}
		catch (SQLException e)
		{
			throw new Exception( "業務パラメータ取得処理で例外が発生しました。");
		}
		finally
		{
			if (stmt != null)
			{
				stmt.close();
			}

		}
		
		return paramSetteValue;
	}


}
