/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：ZMSV0005_ZMSV0005OPDBMapper
*	ソースファイル名：ZMSV0005_ZMSV0005OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年03月10日
*＜機能概要＞
*	BP（祝日情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/10	FJ) 宮前	新規作成
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import eo.web.webview.ZMW06901SF.ZMW06901SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class ZMSV0005_ZMSV0005OPDBMapper {
	
	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	/** メニューキャッシュ用 配列 作成 シングルクォート+カンマ */
	private static final String SINGLE_QUOTE_COMMA = "', ";

	/** メニューキャッシュ用 配列 作成 シングルクォート+コロン */
	private static final String SINGLE_QUOTE_COLON = "' : ";

	/** メニューキャッシュ用 配列 作成 シングルクォート */
	private static final String SINGLE_QUOTE = "'";

	/** KEY システムパラメータ管理一覧照会明細 */
	private static final String KEY_EZM0311B010CBSMSG1LIST = "EZM0311B010CBSMsg1List";
	
	/** 配列（JavaScript用） 終了 */
	private static final String ARRAY_LIST_CLOSE = "]";

	/** 配列（JavaScript用） 開始 */
	private static final String ARRAY_LIST_OPEN = "[";

	/** 休日フラグ */
	private static final String HOLIDAY_FLG = "0";

	/** カンマ */
	private static final String SP_COMMA = ",";

	/** 中カッコ 閉じる */
	private static final String LIST_CLOSE = "}";
	
	/** 中カッコ 開始 */
	private static final String LIST_OPEN = "{";

	/** KEY 祝日一覧照会マップ */
	private static final String KEY_ZMSV000501_SC = "ZMSV000501SC";
	
	/** KEY システムパラメータ管理一覧照会マップ */
	private static final String KEY_ZMSV000502_SC = "ZMSV000502SC";
	
	/** KEY 祝日情報 */
	private static final String KEY_EZM0291B011CBSMSG1LIST = "EZM0291B011CBSMsg1List";
	
	/** KEY 機能コード */
	private static final String KEY_FUNC_CODE = "func_code";
	
	/** KEY 対象年月日 */
	private static final String KEY_TRGT_YMD = "trgt_ymd";
	
	/** KEY ラインセパレータ 改行コード */
	private static final String KEY_LINE_SEPARATOR = "line.separator";
	
	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
	/**
	 * コンストラクタ
	 */
	public ZMSV0005_ZMSV0005OPDBMapper(){
	}
	
	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メニュー
	 * @param outputMap サービス呼び出しで渡すデータ
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setZMSV000501SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) 
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(KEY_FUNC_CODE, func_code);
		
		outputMap.put(KEY_ZMSV000501_SC, parentMap);
		
		return outputMap;
	}
	
	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メニュー
	 * @param outputMap サービス呼び出しで渡すデータ
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setZMSV000502SC(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_sys_param_bunrui_cd", eo.web.webview.common.JZMWebCommon.getConstantValue("DATE_CHGE"));
		
		parentMap.put("key_stdardymd", eo.web.webview.common.JCCWebCommon.getSysDate());

		outputMap.put(KEY_ZMSV000502_SC, parentMap);
						
		return outputMap;
	}

	
	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	/**
	 * 下りマッピング
	 * @param bean [0]:メニュー
	 * @param outputMap サービス呼び出しで取得したデータ
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getZMSV000501SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap map = (HashMap)outputMap.get(KEY_ZMSV000501_SC);
		ArrayList list = (ArrayList)map.get(KEY_EZM0291B011CBSMSG1LIST);
		
		if(list == null)
		{
			return null;
		}

		StringBuffer busidayKanr = new StringBuffer(LIST_OPEN);
		for (int i = 0; i < list.size(); i++) 
		{
			HashMap record = (HashMap)list.get(i);
			busidayKanr.append(i < 1 ? System.getProperty(KEY_LINE_SEPARATOR) : SP_COMMA + System.getProperty(KEY_LINE_SEPARATOR))
						.append(SINGLE_QUOTE).append((String)record.get(KEY_TRGT_YMD)).append(SINGLE_QUOTE_COLON)
						.append(HOLIDAY_FLG);
		}
		busidayKanr.append(System.getProperty(KEY_LINE_SEPARATOR) + LIST_CLOSE);

		bean[0].sendMessageString(ZMW06901SFConst.BUSIDAY_KANR, X31CWebConst.DATABEAN_SET_VALUE, busidayKanr.toString());

		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean [0]:メニュー
	 * @param outputMap サービス呼び出しで取得したデータ
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getZMSV000502SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap map = (HashMap)outputMap.get(KEY_ZMSV000502_SC);
		ArrayList list = (ArrayList)map.get(KEY_EZM0311B010CBSMSG1LIST);
		
		StringBuffer dateChge = new StringBuffer(ARRAY_LIST_OPEN);
		for (int i = 0; i < list.size(); i++) 
		{
			HashMap record = (HashMap)list.get(i);
			dateChge.append(i < 1 ? System.getProperty(KEY_LINE_SEPARATOR) : SP_COMMA + System.getProperty(KEY_LINE_SEPARATOR))
			.append(ARRAY_LIST_OPEN)
			.append(SINGLE_QUOTE).append((String)record.get("sys_param_nm")).append(SINGLE_QUOTE_COMMA)
			.append(SINGLE_QUOTE).append((String)record.get("sys_param_sette_value_1")).append(SINGLE_QUOTE)
			.append(ARRAY_LIST_CLOSE);
		}
		dateChge.append(System.getProperty(KEY_LINE_SEPARATOR) + ARRAY_LIST_CLOSE);

		bean[0].sendMessageString(ZMW06901SFConst.DATE_CHGE, X31CWebConst.DATABEAN_SET_VALUE, dateChge.toString());
		
		return bean;
	}
	
	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
}