/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom  					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JDKBatCommon
*	ソースファイル名	：JDKBatCommon.java
*	作成者				：富士通　
*	作成日				：2012年06月01日
*＜機能概要＞
*　物流管理チームバッチ共通アクセッサー部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/01  富士通		新規作成
*********************************************************************/

package eo.business.common;

import java.util.Map;

import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.log.JBSbatLogPrintControl;

/**
 * 物流管理チームバッチ共通アクセッサー部品です。
 * <BR>
 * @author 富士通
 */
public class JDKBatCommon
{

	/**
	 * テーブル名をして、Insertを行う
	 * <p>
	 * tableNameをpkMapで検索し、取得結果に valueMapの値を代入してから
	 * Insertを行う。
	 * </p>
	 * @param commonItem　バッチ共通電文
	 * @param JBSbatSQLAccess SQLアクセスクラス
	 * @param pkMap PKマップ
	 * @param valueMap 値マップ
	 * @return 登録件数
	 * @throws Exception 
	 */
	public static int insertByPrimaryKeys(JBSbatCommonItem commonItem, 
			JBSbatSQLAccess db, 
			Map<String, Object>pkMap, 
			Map<String, Object> valueMap) throws Exception
	{
		JBSbatLogPrintControl log = commonItem.getLogPrint();
		log.printDebugLog("◆データ登録================================================================");
		log.printDebugLog("内容：" + margeJBSbatCommonDBInterface(valueMap, db.selectByPrimaryKeys(convertJBSbatCommonDBInterface(pkMap))).getMap().toString());
		return db.insertByPrimaryKeys(margeJBSbatCommonDBInterface(valueMap, db.selectByPrimaryKeys(convertJBSbatCommonDBInterface(pkMap))));
	}

	/**
	 * MapをDBアクセス用のMapに変換する
	 * @param inMap 変換対象マップ
	 * @return DBアクセス用マップ
	 * @throws Exception
	 */
	private static JBSbatCommonDBInterface convertJBSbatCommonDBInterface(Map<String, Object> inMap) throws Exception
	{
		return margeJBSbatCommonDBInterface(inMap, new JBSbatCommonDBInterface());
	}

	/**
	 * Mapの値をDBアクセス用マップにマージする
	 * @param inMap 変換対象マップ
	 * @param dbAccessMap DBアクセス用マップ
	 * @return マージ結果
	 * @throws Exception
	 */
	private static JBSbatCommonDBInterface margeJBSbatCommonDBInterface(Map<String, Object> inMap, JBSbatCommonDBInterface dbAccessMap) throws Exception
	{
		for (String key : inMap.keySet())
		{
			dbAccessMap.setValue(key, inMap.get(key));
		}

		return dbAccessMap;
	}
	
	
}
