/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：ZMSV0008_ZMSV0008OPDBMapper
*	ソースファイル名：ZMSV0008_ZMSV0008OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年05月14日
*＜機能概要＞
*	BP（処理名一覧取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/05/14	FJ) 宮前	新規作成
*   v3.00.00    2012/05/23  FJ) 宮前    【SGY-2012-000006】権限制御対応
*   v5.00.00    2013/07/10  FJ) 岩元    【LT-2013-0000376】データ一括登録コンボボックス値復帰処理対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JCCFrameworkException;
import eo.web.webview.ZMW10901SF.ZMW10901SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JZMWebCommon;


/**
 * DataBean-BPマッピングをする。
 * @author FJ
 *
 */
public class ZMSV0008_ZMSV0008OPDBMapper 
{

	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	/** KEY 処理依頼日時 時分 デフォルト値（業務パラメータ） */
	private static final String ZM_TRN_REQ_HM_DEF = "ZM_TRN_REQ_HM_DEF";

	/** KEY 業務パラメータ 設定値 */
	private static final String KEY_WORK_PARAM_ID = "key_work_param_id";

	/** KEY 業務パラメータ設定値 */
	private static final String KEY_WORK_PARAM_SETTE_VALUE = "work_param_sette_value";

	/** KEY 業務パラメータ管理一意照会明細 */
	private static final String KEY_EZM0321A010CBSMSG1LIST = "EZM0321A010CBSMsg1List";

	/** KEY 業務パラメータ管理一意照会 */
	private static final String KEY_EZM0321A010 = "EZM0321A010";

	/** KEY ディレイド定期処理方式フラグ */
	private static final String KEY_DLYD_TEIKI_TRN_HOSHIKI_FLG = "dlyd_teiki_trn_hoshiki_flg";

	/** 依頼ジョブID */
	private static final String KEY_REQ_JOB_ID = "req_job_id";

	/** KEY 処理名 */
	private static final String KEY_TRN_NM = "trn_nm";

	/** KEY 処理管理番号 */
	private static final String KEY_TRN_KANRI_NO = "trn_kanri_no";

	/** KEY 処理名一覧 */
	private static final String KEY_EZM0271B010CBSMSG1_LIST = "EZM0271B010CBSMsg1List";

	/** エラーメッセージ 権限制御定義プロパティファイル取得失敗 */
	private static final String ERR_MSG_AUTHORITY_PRP_FILE = "権限制御定義ファイルキャッシュ情報の取得に失敗しました。";
	
	/** 一括登録処理コード 一括登録 */
	private static final String IKT_TRN_CD_0 = "0";
	
	/** 検索タイプ 2 */
	private static final String SEARCH_TYPE_2 = "2";
	
	/** 処理名一覧 */
	private static final String KEY_EZM0271B010 = "EZM0271B010";
	
	/** KEY 検索タイプ */
	private static final String KEY_SEARCH_TYPE = "search_type";
	
	/** KEY 一括登録処理コード */
	private static final String KEY_IKT_IKT_TRN_CD = "key_ikt_ikt_trn_cd";
	
	/** KEY 機能コード */
	private static final String KEY_FUNC_CODE = "func_code";
	
	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
	/**
	 * コンストラクタ
	 */
	public ZMSV0008_ZMSV0008OPDBMapper()
	{
	}
	

	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：データ一括登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setEZM0271B010(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) 
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(KEY_FUNC_CODE, func_code);

		// ディレイド処理依頼種別コード
		parentMap.put(KEY_IKT_IKT_TRN_CD, IKT_TRN_CD_0);
		
		parentMap.put(KEY_SEARCH_TYPE, SEARCH_TYPE_2);

		outputMap.put(KEY_EZM0271B010, parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：データ一括登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setEZM0321A010(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) 
	{
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(KEY_FUNC_CODE, func_code);
		
		// 業務パラメータID
		parentMap.put(KEY_WORK_PARAM_ID, ZM_TRN_REQ_HM_DEF);
		
		outputMap.put(KEY_EZM0321A010, parentMap);
		
		return outputMap;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：データ一括登録
	 * @param outputMap
	 * @param vl
	 * @param transTrnNo 連携されてきた処理管理番号
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getEZM0271B010(X31SDataBeanAccess[] bean, HashMap outputMap, X31BWebBusinessLogic vl, String transTrnNo)
	{

		HashMap parentMap = null;
		if(outputMap.containsKey(KEY_EZM0271B010))
		{
			parentMap = (HashMap)outputMap.get(KEY_EZM0271B010);
		}

		ArrayList childList = null;
		
		// 権限リスト設定
		HashMap<String, String> authMap = new HashMap<String, String>();
		JCCWebCommon.setAuthorityList(vl, authMap);
		
		// 権限設定プロパティファイル 設定値取得
		HashMap<String, String> prpMap = new HashMap<String, String>();
		try
		{
			prpMap = JCCWebCommon.getMap(vl.getGamenId());
		}
		catch (JCCFrameworkException fwe)
		{
			throw new JCCFrameworkException(ERR_MSG_AUTHORITY_PRP_FILE, fwe);
		}
		
		X31SDataBeanAccessArray listEZM0271B010_trn_kanri_list_EZM0271B010CBSMsg1List = bean[0].getDataBeanArray(ZMW10901SFConst.TRN_KANRI_LIST);
		childList = null;
		
		if(listEZM0271B010_trn_kanri_list_EZM0271B010CBSMsg1List != null && parentMap != null && parentMap.containsKey(KEY_EZM0271B010CBSMSG1_LIST))
		{
			childList = (ArrayList)parentMap.get(KEY_EZM0271B010CBSMSG1_LIST);

			for(int i = 0; i < childList.size(); i++)
			{
				
				HashMap childMap = (HashMap)childList.get(i);
				String trnNo = (String)childMap.get(KEY_TRN_KANRI_NO);
				
				// 権限による判定
				if(JZMWebCommon.judgeAuthorityCd(vl, authMap, prpMap, vl.getGamenId() + ";" + trnNo + ";0"))
				{
					X31SDataBeanAccess subbean = null;
					if(listEZM0271B010_trn_kanri_list_EZM0271B010CBSMsg1List.getCount() - 1 >= i)
					{
						subbean = listEZM0271B010_trn_kanri_list_EZM0271B010CBSMsg1List.getDataBean(i);
					}
					else
					{
						subbean = listEZM0271B010_trn_kanri_list_EZM0271B010CBSMsg1List.addDataBean();
					}
					if (subbean == null) 
					{
						continue;
					}
					
					// 処理名一覧.処理名処理管理番号 ← 処理管理一覧照会.処理名一覧.処理管理番号
					if (childMap != null) 
					{
						subbean.sendMessageString(ZMW10901SFConst.TRN_KANRI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, trnNo);
					}
					else
					{
						subbean.sendMessageString(ZMW10901SFConst.TRN_KANRI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					}
					
					// 処理名一覧.処理名表示用名称 ← 処理管理一覧照会.処理名一覧.処理名
					if (childMap != null) 
					{
						subbean.sendMessageString(ZMW10901SFConst.TRN_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(KEY_TRN_NM));
					}
					else
					{
						subbean.sendMessageString(ZMW10901SFConst.TRN_NM_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					}
					
					// 処理名一覧.処理名依頼ジョブＩＤ ← 処理管理一覧照会.処理名一覧.依頼ジョブID
					if (childMap != null)
					{
						subbean.sendMessageString(ZMW10901SFConst.REQ_JOB_ID_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(KEY_REQ_JOB_ID));
					}
					else
					{
						subbean.sendMessageString(ZMW10901SFConst.REQ_JOB_ID_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					}
					
					// 処理名一覧.処理名ディレイド定期処理方式フラグ ← 処理管理一覧照会.処理名一覧.ディレイド定期処理方式フラグ
					if(childMap != null)
					{
						String trnHoshikiFlg =(String)childMap.get(KEY_DLYD_TEIKI_TRN_HOSHIKI_FLG);

						subbean.sendMessageString(ZMW10901SFConst.DLYD_TEIKI_TRN_HOSHIKI_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, trnHoshikiFlg);
						
						if(transTrnNo.equals(trnNo))
						{
							JZMWebCommon.setSendMessageString(bean[0], ZMW10901SFConst.TRN_KANRI_SELECT, String.valueOf(i) + ":" + trnHoshikiFlg);
						}
					}
					else
					{
						subbean.sendMessageString(ZMW10901SFConst.DLYD_TEIKI_TRN_HOSHIKI_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					}
					
				}
			}
		}
		return bean;

	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：データ一括登録
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getEZM0321A010(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey(KEY_EZM0321A010))
		{
			parentMap = (HashMap)outputMap.get(KEY_EZM0321A010);
		}

		ArrayList childList = null;
		

		childList = null;
		if(parentMap.containsKey(KEY_EZM0321A010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(KEY_EZM0321A010CBSMSG1LIST);

			HashMap childMap = (HashMap)childList.get(0);
			
			// 処理依頼日時 時分デフォルト値
			bean[0].sendMessageString(ZMW10901SFConst.TRN_REQ_HM_DEF , X31CWebConst.DATABEAN_SET_VALUE, 
														(String)childMap.get(KEY_WORK_PARAM_SETTE_VALUE));
		}

		return bean;
	}
	
	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	


}
