/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CRW02702SFLogic
 *	ソースファイル名：CRW02702SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年11月21日
 *＜機能概要＞
 *	オプションサービス契約一覧照会ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *	ｖ4.00.00	2013/03/12	FJ)伊藤		ST1-2013-0000480
 *	ｖ6.00.00	2013/11/01	FJ)伊藤		OM-2013-0003932 CRSV010301SC呼出時の機能コードの場合分けを追加
 *	ｖ9.00.00	2014/06/13	FJ)伊藤		ANK-2056-01-00  【案件内部仕様変更】光電話セレクトオプションパック
 *
 ********************************************************************************/
package eo.web.webview.CRW02702SF;

import java.util.EventObject;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.mapping.CRSV0103_CRSV0103OPDBMapper;
import eo.web.webview.mapping.CRSV0278_CRSV0278OPDBMapper;

/**
 * オプションサービス契約一覧照会.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW02702SFLogic extends JCCWebBusinessLogic
{
	/**
	 * オプション内容リンク権限定義
	 */
	private static final String AUTHORITY_OP_NIY_DSP_FLG = "CRW027020PJP;OP_NIY_DSP_FLG;0";

	/**
	 * オプションサービスコード定義
	 */
	private static final String OP_SVC_CD_EMAIL = "B001";
	private static final String OP_SVC_CD_MY_HOMEPAGE = "B002";

	/**
	 * ユーザーIDパラメータ長
	 */
	private static final int USER_ID_PARAM_LEN = 7;

	/**
	 * REPLACE_MAP
	 */
	private static final Map<String, String> REPLACE_MAP = new HashMap<String, String>();

	/**
	 * 置換表
	 */
	static {
		REPLACE_MAP.put("0", "A");
		REPLACE_MAP.put("1", "C");
		REPLACE_MAP.put("2", "E");
		REPLACE_MAP.put("3", "G");
		REPLACE_MAP.put("4", "I");
		REPLACE_MAP.put("5", "K");
		REPLACE_MAP.put("6", "M");
		REPLACE_MAP.put("7", "O");
		REPLACE_MAP.put("8", "Q");
		REPLACE_MAP.put("9", "S");
	}

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException 
	{
		return false;
	}

	/**
	 * 初期表示処理.<br>
	 * 初期表示を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean initOp() throws Exception 
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// 画面情報設定部品（JCRWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		JCCWebCommon.getScreenInfo(this);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0103");

		// マッピングクラス
		CRSV0103_CRSV0103OPDBMapper mapper = new CRSV0103_CRSV0103OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// マッピング処理（上り）
		mapper.setCRSV010301SC(paramBean, dataMap, getCRSV010301SCFuncCd(bean));
		mapper.setJKKOPNAIYOSTKUCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETSBOPSVKEIISPCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV010302SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// 電話の場合だけオプションパックも取得
		if(JCRStrConst.SVC_CD_TEL.equals(bean.sendMessageString(CRW02702SFConst.SVC_CD, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			mapper.setCRSV010303SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_4);
			mapper.setTELSELECTOPPACKOPERATECC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setCRSV010304SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// マッピング処理（下り）
		mapper.getCRSV010301SC(paramBean, outputMap);
		mapper.getCRSV010302SC(paramBean, outputMap);
		mapper.getCRSV010303SC(paramBean, outputMap);
		mapper.getCRSV010304SC(paramBean, outputMap);
		
		// 権限設定
		setAuthority();

		// 適用終了年月日の置換え（20991231→ブランク）
		JZMWebCommon.replaceTendymd(bean, CRW02702SFConst.EKK0351B002CBSMSG1LIST, CRW02702SFConst.L_SVC_ENDYMD_01);

		// 終了日の置換え（20991231→ブランク）
		JZMWebCommon.replaceTendymd(bean, CRW02702SFConst.WRIB_SVC_KEI_LIST, CRW02702SFConst.L3_SVC_CHRG_ENDYMD_04);

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW02702);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW02702);

		return true;
	}

	/**
	 * オプション内容リンク押下処理<br>
	 * <br>
	 * オプション内容リンク押下処理を行う。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clickLinkOpNiy() throws Exception
	{		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 選択されたオプションサービス契約一覧照会明細インデックス取得
		int nSlctDetailIndex = Integer.valueOf(bean.sendMessageString(CRW02702SFConst.SLCT_DETAIL_INDEX, X31CWebConst.DATABEAN_GET_VALUE)).intValue();

		// オプションサービス契約一覧照会明細リスト取得
		X31SDataBeanAccessArray ekk0351b002cbsmsg1list = bean.getDataBeanArray(CRW02702SFConst.EKK0351B002CBSMSG1LIST);

		// 選択されたオプションサービス契約一覧照会明細取得
		X31SDataBeanAccess detailBean = ekk0351b002cbsmsg1list.getDataBean(nSlctDetailIndex);
		
		// オプションサービスコード取得
		String opSvcCd = detailBean.sendMessageString(CRW02702SFConst.L_OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// Ｅメールの場合
		if (OP_SVC_CD_EMAIL.equals(opSvcCd))
		{
			// メールアドレス設定
			bean.sendMessageString(CRW02702SFConst.MLAD, X31CWebConst.DATABEAN_SET_VALUE, detailBean.sendMessageString(CRW02702SFConst.L_OP_SVC_NIY_01, X31CWebConst.DATABEAN_GET_VALUE));
			// WebID設定
			bean.sendMessageString(CRW02702SFConst.WEB_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
			// エイリアス設定
			bean.sendMessageString(CRW02702SFConst.ALIAS, X31CWebConst.DATABEAN_SET_VALUE, detailBean.sendMessageString(CRW02702SFConst.L_SBOP_SVC_NIY_01, X31CWebConst.DATABEAN_GET_VALUE));
		}
		// Ｍｙホームページの場合
		else if (OP_SVC_CD_MY_HOMEPAGE.equals(opSvcCd))
		{
			// メールアドレス設定
			bean.sendMessageString(CRW02702SFConst.MLAD, X31CWebConst.DATABEAN_SET_VALUE, "");
			// WebID設定
			bean.sendMessageString(CRW02702SFConst.WEB_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
			// エイリアス設定
			bean.sendMessageString(CRW02702SFConst.ALIAS, X31CWebConst.DATABEAN_SET_VALUE, "");
			// ＫＥＹ＿オプションサービス契約番号設定
			bean.sendMessageString(CRW02702SFConst.KEY_OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, detailBean.sendMessageString(CRW02702SFConst.L_OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// Ｍｙホームページの場合
		if (OP_SVC_CD_MY_HOMEPAGE.equals(opSvcCd))
		{
			// -------------------------------------------------- //
			// (3)サービス呼出処理
			// -------------------------------------------------- //
			// ユースケースID格納用マップ
			HashMap<Object, String> paramMap = new HashMap<Object, String>();

			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0278");

			// マッピングクラス
			CRSV0278_CRSV0278OPDBMapper mapper = new CRSV0278_CRSV0278OPDBMapper();

			// マッピング用Map
			HashMap<String, Object> dataMap = new HashMap<String, Object>();

			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean};

			// マッピング処理（上り）
			mapper.setCRSV027801SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

			// サービス実行結果データ用Map
			HashMap<String, Object> outputMap = new HashMap<String, Object>();

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);

			// -------------------------------------------------- //
			// (4)サービス処理結果の設定
			// -------------------------------------------------- //
			// マッピング処理（下り）
			mapper.getCRSV027801SC(paramBean, outputMap);
			
			// オプションサービス契約＜ISP＞一意照会明細リスト取得
			X31SDataBeanAccessArray ekk0361a010cbsmsg1list = bean.getDataBeanArray(CRW02702SFConst.EKK0361A010CBSMSG1LIST);

			// 先頭のオプションサービス契約＜ISP＞一意照会明細取得
			X31SDataBeanAccess opSvcBean = ekk0361a010cbsmsg1list.getDataBean(0);

			// WebID設定
			bean.sendMessageString(CRW02702SFConst.WEB_ID, X31CWebConst.DATABEAN_SET_VALUE, opSvcBean.sendMessageString(CRW02702SFConst.L2_WEB_ID_02, X31CWebConst.DATABEAN_GET_VALUE));
			
		}

		// ログ解析システムURL設定
		bean.sendMessageString(CRW02702SFConst.ICS_WEB_URL, X31CWebConst.DATABEAN_SET_VALUE, getIcsWebUrl());
		// ログ解析システム起動フラグ設定
		bean.sendMessageBoolean(CRW02702SFConst.ICS_WEB_OPEN_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW02702);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW02702);

		return true;
	}

	/**
	 * サブオプション内容リンク押下処理<br>
	 * <br>
	 * サブオプション内容リンク押下処理を行う。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clickLinkSbopNiy() throws Exception
	{		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 選択されたオプションサービス契約一覧照会明細インデックス取得
		int nSlctDetailIndex = Integer.valueOf(bean.sendMessageString(CRW02702SFConst.SLCT_DETAIL_INDEX, X31CWebConst.DATABEAN_GET_VALUE)).intValue();

		// オプションサービス契約一覧照会明細リスト取得
		X31SDataBeanAccessArray ekk0351b002cbsmsg1list = bean.getDataBeanArray(CRW02702SFConst.EKK0351B002CBSMSG1LIST);

		// 選択されたオプションサービス契約一覧照会明細取得
		X31SDataBeanAccess detailBean = ekk0351b002cbsmsg1list.getDataBean(nSlctDetailIndex);
		
		// メールアドレス設定
		bean.sendMessageString(CRW02702SFConst.MLAD, X31CWebConst.DATABEAN_SET_VALUE, detailBean.sendMessageString(CRW02702SFConst.L_OP_SVC_NIY_01, X31CWebConst.DATABEAN_GET_VALUE));
		// WebID設定
		bean.sendMessageString(CRW02702SFConst.WEB_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		// エイリアス設定
		bean.sendMessageString(CRW02702SFConst.ALIAS, X31CWebConst.DATABEAN_SET_VALUE, detailBean.sendMessageString(CRW02702SFConst.L_SBOP_SVC_NIY_01, X31CWebConst.DATABEAN_GET_VALUE));

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// ログ解析システムURL設定
		bean.sendMessageString(CRW02702SFConst.ICS_WEB_URL, X31CWebConst.DATABEAN_SET_VALUE, getIcsWebUrl());
		// ログ解析システム起動フラグ設定
		bean.sendMessageBoolean(CRW02702SFConst.ICS_WEB_OPEN_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW02702);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW02702);

		return true;
	}

	/**
	 * 権限設定処理<br>
	 * <br>
	 * オプション内容リンク表示権限を設定します。
	 * 
	 */
	private void setAuthority()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// オプションサービス契約一覧照会明細リスト取得
		X31SDataBeanAccessArray wgList = bean.getDataBeanArray(CRW02702SFConst.EKK0351B002CBSMSG1LIST);
		
		for (int i = 0; i < wgList.getCount(); i++)
		{
			// オプションサービス契約一覧照会明細取得
			X31SDataBeanAccess wgBean = wgList.getDataBean(i);
			
			// オプションサービスコード取得
			String opSvcCd = wgBean.sendMessageString(CRW02702SFConst.L_OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			// ＥメールまたはＭｙホームページ以外の場合
			if (!(OP_SVC_CD_EMAIL.equals(opSvcCd) || OP_SVC_CD_MY_HOMEPAGE.equals(opSvcCd)))
			{
				// オプション内容リンク表示フラグ設定
				wgBean.sendMessageBoolean(CRW02702SFConst.L_OP_SVC_NIY_LINK_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
				continue;
			}
			
			// 権限制御定義ファイルより、オプション内容リンクの表示／非表示判定を行う
			boolean opSvcNiyLinkDspFlg = JCRWebCommon.checkAuthority(this, AUTHORITY_OP_NIY_DSP_FLG);

			// オプション内容リンク表示フラグ設定
			wgBean.sendMessageBoolean(CRW02702SFConst.L_OP_SVC_NIY_LINK_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, opSvcNiyLinkDspFlg);
			
		}
	}
	
	/**
	 * Timestamp暗号化処理<br>
	 * <br>
	 * Timestampの文字列(14桁)を暗号化した値を返します。
	 * 
	 * @param timestamp
	 * @return String Timestampの文字列(14桁)を暗号化した値
	 */
	private String encryptTimestamp(String timestamp)
	{
		// 年月日時分秒の下一桁
		String strLast = timestamp.substring(13, 14);
		int intLast = Integer.parseInt(strLast);

		// 置換表に従い、置換された文字列
		StringBuilder repStr = new StringBuilder();

		// 秒の下一桁自身以外に対する処理
		for (int i = 0; i < 13; i++)
		{
			// 年月日時分秒の各桁に秒の下一桁を足し、その足した値の下一桁を設定（秒の下一桁自身には足さない）
			char ch = timestamp.charAt(i);
			int num = (Character.digit(ch, 10) + intLast) % 10;

			// 置換表に従ってアルファベットに置換
			repStr.append(REPLACE_MAP.get(String.valueOf(num)));
		}

		// 下一桁を置換表に従ってアルファベットに置換
		repStr.append(REPLACE_MAP.get(strLast));

		// 固定のパターンに従って文字列を並び替え
		StringBuilder encStr = new StringBuilder();

		// 1文字目
		encStr.append(repStr.substring(0, 1));
		// 2文字目
		encStr.append(repStr.substring(12, 13));
		// 3文字目
		encStr.append(repStr.substring(2, 3));
		// 4文字目
		encStr.append(repStr.substring(10, 11));
		// 5文字目
		encStr.append(repStr.substring(4, 5));
		// 6文字目
		encStr.append(repStr.substring(8, 9));
		// 7文字目
		encStr.append(repStr.substring(6, 7));
		// 8文字目
		encStr.append(repStr.substring(13, 14));
		// 9文字目
		encStr.append(repStr.substring(1, 2));
		// 10文字目
		encStr.append(repStr.substring(11, 12));
		// 11文字目
		encStr.append(repStr.substring(3, 4));
		// 12文字目
		encStr.append(repStr.substring(9, 10));
		// 13文字目
		encStr.append(repStr.substring(5, 6));
		// 14文字目
		encStr.append(repStr.substring(7, 8));

		return encStr.toString();
	}

	/**
	 * ログ解析システムURL取得処理<br>
	 * <br>
	 * ログ解析システムのURLを返します。
	 * 
	 * @return String ログ解析システムURL
	 */
	private String getIcsWebUrl()
	{
		String url = "";
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 対応履歴外部接続URL一覧照会明細取得
		X31SDataBeanAccessArray wgList = bean.getDataBeanArray(CRW02702SFConst.ECR0451B010CBSMSG1LIST);
		if (wgList.getCount() == 0)
		{
			return url;
		}
		X31SDataBeanAccess wgBean = wgList.getDataBean(0);
		
		// 対応履歴外部接続URL取得
		url = wgBean.sendMessageString(CRW02702SFConst.L1_TAIORRK_OUT_URL_03, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ログインユーザーID取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);
		// メールアドレス取得
		String mlad = bean.sendMessageString(CRW02702SFConst.MLAD, X31CWebConst.DATABEAN_GET_VALUE);
		// WebID取得
		String webID = bean.sendMessageString(CRW02702SFConst.WEB_ID, X31CWebConst.DATABEAN_GET_VALUE);
		// エイリアス取得
		String alias = bean.sendMessageString(CRW02702SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
		// タイムスタンプ取得
		String timeStamp = encryptTimestamp(JCRWebCommon.getSysDateTime());
		// サービス契約番号取得
		String svcKeiNo = bean.sendMessageString(CRW02702SFConst.KEY_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ログインユーザーIDを7桁(左0埋め)に設定
		StringBuilder userIdBuff = new StringBuilder();
		for (int i = USER_ID_PARAM_LEN, j = userId.length(); i > 0; i--, j--)
		{
			if (j > 0)
			{
				userIdBuff.insert(0, userId.charAt(j - 1));
				continue;
			}
			userIdBuff.insert(0, JCRStrConst.CR_STR_ZERO);
		}
		userId = userIdBuff.toString();

		// ログ解析システムパラメータ設定
		url = url.replaceAll("%LOGIN_ID%", userId);
		url = url.replaceAll("%MAIL_ADDRESS%", mlad);
		url = url.replaceAll("%MAIL_ALIAS%", alias);
		url = url.replaceAll("%WEB_ID%", webID);
		url = url.replaceAll("%V%", timeStamp);
		url = url.replaceAll("%CONSUMER_ID%", svcKeiNo);
		
		return url;
	}

	/**
	 * 検索処理時の機能コードを取得します<br>
	 * <br>
	 * @param bean サービスフォームBean
	 * @return String 機能コード
	 */
	private String getCRSV010301SCFuncCd(X31SDataBeanAccess bean)
	{
		String funcCd = "";

		// サービスコードの取得
		String svcCd = bean.sendMessageString(CRW02702SFConst.SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// 電話の場合だけサブオプションも取得
		if(JCRStrConst.SVC_CD_TEL.equals(svcCd))
		{
			funcCd = JPCModelConstant.FUNC_CD_2;
		}
		else
		{
			funcCd = JPCModelConstant.FUNC_CD_1;
		}

		return funcCd;
	}
}
