/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0223_FUSV0223OPDBMapper
*	ソースファイル名：FUSV0223_FUSV0223OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年04月12日
*＜機能概要＞
*	BP（eoモバイル合計一意照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/04/12	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 com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0223_FUSV0223OPDBMapper
{

	/** FUSV022301CC */
	public static final String FUSV022301CC = "FUSV022301CC";
	/** 親契約識別コード */
	public static final String SKBT_CD = "skbt_cd";
	/** 親契約識別コード */
	public static final String SKBT_CD_ST = "親契約識別コード";
	/** サービス契約番号 */
	public static final String KEY_SVC_KEI_NO = "kk0081_svc_kei_no";
	/** サービス契約番号 */
	public static final String SVC_KEI_NO_ST = "サービス契約番号";
	/** サービス契約内訳番号 */
	public static final String SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** サービス契約内訳番号 */
	public static final String SVC_KEI_UCWK_ST = "サービス契約内訳番号";
	/** 料金コースコードリスト */
	public static final String CCLIST_PCRS_CD = "cclist_pcrs_cd";
	/** 料金コースコードリスト */
	public static final String CCLIST_PCRS_CD_ST = "料金コースコードリスト";
	/** 内訳料金コースコードリスト */
	private static final String CCLIST_UCWK_PCRS_CD = "cclist_ucwk_pcrs_cd";
	/** 内訳料金コースコードリスト */
	private static final String CCLIST_UCWK_PCRS_CD_ST = "内訳料金コースコードリスト";
	/** 契約中料金コースコード */
	private static final String KEY_KEI_PCRS_CD = "kei_pcrs_cd";
	/** 契約中料金コースコード */
	private static final String KEI_PCRS_CD = "契約中料金コースコード";
	/** 料金コースコード */
	private static final String KEY_PCRS_CD = "pcrs_cd";
	/** 料金コースコード */
	private static final String PCRS_CD = "料金コースコード";
	/** オプションチャンネル重複リスト */
	private static final String OPCH_CHFK_LIST = "opch_chfk_list";
	/** オプションチャンネル重複リスト */
	private static final String OPCH_CHFK_LIST_ST = "オプションチャンネル重複リスト";
	/** 契約台数 */
	private static final String KEI_DAI = "kei_dai";
	/** 契約台数 */
	private static final String KEI_DAI_ST = "契約台数";
	/** オプションサービスコード */
	private static final String OP_SVC_CD = "op_svc_cd";
	/** オプションサービスコード */
	private static final String OP_SVC_CD_ST = "オプションサービスコード";
	/** オプションサービス名 */
	private static final String OP_SVC_NM = "op_svc_nm";
	/** オプションサービス名 */
	private static final String OP_SVC_NM_ST = "オプションサービス名";
	/** "" */
	private static final String NON_STRING = JFUStrConst.EMPTY;
	/** マップキー 機能コード */
	private static final String MAPKEY_FUNC_CODE = "func_code";

	/**
	 * コンストラクタ
	 */
	public FUSV0223_FUSV0223OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV022301CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if (bean == null)
		{
			return null;
		}
		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);
		// 親契約識別コード → オプションチャンネル重複一覧照会コンポーネント部品マップ.親契約識別コード
		parentMap.put(SKBT_CD, bean[0].sendMessageString(SKBT_CD_ST, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → オプションチャンネル重複一覧照会コンポーネント部品マップ.サービス契約番号
		parentMap.put(KEY_SVC_KEI_NO, bean[0].sendMessageString(SVC_KEI_NO_ST, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray(CCLIST_UCWK_PCRS_CD_ST);
		if (parentMap.containsKey(CCLIST_UCWK_PCRS_CD))
		{
			list = (ArrayList)parentMap.get(CCLIST_UCWK_PCRS_CD);
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}
				// 内訳料金コースコードリスト.サービス契約内訳番号 →
					//オプションチャンネル重複一覧照会コンポーネント部品マップ.内訳料金コースコードリスト.サービス契約内訳番号
				if (subbean != null)
				{
					childMap.put(SVC_KEI_UCWK_NO, subbean.sendMessageString(SVC_KEI_UCWK_ST, X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 内訳料金コースコードリスト.契約中料金コースコード →
					//オプションチャンネル重複一覧照会コンポーネント部品マップ.内訳料金コースコードリスト.契約中料金コースコード
				if (subbean != null)
				{
					childMap.put(KEY_KEI_PCRS_CD, subbean.sendMessageString(KEI_PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 内訳料金コースコードリスト.料金コースコード →
					//オプションチャンネル重複一覧照会コンポーネント部品マップ.内訳料金コースコードリスト.料金コースコード
				if (subbean != null)
				{
					childMap.put(KEY_PCRS_CD, subbean.sendMessageString(PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));
				}
				list.add(childMap);
			}
		}
		parentMap.put(CCLIST_UCWK_PCRS_CD, list);

		outputMap.put(FUSV022301CC, parentMap);
		return outputMap;

	}

	/**
	 * 下りマッピングをします。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV022301CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV022301CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV022301CC);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV022301CC_opch_chfk_list_EKK0821B002CBSMsg1List = bean[0].getDataBeanArray(OPCH_CHFK_LIST_ST);
		childList = null;
		if (listFUSV022301CC_opch_chfk_list_EKK0821B002CBSMsg1List != null && parentMap != null && parentMap.containsKey(OPCH_CHFK_LIST))
		{
			childList = (ArrayList)parentMap.get(OPCH_CHFK_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV022301CC_opch_chfk_list_EKK0821B002CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV022301CC_opch_chfk_list_EKK0821B002CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV022301CC_opch_chfk_list_EKK0821B002CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// オプションチャンネル重複リスト.契約台数 ←
				//					オプションチャンネル重複一覧照会コンポーネント部品マップ.オプションチャンネル重複リスト.契約台数
				if (childMap != null)
				{
					subbean.sendMessageString(KEI_DAI_ST, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(KEI_DAI));
				}
				else
				{
					subbean.sendMessageString(KEI_DAI_ST, X31CWebConst.DATABEAN_SET_VALUE, NON_STRING);
				}
				// オプションチャンネル重複リスト.オプションサービスコード ←
				//					オプションチャンネル重複一覧照会コンポーネント部品マップ.オプションチャンネル重複リスト.オプションサービスコード
				if (childMap != null)
				{
					subbean.sendMessageString(OP_SVC_CD_ST, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD));
				}
				else
				{
					subbean.sendMessageString(OP_SVC_CD_ST, X31CWebConst.DATABEAN_SET_VALUE, NON_STRING);
				}
				// オプションチャンネル重複リスト.オプションサービス名 ←
				//					オプションチャンネル重複一覧照会コンポーネント部品マップ.オプションチャンネル重複リスト.オプションサービス名
				if (childMap != null)
				{
					subbean.sendMessageString(OP_SVC_NM_ST, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_NM));
				}
				else
				{
					subbean.sendMessageString(OP_SVC_NM_ST, X31CWebConst.DATABEAN_SET_VALUE, NON_STRING);
				}
			}
		}
		return bean;
	}

}
