/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JKKFixipv6adCC
 *   ソースファイル名：JKKFixipv6adCC.java
 *   作成者          ：FJ
 *   日付            ：2012年05月01日
 *＜機能概要＞
 *   ＩＰｖ６アドレス払出機能ビジネスロジック
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v3.00       2012/05/01   FJ)今西     新規作成
 *   v3.01       2012/08/27   FJ)砂川     【ST1-2012-0000378】未使用IPv6アドレスが枯渇している場合の対応
 *   v4.00       2012/11/22   FJ)近藤     【IT2-2012-0001757】有効なサービス契約回線内訳番号を取得する対応
 *   v4.01       2013/01/15   FJ)砂川     【ST4-2013-0000023】性能障害対応
 *
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.KKSV0486_KKSV0486OP_AddIpv6Info;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0331A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0331A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0481B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0481B010CBSMsg1List;

public class JKKFixipv6adCC extends AbstractCommonComponent
{

	//起点変電所コード
	private String kiten_hdsho_cd = null;
	//集約局コード
	private String shyakk_cd = null;
	//中心局コード
	private String chuKK_cd = null;
	/** 返却メッセージID */
	private static final String RTN_MSG_ID = KKSV0486_KKSV0486OP_AddIpv6Info.RTN_MSG_ID;	// "rtn_msg_id";
	
	/**
	 * ＩＰｖ６アドレスを払出主処理<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite runGetIpv6ad(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		
		// 作業用マップ
		HashMap<String, Object> workMap = new HashMap<String, Object>();
		
		HashMap inMap = null;
		kiten_hdsho_cd = null;
		shyakk_cd = null;
		chuKK_cd = null;
		
		//IPv6アドレス払出結果
		IRequestParameterReadWrite paramV6 = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		
		//＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
		//回線対象サービス契約一覧照会
		//＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
		HashMap<String, Object> ekk0241B001_map = getEKK0241B001Map(handle, param, fixedText, workMap);
		workMap.put("ekk0241B001_map", ekk0241B001_map);
		
		//起点変電所コード/集約局コード判定
		
		//回線対象サービス契約一覧照会の結果起点変電所コードが取れている場合
		if(ekk0241B001_map != null && ekk0241B001_map.get("kiten_hdsho_cd") != null && !"".equals(ekk0241B001_map.get("kiten_hdsho_cd"))){
			//起点変電所コード取得
			kiten_hdsho_cd =  (String) ekk0241B001_map.get("kiten_hdsho_cd");
		}else if (ekk0241B001_map != null && ekk0241B001_map.get("shyakk_cd") != null && !"".equals(ekk0241B001_map.get("shyakk_cd"))) {//集約局コードが取れている場合
			//集約局コード保持
			shyakk_cd = (String) ekk0241B001_map.get("shyakk_cd");
			workMap.put("shyakk_cd", ekk0241B001_map.get("shyakk_cd"));

		}
		
		//起点変電所コード一意照会マップ
		HashMap<String, Object> ezm0331A010_map = null;
		//集約局コード一意照会マップ
		HashMap<String, Object> ezm0341A010_map = null;
		
		//起点変電所コード、集約局コードのどちらか取れている場合のみ処理を続く
		if((kiten_hdsho_cd != null && !("").equals(kiten_hdsho_cd)) || (shyakk_cd != null && !("").equals(shyakk_cd))){
			//起点変電所コードが取れている場合は、それをキーに集約局コードを取得
			if(!("").equals(kiten_hdsho_cd) && (kiten_hdsho_cd != null)){
				
				//＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
				//起点変電所コード一意照会(集約局コード取得)
				//＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
				ezm0331A010_map = getEZM0331A010Map(handle, param, fixedText, workMap);
				workMap.put("ezm0331A010_map", ezm0331A010_map);
				
				//起点変電所コード一覧紹介の結果、集約局コードが取れた場合
				if (ezm0331A010_map != null && !("").equals(ezm0331A010_map.get("shyakk_cd"))) {
					// IT障害対応 START 2012-6-1
					// 集約局コード保持
//						shyakk_cd = (String) ezm0331A010_map.get("shyakk_cd");
					workMap.put("shyakk_cd", (String) ezm0331A010_map.get("shyakk_cd"));
					// IT障害対応 END 2012-6-1
				}
			}
		}
		// 集約局コードと起点変電所コードのいずれもない場合、予約登録のメッセージを返却します。
		if((shyakk_cd == null || (("").equals(shyakk_cd))) && (kiten_hdsho_cd == null || ("").equals(kiten_hdsho_cd))){
//				inMap.put(RTN_MSG_ID , "EKB9390--Q");
			// 結果を詰めるマップを取得。
			HashMap dataMap = new HashMap();
			ArrayList dataList =  new ArrayList();

			/* 業務データ設定 */
			dataMap = (HashMap)param.getData(fixedText);
			if (dataMap == null) {
				dataMap = new HashMap();
				param.setData(fixedText, dataMap);
			}
			HashMap childMap = new HashMap();
			dataList.add(childMap);
			dataMap.put("ipv6_ip_ad_list", dataList);
			return param;
		}
		
		//＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
		//集約局コード一意照会(中心局コード取得)
		//＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
		 ezm0341A010_map = getEZM0341A010Map(handle, param, fixedText, workMap);
		 workMap.put("ezm0341A010_map", ezm0341A010_map);
		 
		 //中心局コードが取れた場合
		 if (ezm0341A010_map != null && ezm0341A010_map.get("chuskk_cd") != "") {
			 //中心局コード保持
			 chuKK_cd = (String) ezm0341A010_map.get("chuskk_cd");
			 workMap.put("chuKK_cd", chuKK_cd);
		 }
		 //＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
		 //IPv6アドレス一覧照会
		 //＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
		  paramV6 = getEZM0481B010Map(handle, param, fixedText, workMap);

		//ST1-2012-0000378b ADD START
		HashMap Fixipv6adCC = (HashMap)paramV6.getData(fixedText);
		if(null != Fixipv6adCC && null != Fixipv6adCC.get("ipv6_ip_ad_list"))
		{
			ArrayList ipv6_ip_ad_list = (ArrayList)Fixipv6adCC.get("ipv6_ip_ad_list");
			if(ipv6_ip_ad_list.size() > 0)
			{
				HashMap childMap = (HashMap)ipv6_ip_ad_list.get(0);
				if(null != childMap && null != childMap.get("ipv6_ip_ad") && !("".equals(childMap.get("ipv6_ip_ad"))))
				{
					return paramV6;
				}
			}
		}
			// 結果を詰めるマップを取得。
		HashMap dataMap = new HashMap();
		ArrayList dataList =  new ArrayList();

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		HashMap childMap = new HashMap();
		dataList.add(childMap);
		dataMap.put("ipv6_ip_ad_list", dataList);
		return param;
		//ST1-2012-0000378b ADD END
	}

	
	/**
	 * 回線契約対象サービス一覧照会S-IF呼出処理。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param 業務データ取得用I/F
	 * @param fixedText ユーザ定義文字列
	 * @param workMap 作業用マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception 
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> getEKK0241B001Map(SessionHandle handle, IRequestParameterReadWrite param, 
			String fixedText, HashMap<String, Object> workMap) throws Exception
	{

		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgEKK0241B001(param, fixedText, workMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		/* ◇下りマッピング処理 */
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		resultMap = editResultRPEKK0241B001(result, param, fixedText);
		
		return resultMap;
	}
	
	

	/**
	 * 起点変電所コード一覧照会S-IF呼出処理。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param 業務データ取得用I/F
	 * @param fixedText ユーザ定義文字列
	 * @param workMap 作業用マップ
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> getEZM0331A010Map(SessionHandle handle, IRequestParameterReadWrite param, 
			String fixedText, HashMap<String, Object> workMap) throws Exception
	{

		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgEZM0331A010(param, fixedText, workMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		/* ◇下りマッピング処理 */
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		resultMap = editResultRPEZM0331A010(result, param, fixedText);
		
		return resultMap;
	}
	
	
	/**
	 * 集約局コード一覧照会S-IF呼出処理。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param 業務データ取得用I/F
	 * @param fixedText ユーザ定義文字列
	 * @param workMap 作業用マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private HashMap<String, Object> getEZM0341A010Map(SessionHandle handle, IRequestParameterReadWrite param, 
			String fixedText, HashMap<String, Object> workMap) throws Exception
			{

		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgEZM0341A010(param, fixedText, workMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		/* ◇下りマッピング処理 */
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		resultMap = editResultRPEZM0341A010(result, param, fixedText);
		
		return resultMap;
	}
	
	
	/**
	 * 未使用のIPv6アドレス一覧照会S-IF呼出処理。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param 業務データ取得用I/F
	 * @param fixedText ユーザ定義文字列
	 * @param workMap 作業用マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private IRequestParameterReadWrite getEZM0481B010Map(SessionHandle handle, IRequestParameterReadWrite param, 
			String fixedText, HashMap<String, Object> workMap) throws Exception
			{

		/* ◇上りマッピング処理 */
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = editInMsgEZM0481B010(param, fixedText, workMap);

		/* ◇ＳＣ呼出実行 */
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		/* ◇下りマッピング処理 */
		param = editResultRPEZM0481B010(result, param, fixedText);
		
		return param;
	}
	


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービス契約回線内訳一覧照会S-IF実行
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsgEKK0241B001(IRequestParameterReadOnly param, String fixedText, HashMap<String, Object> workMap)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);
		
		CAANMsg template = new CAANMsg(EKK0241B001CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0241B001CBSMsg.TEMPLATEID, "EKK0241B001");

		// v4.00 2012/11/22 IT2-2012-0001757 MOD START
		// 機能コード（固定：1）
//		template.set(EKK0241B001CBSMsg.FUNC_CODE, "1");
		// 機能コード（固定：2）
		template.set(EKK0241B001CBSMsg.FUNC_CODE, "2");
		// v4.00 2012/11/22 IT2-2012-0001757 MOD END

		// サービスインターフェイス共通部の設定
		setCommonTemplate(param, template);		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
//		
//		if (inMap != null) {
//			// 機能コード
//			template.set(EKK0241B001CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}

		// サービス契約回線内訳一覧照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("key_svc_kei_no") == null || "".equals(inMap.get("key_svc_kei_no"))) {
			template.setNull(EKK0241B001CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0241B001CBSMsg.KEY_SVC_KEI_NO, (String) inMap.get("key_svc_kei_no"));
		}
		
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>起点変電所コード一意照会S-IF実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEZM0331A010(IRequestParameterReadOnly param , String fixedText, HashMap<String, Object> workMap)
	throws RequestParameterException {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// 回線対象サービス契約一覧照会結果マップの取り出し
		HashMap<String, Object> ekk0241B001_map = (HashMap)workMap.get("ekk0241B001_map");
		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);
		
		CAANMsg template = new CAANMsg(EZM0331A010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EZM0331A010CBSMsg.TEMPLATEID, "EZM0331A010");

		// 機能コード（デフォルト：１）
		template.set(EZM0331A010CBSMsg.FUNC_CODE, "1");

		// サービスインターフェイス共通部の設定
		setCommonTemplate(param, template);		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);

		
//		if (inMap != null) {
//			// 機能コード
//			template.set(EZM0331A010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}

		// 起点変電所コード一意照会マップ.ＫＥＹ＿起点変電所コード → ＫＥＹ＿起点変電所コード
		if (ekk0241B001_map == null || ekk0241B001_map.get("kiten_hdsho_cd") == null || "".equals(ekk0241B001_map.get("kiten_hdsho_cd"))) {
			template.setNull(EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD);
		} else {
			template.set(EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD, (String) ekk0241B001_map.get("kiten_hdsho_cd"));
		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>集約局コード一意照会S−IF実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEZM0341A010(IRequestParameterReadOnly param , String fixedText,HashMap<String, Object> workMap)
	throws RequestParameterException {


		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		//起点変電所コード一覧紹介の結果の取り出し
		HashMap<String, Object> ezm0331A010_map = (HashMap)workMap.get("ezm0331A010_map");
		
		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);
		
		CAANMsg template = new CAANMsg(EZM0341A010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EZM0341A010CBSMsg.TEMPLATEID, "EZM0341A010");

		// 機能コード（デフォルト：１）
		template.set(EZM0341A010CBSMsg.FUNC_CODE, "1");
		
		// サービスインターフェイス共通部の設定
		setCommonTemplate(param, template);		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);

		// IT障害対応 START 2012-6-1
		// 集約局コード一意照会マップ.ＫＥＹ＿集約局コード → ＫＥＹ＿集約局コード
//		if (ezm0331A010_map == null || ezm0331A010_map.get("shyakk_cd") == null || "".equals(ezm0331A010_map.get("shyakk_cd"))) {
//			template.setNull(EZM0341A010CBSMsg.KEY_SHYAKK_CD);
//		} else {
//			template.set(EZM0341A010CBSMsg.KEY_SHYAKK_CD, (String)ezm0331A010_map.get("shyakk_cd"));
//		}
		
		if (workMap == null || workMap.get("shyakk_cd") == null || "".equals(workMap.get("shyakk_cd"))) {
			template.setNull(EZM0341A010CBSMsg.KEY_SHYAKK_CD);
		} else {
			template.set(EZM0341A010CBSMsg.KEY_SHYAKK_CD, (String)workMap.get("shyakk_cd"));
		}
			
		// IT障害対応 END 2012-6-1
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	
	
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>IPv6アドレス一覧照会S−IF実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> editInMsgEZM0481B010(IRequestParameterReadOnly param , String fixedText,HashMap<String, Object> workMap)
	throws RequestParameterException {


	HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// メッセージ共通部の設定
		setCommonParamMap(param, paramMap);
		
		CAANMsg template = new CAANMsg(EZM0481B010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EZM0481B010CBSMsg.TEMPLATEID, "EZM0481B010");

		// 機能コード（デフォルト：１）
		template.set(EZM0481B010CBSMsg.FUNC_CODE, "2");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		

		// 中心局コード → ＫＥＹ＿中心局コード
		if (workMap == null || workMap.get("chuKK_cd") == null || "".equals(workMap.get("chuKK_cd"))) {
			template.setNull(EZM0481B010CBSMsg.KEY_CHUSKK_CD);
		} else {
			template.set(EZM0481B010CBSMsg.KEY_CHUSKK_CD, (String)workMap.get("chuKK_cd"));
		}
			
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	
	/**
	 * チェック処理<br>
	 * サービスコンポーネント実行用CAANMsgを返却します。<br>
	 * <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Throwableがスローされます 。
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		return null;
	}


	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得<br>
	 * 業務データ取得・書込用I/Fをそのまま返却します。<br>
	 * <br>
	 * @param param デルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		return param;
	}

	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービス契約回線内訳一覧照会S-IF実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public HashMap editResultRPEKK0241B001(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 結果を詰めるマップを取得。
		HashMap dataMap = new HashMap();
		
		templateArray = parentTemplate.getCAANMsgList(EKK0241B001CBSMsg.EKK0241B001CBSMSG1LIST);

		if (templateArray != null) {
			for (int i = 0; i < templateArray.length; i++) {
				CAANMsg childTemplate = templateArray[i];

				
				// サービス契約回線内訳一覧照会マップ.サービス契約回線内訳一覧照会明細.サービス契約回線内訳番号 ← サービス契約回線内訳一覧照会明細.サービス契約回線内訳番号
				if (childTemplate.isNull(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)) {
					dataMap.put("svc_kei_kaisen_ucwk_no", new String());
				} else {
					dataMap.put("svc_kei_kaisen_ucwk_no", childTemplate.getString(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
				}
				
				// サービス契約回線内訳一覧照会マップ.サービス契約回線内訳一覧照会明細.世代登録年月日時分秒 ← サービス契約回線内訳一覧照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0241B001CBSMsg1List.GENE_ADD_DTM)) {
					dataMap.put("gene_add_dtm", new String());
				} else {
					dataMap.put("gene_add_dtm", childTemplate.getString(EKK0241B001CBSMsg1List.GENE_ADD_DTM));
				}
				
				// サービス契約回線内訳一覧照会マップ.サービス契約回線内訳一覧照会明細.起点変電所コード ← サービス契約回線内訳一覧照会明細.起点変電所コード
				if (childTemplate.isNull(EKK0241B001CBSMsg1List.KITEN_HDSHO_CD)) {
					dataMap.put("kiten_hdsho_cd", new String());
				} else {
					dataMap.put("kiten_hdsho_cd", childTemplate.getString(EKK0241B001CBSMsg1List.KITEN_HDSHO_CD));
				}
				
				// サービス契約回線内訳一覧照会マップ.サービス契約回線内訳一覧照会明細.集約局コード ← サービス契約回線内訳一覧照会明細.集約局コード
				if (childTemplate.isNull(EKK0241B001CBSMsg1List.SHYAKK_CD)) {
					dataMap.put("shyakk_cd", new String());
				} else {
					dataMap.put("shyakk_cd", childTemplate.getString(EKK0241B001CBSMsg1List.SHYAKK_CD));
				}
			}
		}
		
		/* ◇処理結果の判定 */
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}

		return dataMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>起点変電所コード一意照会S-IF実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public HashMap editResultRPEZM0331A010(Map<?, ?> msgList,
			IRequestParameterReadWrite param , String fixedText) throws Exception {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = new HashMap();

		templateArray = parentTemplate.getCAANMsgList(EZM0331A010CBSMsg.EZM0331A010CBSMSG1LIST);

		if (templateArray != null) {
			for (int i = 0; i < templateArray.length; i++) {
				CAANMsg childTemplate = templateArray[i];

				
				// 起点変電所コード一意照会マップ.起点変電所一意照会明細.集約局コード ← 起点変電所一意照会明細.集約局コード
				if (childTemplate.isNull(EZM0331A010CBSMsg1List.SHYAKK_CD)) {
					dataMap.put("shyakk_cd", new String());
				} else {
					dataMap.put("shyakk_cd", childTemplate.getString(EZM0331A010CBSMsg1List.SHYAKK_CD));
				}
				
				// 起点変電所コード一意照会マップ.起点変電所一意照会明細.起点変電所コード ← 起点変電所一意照会明細.起点変電所コード
				if (childTemplate.isNull(EZM0331A010CBSMsg1List.KITEN_HDSHO_CD)) {
					dataMap.put("kiten_hdsho_cd", new String());
				} else {
					dataMap.put("kiten_hdsho_cd" ,  childTemplate.getString(EZM0331A010CBSMsg1List.KITEN_HDSHO_CD));
				}
				
				
			}
		}

        // エラー情報の設定
        param = editErrorInfoEZM0331A010(param, templates, (Integer)return_code, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		/* ◇処理結果の判定 */
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		

		return dataMap;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>集約局コード一意照会S−IF実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public HashMap editResultRPEZM0341A010(Map<?, ?> msgList,
			IRequestParameterReadWrite param , String fixedText) throws Exception {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = new HashMap();

		templateArray = parentTemplate.getCAANMsgList(EZM0341A010CBSMsg.EZM0341A010CBSMSG1LIST);

		if (templateArray != null) {
			for (int i = 0; i < templateArray.length; i++) {
				CAANMsg childTemplate = templateArray[i];

				
				// 集約局コード一意照会マップ.集約局一意照会明細.中心局コード ← 集約局一意照会明細.中心局コード
				if (childTemplate.isNull(EZM0341A010CBSMsg1List.CHUSKK_CD)) {
					dataMap.put("chuskk_cd", new String());
				} else {
					dataMap.put("chuskk_cd", childTemplate.getString(EZM0341A010CBSMsg1List.CHUSKK_CD));
				}
			}
		}

        
        // エラー情報の設定
        param = editErrorInfoEZM0341A010(param, templates, (Integer)return_code , fixedText);

        /* ◇処理結果の判定 */
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
        

		return dataMap;
	}

	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>未使用のIPv6アドレス一覧S-IF実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEZM0481B010(Map<?, ?> msgList,
			IRequestParameterReadWrite param , String fixedText) throws Exception {
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = new HashMap();
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		templateArray = parentTemplate.getCAANMsgList(EZM0481B010CBSMsg.EZM0481B010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EZM0481B010CBSMsg1List");
		  
		if (dataList == null) {
			dataList = new ArrayList();
		}

		if (templateArray != null) {
			for (int i = 0; i < templateArray.length; i++) {
				CAANMsg childTemplate = templateArray[0];
				if ( 0 >= dataList.size()) {
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(0);

				
				// ＩＰｖ６アドレス一覧照会マップ.ＩＰｖ６アドレス一覧照会明細.ＩＰｖ６ＩＰアドレス ← ＩＰｖ６アドレス一覧照会明細.IPv6アドレス(インターフェイスID)
				if (childTemplate.isNull(EZM0481B010CBSMsg1List.IPV6_AD_IFID)) {
					childMap.put("ipv6_ip_ad", new String());
				} else {
					childMap.put("ipv6_ip_ad", childTemplate.getString(EZM0481B010CBSMsg1List.IPV6_AD_IFID));
				}
				
				// ＩＰｖ６アドレス一覧照会マップ.ＩＰｖ６アドレス一覧照会明細.中心局コード ← ＩＰｖ６アドレス一覧照会明細.中心局コード
				if (childTemplate.isNull(EZM0481B010CBSMsg1List.CHUSKK_CD)) {
					childMap.put("chuskk_cd", new String());
				} else {
					childMap.put("chuskk_cd", childTemplate.getString(EZM0481B010CBSMsg1List.CHUSKK_CD));
				}
				
				// ＩＰｖ６アドレス一覧照会マップ.ＩＰｖ６アドレス一覧照会明細.使用回数 ← ＩＰｖ６アドレス一覧照会明細.使用回数
				if (childTemplate.isNull(EZM0481B010CBSMsg1List.USE_CNT)) {
					childMap.put("use_cnt", new String());
				} else {
					childMap.put("use_cnt", childTemplate.getString(EZM0481B010CBSMsg1List.USE_CNT));
				}
				
				// ＩＰｖ６アドレス一覧照会マップ.ＩＰｖ６アドレス一覧照会明細.ＩＰｖ６ＩＰアドレス情報適用開始年月日 ← ＩＰｖ６アドレス一覧照会明細.ＩＰｖ６ＩＰアドレス情報適用開始年月日
				if (childTemplate.isNull(EZM0481B010CBSMsg1List.IPV6_AD_TSTAYMD)) {
					childMap.put("ipv6_ip_ad_info_tstaymd", new String());
				} else {
					childMap.put("ipv6_ip_ad_info_tstaymd", childTemplate.getString(EZM0481B010CBSMsg1List.IPV6_AD_TSTAYMD));
				}
				
				// ＩＰｖ６アドレス一覧照会マップ.ＩＰｖ６アドレス一覧照会明細.ＩＰｖ６ＩＰアドレス情報適用終了年月日 ← ＩＰｖ６アドレス一覧照会明細.ＩＰｖ６ＩＰアドレス情報適用終了年月日
				if (childTemplate.isNull(EZM0481B010CBSMsg1List.IPV6_AD_TENDYMD)) {
					childMap.put("ipv6_ip_ad_info_tendymd", new String());
				} else {
					childMap.put("ipv6_ip_ad_info_tendymd", childTemplate.getString(EZM0481B010CBSMsg1List.IPV6_AD_TENDYMD));
				}
				
				
				// ＩＰｖ６アドレス一覧照会マップ.ＩＰｖ６アドレス一覧照会明細.更新年月日時分秒 ← ＩＰｖ６アドレス一覧照会明細.更新年月日時分秒
				if (childTemplate.isNull(EZM0481B010CBSMsg1List.UPD_DTM)) {
					childMap.put("upd_dtm", new String());
				} else {
					childMap.put("upd_dtm", childTemplate.getString(EZM0481B010CBSMsg1List.UPD_DTM));
				}
			}
		}
		dataMap.put("ipv6_ip_ad_list", dataList);
		   
        // エラー情報の設定
        param = editErrorInfoEZM0481B010(param, templates, (Integer)return_code , fixedText);

        /* ◇処理結果の判定 */
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = return_code.toString();
		int status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
        
		return param;
	}
	
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービス契約回線内訳一覧照会S-IF実行実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editErrorInfoEKK0241B001(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, 
			String fixedText) throws RequestParameterException 
			{
		
		CAANMsg template = templates[0];
		// エラー共通部の設定
		setControlMap(param, templates, returnCode, EKK0241B001CBSMsg.STATUS);

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
	
		// サービス契約回線内訳一覧照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0241B001CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("key_svc_kei_no_err")) {
				inMap.put("key_svc_kei_no_err", template.getString(EKK0241B001CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}
	
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>起点変電所コード一意照会S-IF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editErrorInfoEZM0331A010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, 
			String fixedText) throws RequestParameterException {
		CAANMsg template = templates[0];
		// エラー共通部の設定
		setControlMap(param, templates, returnCode, EZM0331A010CBSMsg.STATUS);

		HashMap inMap = null;
		ArrayList inList = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
	

		// 起点変電所コード一意照会マップ.ＫＥＹ＿起点変電所コード → ＫＥＹ＿起点変電所コード のエラー情報返却
		if (!template.isNull(EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD_ERR)) {
			if (!inMap.containsKey("key_kiten_hdsho_cd_err")) {
				inMap.put("key_kiten_hdsho_cd_err", template.getString(EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD_ERR));
			}
		}
		return param;
	}

	
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>集約局コード一意照会S−IF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editErrorInfoEZM0341A010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode,  String fixedText)
	throws Exception {
		CAANMsg template = templates[0];
		// エラー共通部の設定
		setControlMap(param, templates, returnCode, EZM0341A010CBSMsg.STATUS);

		HashMap inMap = null;
		ArrayList inList = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
	
		// 集約局コード一意照会マップ.ＫＥＹ＿集約局コード → ＫＥＹ＿集約局コード のエラー情報返却
		if (!template.isNull(EZM0341A010CBSMsg.KEY_SHYAKK_CD_ERR)) {
			if (!inMap.containsKey("key_shyakk_cd_err")) {
				inMap.put("key_shyakk_cd_err", template.getString(EZM0341A010CBSMsg.KEY_SHYAKK_CD_ERR));
			}
		}
		return param;
	}

	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>未使用IPv6アドレス一意照会S−IF実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.02.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editErrorInfoEZM0481B010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode,  String fixedText)
	throws Exception {
		CAANMsg template = templates[0];
		// エラー共通部の設定
		setControlMap(param, templates, returnCode, EZM0481B010CBSMsg.STATUS);

		HashMap inMap = null;
		ArrayList inList = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (inMap == null) 
		{
			inMap = new HashMap();
			param.setData(fixedText, inMap);
		}
	
		// 集約局コード一意照会マップ.ＫＥＹ＿集約局コード → ＫＥＹ＿集約局コード のエラー情報返却
		if (!template.isNull(EZM0481B010CBSMsg.EZM0481B010CBSMSG1LIST_ERR)) {
			if (!inMap.containsKey("key_chuskk_cd_err")) {
				inMap.put("key_chuskk_cd_err", template.getString(EZM0481B010CBSMsg.KEY_CHUSKK_CD_ERR));
			}
		}
		return param;
	}

	

	/**
	 * メッセージ共通部の設定。<br>
	 * <br>
	 * @param param (I) 業務データ取得用I/F
	 * @param paramMap (O) メッセージ共通部
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private void setCommonParamMap(IRequestParameterReadOnly param, HashMap<String, Object> paramMap)
	throws RequestParameterException
	{
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

	}

	/**
	 * サービスインターフェイス共通部の設定。<br>
	 * <br>
	 * @param param (I) 業務データ取得用I/F
	 * @param template (O) サービスインターフェイス
	 * @exception RequestParameterExceptionがスローされます。
	 */
	private void setCommonTemplate(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

	}

	/**
	 * エラー共通部の設定。<br>
	 * <br>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param status (I) ステータス
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 * @since 2011.09.07
	 */
	private IRequestParameterReadWrite setControlMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, 
			String status) throws RequestParameterException 
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(status);
		if (returnCode != 0) 
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) 
		{
			bpStatus = -1;
		}
		else 
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) 
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}	
		
		return param;
	}	

}

