/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0339_KKSV0339OPDBMapper
*	ソースファイル名：KKSV0339_KKSV0339OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年10月24日
*＜機能概要＞
*	BP（現サービス情報照会OP）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/24	Fujitsu		新規作成
*	v3.00.00	2012/08/21	FJ) 団		【ANK-0046-01-00】ＩＰｖ６対応
*	v4.00.00	2012/09/07	FJ) 団		【ANK-0546-02-00】イオスマートリンク対応
*	v4.01.00	2013/04/15	FJ)強矢		SGY-2013-0000042 メーリングリストドメインの業パラ取得対応
*
**********************************************************************/

package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * DataBean-BPマッピングをする。
 * @author FJ
 * 
 */
public class KKSV0339_KKSV0339OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public KKSV0339_KKSV0339OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @return HashMap
	 */
	public void setKKSV033901CC(HashMap<?, ?> reqMap, HashMap<String, HashMap<String, Object>> outputMap)
	{
		if (reqMap == null)
		{
			return;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// サービス契約番号 → ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		
		outputMap.put("KKSV033901CC", parentMap);
	}

	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @return HashMap
	 */
	public void setKKSV0339WORK01(HashMap<?, ?> reqMap, HashMap<String, HashMap<String, Object>> outputMap)
	{
		if (reqMap == null)
		{
			return;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// オプション種別 → オプション種別
		parentMap.put("opshon_shubt", reqMap.get("OPSHON_SHUBT"));
		// 情報検索条件フラグ → 情報検索条件フラグ
		parentMap.put("search_flg", reqMap.get("SEARCH_FLG"));
		// 出力項目フラグ → 出力項目フラグ
		parentMap.put("out_flg", reqMap.get("OUT_FLG"));

		outputMap.put("KKSV0339WORK01", parentMap);

	}

	/**
	 * 下りマッピング
	 * @param reqMap 処理要求電文
	 * @param outputMap 検索結果
	 * @param sectorData セクタデータ
	 */
	@SuppressWarnings("unchecked")
	public void getKKSV033901CC(HashMap<?, ?> reqMap, HashMap<String, HashMap<String, Object>> outputMap, HashMap<String, Object> sectorData)
	{
		HashMap<String, Object> parentMap = null;
		if (outputMap.containsKey("KKSV033901CC"))
		{
			parentMap = outputMap.get("KKSV033901CC");
		}
		else
		{
			return;
		}
		
		// オプション種別
		String op_sbt = (String)reqMap.get("OPSHON_SHUBT");
		
		// サービス契約内訳リスト
		if (parentMap.containsKey("svc_kei_ucwk_list"))
		{
			ArrayList<HashMap<String, Object>> m1 = (ArrayList<HashMap<String, Object>>)sectorData.get("M1");
			
			List<HashMap<String, Object>> svc_kei_ucwk_list = (ArrayList<HashMap<String, Object>>)parentMap.get("svc_kei_ucwk_list");
			
			for (int i = 0; i < svc_kei_ucwk_list.size(); i++)
			{
				// オプション種別が"0010"（認証ID）の場合
				if ("0010".equals(op_sbt))
				{
					HashMap<String, Object> m1Map = new HashMap<String, Object>();
					
					// M1.ISP認証ID ← サービス契約内訳リスト.ISP認証ID
					m1Map.put("NNSHOU_ID", svc_kei_ucwk_list.get(i).get("isp_ninsho_id"));
					// M1.認証ＩＤパスワード ← サービス契約内訳リスト.ISP認証IDパスワード
					m1Map.put("NNSHOU_ID_PSWD", svc_kei_ucwk_list.get(i).get("isp_ninsho_id_pwd"));
					m1.add(m1Map);
				}
			}
		}
		
		// オプションサービス契約リスト
		if (parentMap.containsKey("op_svc_kei_list"))
		{
			ArrayList<HashMap<String, Object>> m6 = (ArrayList<HashMap<String, Object>>)sectorData.get("M6");
			ArrayList<HashMap<String, Object>> m9 = (ArrayList<HashMap<String, Object>>)sectorData.get("M9");
			ArrayList<HashMap<String, Object>> m11 = (ArrayList<HashMap<String, Object>>)sectorData.get("M11");
			
			List<HashMap<String, Object>> op_svc_kei_list = (ArrayList<HashMap<String, Object>>)parentMap.get("op_svc_kei_list");
			
			for (int i = 0; i < op_svc_kei_list.size(); i++)
			{
				// オプション種別が"0060"（SOHOパック１０）の場合
				if ("0060".equals(op_sbt))
				{
					HashMap<String, Object> m6Map = new HashMap<String, Object>();
					
					// M6.サービス契約番号 ← オプションサービス契約リスト.サービス契約番号
					m6Map.put("OKYAKSM_ID", op_svc_kei_list.get(i).get("svc_kei_no"));
					m6.add(m6Map);
				}
				
				// オプション種別が"0170"（有害サイトブロック）の場合
				if ("0170".equals(op_sbt))
				{
					HashMap<String, Object> m9Map = new HashMap<String, Object>();
					
					// M9.オプションサービス契約番号 ← オプションサービス契約リスト.オプションサービス契約番号
					m9Map.put("OPSHON_TUBN", op_svc_kei_list.get(i).get("op_svc_kei_no"));
					m9.add(m9Map);
				}
				
				// "0320"（ダイヤルアップ接続）の場合
				if ("0320".equals(op_sbt))
				{
					// プラン開始年月日
					String plan_staymd = (String)op_svc_kei_list.get(i).get("plan_staymd");
					// ダイヤルアップ接続用認証ID
					String dupcon_ninsho_id = (String)op_svc_kei_list.get(i).get("dupcon_ninsho_id");
					
					// サブオプションサービス契約リスト
					List<HashMap<String, Object>> sbop_svc_kei_list =
						(ArrayList<HashMap<String, Object>>)op_svc_kei_list.get(i).get("sbop_svc_kei_list");
					
					if (0 < sbop_svc_kei_list.size())
					{
						for (int j = 0; j < sbop_svc_kei_list.size(); j++)
						{
							HashMap<String, Object> m11Map = new HashMap<String, Object>();
							
							// M11.ダイヤルアッププラン変更日 ← オプションサービス契約リスト.プラン開始年月日
							m11Map.put("DUP_PRN_HNKU_B", plan_staymd);
							// M11.ISP認証ID ← オプションサービス契約リスト.ダイヤルアップ接続用認証ID
							m11Map.put("NNSHOU_ID", dupcon_ninsho_id);
							// M11.ダイヤルアップオプション詳細種別 ← サブオプションサービス契約リスト.サブオプションサービスコード
							m11Map.put("DUP_OPSHON_SHOSI_SHUBT", sbop_svc_kei_list.get(j).get("sbop_svc_cd"));
							m11.add(m11Map);
						}
					}
					else
					{
						HashMap<String, Object> m11Map = new HashMap<String, Object>();
						
						// M11.ダイヤルアッププラン変更日 ← オプションサービス契約リスト.プラン開始年月日
						m11Map.put("DUP_PRN_HNKU_B", plan_staymd);
						// M11.ISP認証ID ← オプションサービス契約リスト.ダイヤルアップ接続用認証ID
						m11Map.put("NNSHOU_ID", dupcon_ninsho_id);
						// M11.ダイヤルアップオプション詳細種別
						m11Map.put("DUP_OPSHON_SHOSI_SHUBT", "");
						m11.add(m11Map);
					}
				}
			}
		}
		
		// オプションサービス契約＜ISP＞リスト
		if (parentMap.containsKey("op_svc_kei_isp_list"))
		{
			// メーリングリストドメイン
			String mllist_domain_nm = (String)parentMap.get("mllist_domain_nm");
			
			ArrayList<HashMap<String, Object>> m2 = (ArrayList<HashMap<String, Object>>)sectorData.get("M2");
			ArrayList<HashMap<String, Object>> m3 = (ArrayList<HashMap<String, Object>>)sectorData.get("M3");
			ArrayList<HashMap<String, Object>> m4 = (ArrayList<HashMap<String, Object>>)sectorData.get("M4");
			ArrayList<HashMap<String, Object>> m5 = (ArrayList<HashMap<String, Object>>)sectorData.get("M5");
			ArrayList<HashMap<String, Object>> m7 = (ArrayList<HashMap<String, Object>>)sectorData.get("M7");
			ArrayList<HashMap<String, Object>> m8 = (ArrayList<HashMap<String, Object>>)sectorData.get("M8");
			ArrayList<HashMap<String, Object>> m10 = (ArrayList<HashMap<String, Object>>)sectorData.get("M10");
			
			List<HashMap<String, Object>> op_svc_kei_isp_list = (ArrayList<HashMap<String, Object>>)parentMap.get("op_svc_kei_isp_list");
			
			for (int i = 0; i < op_svc_kei_isp_list.size(); i++)
			{
				// オプション種別が"0020"（Eメール）の場合
				if ("0020".equals(op_sbt))
				{
					HashMap<String, Object> m2Map = new HashMap<String, Object>();
					
					// M2.POPID ← オプションサービス契約＜ISP＞リスト.POPID
					m2Map.put("MR_POP_ID", op_svc_kei_isp_list.get(i).get("pop_id"));
					// M2.メールアドレス ← オプションサービス契約＜ISP＞リスト.メールアドレス
					m2Map.put("MR_ADRS", op_svc_kei_isp_list.get(i).get("mlad"));
					// M2.メールアドレス変更年月日 ← オプションサービス契約＜ISP＞リスト.メールアドレス変更年月日
					m2Map.put("MR_ADRS_KUSN_B", op_svc_kei_isp_list.get(i).get("mlad_chge_ymd"));
					// M2.容量 ← オプションサービス契約＜ISP＞リスト.容量
					m2Map.put("MR_YURYOU", op_svc_kei_isp_list.get(i).get("capa"));
					// M2.エイリアス ← オプションサービス契約＜ISP＞リスト.エイリアス
					m2Map.put("MR_EIRAS", op_svc_kei_isp_list.get(i).get("alias"));
					// M2.エイリアス変更年月日 ← オプションサービス契約＜ISP＞リスト.エイリアス変更年月日
					m2Map.put("MR_EIRAS_KUSN_B", op_svc_kei_isp_list.get(i).get("alias_chge_ymd"));
					// M2.ウイルスチェック ← オプションサービス契約＜ISP＞リスト.ウイルスチェック
					m2Map.put("MR_UIRSCHEK", op_svc_kei_isp_list.get(i).get("mr_uirschek"));
					m2.add(m2Map);
				}
				
				// オプション種別が"0030"（Myホームページ）の場合
				if ("0030".equals(op_sbt))
				{
					HashMap<String, Object> m3Map = new HashMap<String, Object>();
					
					// M3.容量 ← オプションサービス契約＜ISP＞リスト.容量
					m3Map.put("WEB_YURYOU", op_svc_kei_isp_list.get(i).get("capa"));
					// M3.WebID ← オプションサービス契約＜ISP＞リスト.WebID
					m3Map.put("WEB_ID", op_svc_kei_isp_list.get(i).get("web_id"));
					
					// M3.URL ← オプションサービス契約＜ISP＞リスト.URL(ドメイン) + URL(アカウント)
					String web_url = "";
					String url_domain = (String)op_svc_kei_isp_list.get(i).get("url_domain");
					String url_account = (String)op_svc_kei_isp_list.get(i).get("url_account");
					if (url_domain != null && url_account != null)
					{
						web_url = url_domain + url_account;
					}
					m3Map.put("WEB_URL", web_url);
					
					// M3.アクセス分析 ← オプションサービス契約＜ISP＞リスト.アクセス分析
					m3Map.put("WEB_ACCS_BNSK", op_svc_kei_isp_list.get(i).get("web_accs_bnsk"));
					m3.add(m3Map);
				}
				
				// オプション種別が"0040"（メーリングリスト）の場合
				if ("0040".equals(op_sbt))
				{
					HashMap<String, Object> m4Map = new HashMap<String, Object>();
					
					String ml_mrng_rst_mi = "";
					
					// M4.メーリングリスト名 ← オプションサービス契約＜ISP＞リスト.メーリングリスト名
					String mllist_nm = (String)op_svc_kei_isp_list.get(i).get("mllist_nm");
					if (mllist_nm != null && !"".equals(mllist_nm))
					{
						if (mllist_domain_nm != null && !"".equals(mllist_domain_nm))
						{
							// メーリングリスト名にメーリングリストドメインを付加する
							ml_mrng_rst_mi = mllist_nm + mllist_domain_nm;
						}
					}
					
					// M4.メーリングリスト名
					m4Map.put("ML_MRNG_RST_MI", ml_mrng_rst_mi);
					m4.add(m4Map);
				}
				
				// オプション種別が"0050"（固定グローバルIPアドレス）の場合
				if ("0050".equals(op_sbt))
				{
					HashMap<String, Object> m5Map = new HashMap<String, Object>();
					
					// M5.固定IPアドレス ← オプションサービス契約＜ISP＞リスト.固定IPアドレス
					m5Map.put("IP_ADRS", op_svc_kei_isp_list.get(i).get("kotei_ip_ad"));
					m5.add(m5Map);
				}
				
				// オプション種別が"0110"（ダイヤルパッド）の場合
				if ("0110".equals(op_sbt))
				{
					HashMap<String, Object> m7Map = new HashMap<String, Object>();
					
					// M7.ダイヤルパッドID ← オプションサービス契約＜ISP＞リスト.ダイヤルパッドID
					m7Map.put("DPJ_DIYR_PD_ID", op_svc_kei_isp_list.get(i).get("dpad_id"));
					// M7.ダイヤルパッドISPID ← オプションサービス契約＜ISP＞リスト.ダイヤルパッドISPID
					m7Map.put("DPJ_ISP_ID", op_svc_kei_isp_list.get(i).get("dpad_isp_id"));
					// M7.ダイヤルパッドMAPID ← オプションサービス契約＜ISP＞リスト.ダイヤルパッドMAPID
					m7Map.put("DPJ_MAP_ID", op_svc_kei_isp_list.get(i).get("dpad_mapid"));
					m7.add(m7Map);
				}
				
				// オプション種別が"0160"（マルチセッション）の場合
				if ("0160".equals(op_sbt))
				{
					HashMap<String, Object> m8Map = new HashMap<String, Object>();
					
					// M8.セッション数 ← オプションサービス契約＜ISP＞リスト.セッション数
					m8Map.put("SSHON_SU", op_svc_kei_isp_list.get(i).get("session_cnt"));
					// M8.マルチセッション用初期認証IDパスワード ← オプションサービス契約＜ISP＞リスト.マルチセッション用初期認証IDパスワード
					m8Map.put("NNSHOU_ID_SHOK_PSWD", op_svc_kei_isp_list.get(i).get("mltise_shk_ninsho_id_pwd"));
					// M8.マルチセッション用認証ID ← オプションサービス契約＜ISP＞リスト.マルチセッション用認証ID
					m8Map.put("NNSHOU_ID", op_svc_kei_isp_list.get(i).get("mltise_ninsho_id"));
					// M8.マルチセッション用認証IDパスワード ← オプションサービス契約＜ISP＞リスト.マルチセッション用認証IDパスワード
					m8Map.put("NNSHOU_ID_PSWD", op_svc_kei_isp_list.get(i).get("mltise_ninsho_id_pwd"));
					m8.add(m8Map);
				}
				
				// オプション種別が"0190"（グループコミュニティ）の場合
				if ("0190".equals(op_sbt))
				{
					HashMap<String, Object> m10Map = new HashMap<String, Object>();
					
					// M10.容量 ← オプションサービス契約＜ISP＞リスト.容量
					m10Map.put("WEB_YURYOU", op_svc_kei_isp_list.get(i).get("capa"));
					// M10.WISHオーナーID ← オプションサービス契約＜ISP＞リスト.WISHオーナーID
					m10Map.put("WEB_URL", op_svc_kei_isp_list.get(i).get("wish_ownr_id"));
					m10.add(m10Map);
				}

			}
		}
		ArrayList<HashMap<String, Object>> m12 = (ArrayList<HashMap<String, Object>>)sectorData.get("M12");
		if ("0350".equals(op_sbt))
		{
			List<HashMap<String, Object>> op_svc_kei_list = (ArrayList<HashMap<String, Object>>)parentMap.get("op_svc_kei_list");
			HashMap<String, Object> m12Map = new HashMap<String, Object>();
			m12Map.put("IPV6_OPSHON_KIYK_FLG", 0 < op_svc_kei_list.size() ? "1" : "0");
			m12.add(m12Map);
		}
		
		ArrayList<HashMap<String, Object>> m13 = (ArrayList<HashMap<String, Object>>)sectorData.get("M13");
		if ("0360".equals(op_sbt))
		{
			List<HashMap<String, Object>> op_svc_kei_list = (ArrayList<HashMap<String, Object>>)parentMap.get("op_svc_kei_list");
			HashMap<String, Object> m13Map = new HashMap<String, Object>();
			m13Map.put("FEMTO_CELL_KIYK_FLG", 0 < op_svc_kei_list.size() ? "1" : "0");
			m13.add(m13Map);
		}
		
		ArrayList<HashMap<String, Object>> m14 = (ArrayList<HashMap<String, Object>>)sectorData.get("M14");
		if ("0370".equals(op_sbt))
		{
			List<HashMap<String, Object>> op_svc_kei_list = (ArrayList<HashMap<String, Object>>)parentMap.get("op_svc_kei_list");
			HashMap<String, Object> m14Map = new HashMap<String, Object>();
			m14Map.put("SMART_LINK_PREMIUM_KIYK_UM_FLG", 0 < op_svc_kei_list.size() ? "1" : "0");
			m14.add(m14Map);
		}

	}

	/**
	 * 下りマッピング
	 * @param resMap 処理応答電文
	 * @param outputMap
	 * @return HashMap
	 */
	public void getKKSV0339WORK02(HashMap<String, Object> resMap, HashMap<String, HashMap<String, Object>> outputMap)
	{
		HashMap<String, Object> parentMap = null;
		if (outputMap.containsKey("KKSV0339WORK02"))
		{
			parentMap = outputMap.get("KKSV0339WORK02");
		}
		else
		{
			return;
		}

		// 返却結果コード ← 現サービス情報照会作業項目マップ02.返却結果コード
		resMap.put("WDA_COM_RESULT", (String)parentMap.get("return_result_cd"));
	}

}
