/*******************************************************************************
All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
* システム名        ：eo顧客基幹システム
* モジュール名      ：CRW05701SFLogic
* ソースファイル名  ：CRW05701SFLogic.java
* 作成者            ：富士通
* 日付              ：2011年12月21日
*＜機能概要＞
* カテゴリー情報一覧ビューロジック
*＜修正履歴＞
* バージョン    修正日      修正者      修正内容
* ｖ1.00.00
*
********************************************************************************/

package eo.web.webview.CRW05701SF;

import java.util.Collections;
import java.util.EventObject;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import com.fujitsu.futurity.web.x00.JCCWebServiceException;
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.x31.X31CMessageResult.X31CMessageMoreInfo;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW05801SF.CRW05801SFConst;
import eo.web.webview.CRW05803SF.CRW05803SFConst;
import eo.web.webview.CRW05805SF.CRW05805SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0253_CRSV0253OPDBMapper;
import eo.web.webview.mapping.CRSV0254_CRSV0254OPDBMapper;
import eo.web.webview.mapping.CRSV0255_CRSV0255OPDBMapper;
import eo.web.webview.mapping.CRSV0256_CRSV0256OPDBMapper;
import eo.web.webview.mapping.CRSV0257_CRSV0257OPDBMapper;
import eo.web.webview.mapping.CRSV0258_CRSV0258OPDBMapper;

/**
 * カテゴリー情報一覧ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW05701SFLogic extends JCCWebBusinessLogic
{

	/**
	 * Array項目リスト
	 */
	private static final Set<String> ARRAY_ITEM_SET = new HashSet<String>();
	

	/**
	 * 全番号リスト
	 */
	private static final String[] FULL_NUMBER_LIST = {"０", "１", "２", "３", "４", "５", "６", "７", "８", "９"};

	/**
	 * ダブルクォーテーション
	 */
	private static final String DOUBLE_QUOT = "\"";

	static {
		// Array項目リスト
		Collections.addAll(ARRAY_ITEM_SET
				, CRW05701SFConst.CTGR_CLASS_LIST
				, CRW05701SFConst.JOI_CTGR_LIST
				, CRW05701SFConst.TAISHO_CTGR_LIST
				, CRW05701SFConst.KAI_CTGR_LIST
				, CRW05701SFConst.DOWNLOAD_CTGR_LIST);
	}

	/**
	 * 親クラス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
	 * @throws Exception Exception
	 */
	public boolean init() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)サービスフォームBeanの全項目をクリアする。
		clearBean(bean);

		// (b)サービスフォームBean項目の設定
		// カテゴリーレベル（上位）
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_SET_VALUE, "");
		// カテゴリーレベル（対象）
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, "001");
		// カテゴリーレベル（下位）
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_KAI, X31CWebConst.DATABEAN_SET_VALUE, "002");

		// (3)サービス呼出処理
		// (a)カテゴリー情報リスト取得処理(getCtgrList())を呼び出し、上位、対象、下位のカテゴリーの一覧を取得する。
		getCtgrList("", "");

		// (4)サービス処理結果の設定
		// なし。 ※(3)(a)にて処理済み

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * 対象カテゴリ名称クリック.<br>
	 * 対象カテゴリ名称クリック時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean choiceCategory() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1) 引継情報の取得
		// なし

		// (2) サービスフォームBeanの設定
		// (a)サービスフォームBeanのクリア
		// 下位カテゴリー明細をクリアする。
		X31SDataBeanAccessArray kaiCtgrList = bean.getDataBeanArray(CRW05701SFConst.KAI_CTGR_LIST);
		kaiCtgrList.clearArray();
		
		// (b)サービスフォームBeanの設定
		// 対象カテゴリー明細
		X31SDataBeanAccessArray taishoCtgrList = bean.getDataBeanArray(CRW05701SFConst.TAISHO_CTGR_LIST);
		// 選択カテゴリーインデックス（対象）
		String slctCtgrIdxTaisho = bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_IDX_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);
		int selectedIndexTaisho = Integer.parseInt(slctCtgrIdxTaisho, 10);
		
		// 対象カテゴリー明細Bean
		X31SDataBeanAccess taishoCtgrListBean = taishoCtgrList.getDataBean(selectedIndexTaisho);

		// カテゴリー番号
		String ctgrNo = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
		// カテゴリーレベル
		String ctgrLv = bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);

		// 選択カテゴリー番号（対象）
		bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, ctgrNo);

		// 対象レベルが"001"の場合、業務個別設定組織コード、業務個別設定組織コード名称を設定する。
		if ("001".equals(ctgrLv))
		{
			// 業務個別設定組織コード
			String wkkbtOrgCd = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_JOI_CTGR_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD, X31CWebConst.DATABEAN_SET_VALUE, wkkbtOrgCd);
			
			// 業務個別設定組織コード名称
			String wkkbtOrgCdNm = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD_NM, X31CWebConst.DATABEAN_SET_VALUE, wkkbtOrgCdNm);
		}

		// 上位カテゴリー番号（下位）
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_KAI, X31CWebConst.DATABEAN_SET_VALUE, ctgrNo);

		// (c)サービスフォームBean編集処理(editServiceFormBean())を呼び出し、編集を行う。
		editServiceFormBean();

		// 対象レベルが"011"以外の場合は、下位のカテゴリーの一覧を取得する
		if (!"011".equals(ctgrLv))
		{
			// (3)サービス呼出処理
			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};
	
			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0255");
	
			// マッピングクラス
			CRSV0255_CRSV0255OPDBMapper mapper = new CRSV0255_CRSV0255OPDBMapper();
	
			// マッピング処理（上り）
			mapper.setGETCTGRINFO1RCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
	
			// サービス実行
			invokeService(paramMap, dataMap, outputMap);
	
			// (4)サービス処理結果の設定
			// (a)サービスの処理結果を取得する。
			// マッピング処理（下り）
			mapper.getGETCTGRINFO1RCC(paramBean, outputMap);
	
		}

		// (5) 引継情報の設定
		// なし。

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * <ボタン押下.	<br>
	 * <ボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean moveLeft() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// 上位カテゴリーレベル
		String ctgrLvJoi = getEditCtgrLv(bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_GET_VALUE), -1);
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_SET_VALUE, ctgrLvJoi);
		// 対象カテゴリーレベル
		String ctgrLvTaisho = getEditCtgrLv(ctgrLvJoi, 1);
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, ctgrLvTaisho);
		// 下位カテゴリーレベル
		String ctgrLvKai = getEditCtgrLv(ctgrLvTaisho, 1);
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_KAI, X31CWebConst.DATABEAN_SET_VALUE, ctgrLvKai);

		// 上位カテゴリー番号（上位）
		String joiCtgrNoJoi = getCtgrNoFromCtgrClass(getEditCtgrLv(ctgrLvJoi, -1));
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_JOI, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoJoi);
		// 上位カテゴリー番号（対象）
		String joiCtgrNoTaisho = getCtgrNoFromCtgrClass(ctgrLvJoi);
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoTaisho);
		// 上位カテゴリー番号（下位）
		String joiCtgrNoKai = getCtgrNoFromCtgrClass(ctgrLvTaisho);
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_KAI, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoKai);

		// (3) サービス呼出処理
		// (a)カテゴリー情報リスト取得処理(getCtgrList())を呼び出し、上位、対象、下位のカテゴリーの一覧を取得する。
		String slctCtgrNoJoi = getCtgrNoFromCtgrClass(bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_GET_VALUE));
		String slctCtgrNoTaisho = getCtgrNoFromCtgrClass(bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE));
		getCtgrList(slctCtgrNoJoi, slctCtgrNoTaisho);

		// (4) サービス処理結果の設定
		// なし。 ※(3)(a)にて処理済み

		// (5) 引継情報の設定
		// なし

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * >ボタン押下.	<br>
	 * >ボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean moveRight() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// 対象カテゴリー明細
		X31SDataBeanAccessArray taishoCtgrList = bean.getDataBeanArray(CRW05701SFConst.TAISHO_CTGR_LIST);
		// 選択カテゴリーインデックス（対象）
		String slctCtgrIdxTaisho = bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_IDX_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);
		int selectedIndexTaisho = Integer.parseInt(slctCtgrIdxTaisho, 10);
		
		// 対象カテゴリー明細Bean
		X31SDataBeanAccess taishoCtgrListBean = taishoCtgrList.getDataBean(selectedIndexTaisho);

		// カテゴリー番号
		String ctgrNo = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
		// カテゴリー名
		String ctgrNm = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
		// カテゴリーレベル
		String ctgrLv = bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);

		// (a)カテゴリー階層リスト編集処理(editCtgrClassList())を呼び出し、カテゴリー階層リストの編集を行う。
		editCtgrClassList(ctgrNo, ctgrNm, ctgrLv);

		// (b)サービスフォームBeanの設定
		// 上位カテゴリーレベル
		String ctgrLvJoi = getEditCtgrLv(bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_GET_VALUE), 1);
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_SET_VALUE, ctgrLvJoi);
		// 対象カテゴリーレベル
		String ctgrLvTaisho = getEditCtgrLv(ctgrLvJoi, 1);
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, ctgrLvTaisho);
		// 下位カテゴリーレベル
		String ctgrLvKai = getEditCtgrLv(ctgrLvTaisho, 1);
		bean.sendMessageString(CRW05701SFConst.CTGR_LV_KAI, X31CWebConst.DATABEAN_SET_VALUE, ctgrLvKai);

		// 上位カテゴリー番号（上位）
		String joiCtgrNoJoi = getCtgrNoFromCtgrClass(getEditCtgrLv(ctgrLvJoi, -1));
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_JOI, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoJoi);
		// 上位カテゴリー番号（対象）
		String joiCtgrNoTaisho = getCtgrNoFromCtgrClass(ctgrLvJoi);
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoTaisho);
		// 上位カテゴリー番号（下位）
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_KAI, X31CWebConst.DATABEAN_SET_VALUE, "");

		// (3) サービス呼出処理
		// (a)カテゴリー情報リスト取得処理(getCtgrList())を呼び出し、上位、対象、下位のカテゴリーの一覧を取得する。
		String slctCtgrNoJoi = bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);
		getCtgrList(slctCtgrNoJoi, "");

		// (4) サービス処理結果の設定
		// なし。 ※(3)(a)にて処理済み

		// (5) 引継情報の設定
		// なし

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * 上へボタン押下.	<br>
	 * 上へボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean moveUp() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0256");

		// マッピングクラス
		CRSV0256_CRSV0256OPDBMapper mapper = new CRSV0256_CRSV0256OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV025601SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV025602SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETCTGRINFO1RCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV025601SC(paramBean, outputMap);
		mapper.getCRSV025602SC(paramBean, outputMap);
		mapper.getGETCTGRINFO1RCC(paramBean, outputMap);

		// (b)サービスフォームBean編集処理(editServiceFormBean())を呼び出し、編集を行う。
		editServiceFormBean();

		// (5) 引継情報の設定
		// なし

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * 下へボタン押下.	<br>
	 * 下へボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean moveDown() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0257");

		// マッピングクラス
		CRSV0257_CRSV0257OPDBMapper mapper = new CRSV0257_CRSV0257OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV025701SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV025702SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETCTGRINFO1RCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV025701SC(paramBean, outputMap);
		mapper.getCRSV025702SC(paramBean, outputMap);
		mapper.getGETCTGRINFO1RCC(paramBean, outputMap);

		// (b)サービスフォームBean編集処理(editServiceFormBean())を呼び出し、編集を行う。
		editServiceFormBean();

		// (5) 引継情報の設定
		// なし

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * 新規登録ボタン押下.	<br>
	 * 新規登録ボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean insert() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 子画面に渡す情報用HashMap
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5) 引継情報の設定
		// (a)次画面への引継情報(dataMap)を作成する。
		// カテゴリー階層
		dataMap.put(CRW05801SFConst.CTGR_RANK_NM, bean.sendMessageString(CRW05701SFConst.CTGR_CLASS, X31CWebConst.DATABEAN_GET_VALUE));
		// カテゴリーレベル
		dataMap.put(CRW05801SFConst.CTGR_LV, bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE));
		// 上位カテゴリー番号
		dataMap.put(CRW05801SFConst.JOI_CTGR_NO, bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_GET_VALUE));
		// 業務個別設定組織コード
		dataMap.put(CRW05801SFConst.WKKBT_ORG_CD, bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD, X31CWebConst.DATABEAN_GET_VALUE));

		// (b)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW05801, dataMap);

		// (c)戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW05801, JCRScreenConst.SCREEN_ID_CRW05701);
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW05802, JCRScreenConst.SCREEN_ID_CRW05701);

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05801);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05801);

		return true;
	}

	/**
	 * 編集ボタン押下.	<br>
	 * 編集ボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean edit() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// (a)カテゴリー情報取得処理(getCtgr())を呼び出し、カテゴリー情報を取得する。
		getCtgr();

		// (4)サービス処理結果の設定
		// (a) DataBean.カテゴリー検索エラーフラグが設定されている場合
		if (!"".equals(bean.sendMessageString(CRW05701SFConst.CTGR_SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, new String[]{"カテゴリー", "カテゴリー番号"});
			// 遷移先画面ID、名称の設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

			return true;
		}

		// (b) DataBeanの値設定
		// サブ画面表示フラグ
		bean.sendMessageString(CRW05701SFConst.SUB_WINDOW_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		// サブ画面ID
		bean.sendMessageString(CRW05701SFConst.SUB_WINDOW_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05803);

		// (5) 引継情報の設定
		// なし。

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * 削除ボタン押下.	<br>
	 * 削除ボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean delete() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// (a)カテゴリー情報取得処理(getCtgr())を呼び出し、カテゴリー情報を取得する。
		getCtgr();

		// (4)サービス処理結果の設定
		// (a) DataBean.カテゴリー検索エラーフラグが設定されている場合
		if (!"".equals(bean.sendMessageString(CRW05701SFConst.CTGR_SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, new String[]{"カテゴリー", "カテゴリー番号"});
			// 遷移先画面ID、名称の設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

			return true;
		}

		// (b) DataBeanの値設定
		// サブ画面表示フラグ
		bean.sendMessageString(CRW05701SFConst.SUB_WINDOW_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		// サブ画面ID
		bean.sendMessageString(CRW05701SFConst.SUB_WINDOW_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05805);

		// (5) 引継情報の設定
		// なし。

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * ダウンロードボタン押下.	<br>
	 * ダウンロードボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean download() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		bean.getDataBeanArray(CRW05701SFConst.DOWNLOAD_CTGR_LIST).clearArray();

		// (3) サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0258");

		// マッピングクラス
		CRSV0258_CRSV0258OPDBMapper mapper = new CRSV0258_CRSV0258OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV025801SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV025801SC(paramBean, outputMap);

		// (b)ファイル情報生成処理（makeFileString()）を呼び出し、CSVファイルを生成する。
		String fileData = makeFileString();
		
		// (c)一時ファイルダウンロード処理部品(JCRWebCommon.setTempDownloadFile)を使用し、ダウンロード情報を設定する。
		String fileName = bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD, X31CWebConst.DATABEAN_GET_VALUE)
						+ bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD_NM, X31CWebConst.DATABEAN_GET_VALUE)
						+ "_カテゴリー.csv";
		JCRWebCommon.setTempDownloadFile(this, fileData.getBytes(JCRStrConst.MOJI_CD_MS932), fileName);

		// (5) 引継情報の設定
		// なし。

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * アップロードボタン押下.	<br>
	 * アップロードボタン押下時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean upload() throws Exception
	{
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5) 引継情報の設定
		// 戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW05806, JCRScreenConst.SCREEN_ID_CRW05701);

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05806);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05806);

		return true;
	}

	/**
	 * サブ画面表示.	<br>
	 * サブ画面表示時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean openSubWindow() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 子画面に渡す情報用HashMap
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// なし。

		// (3) サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5) 引継情報の設定
		String subWindowScreenId = bean.sendMessageString(CRW05701SFConst.SUB_WINDOW_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// 遷移先画面ＩＤ
		String nextScreenId = "";
		// 遷移先画面名
		String nextScreenName = "";

		// (a)DataBean.サブ画面IDが画面定数クラス.SCREEN_ID_CRW05803の場合
		if (JCRScreenConst.SCREEN_ID_CRW05803.equals(subWindowScreenId))
		{
			// (ｱ)次画面への引継情報(dataMap)を作成する。
			// カテゴリー階層
			dataMap.put(CRW05803SFConst.CTGR_RANK_NM, bean.sendMessageString(CRW05701SFConst.CTGR_CLASS, X31CWebConst.DATABEAN_GET_VALUE));
			// カテゴリー番号
			dataMap.put(CRW05803SFConst.CTGR_NO, bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_GET_VALUE));

			// (ｲ)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
			JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW05803, dataMap);

			// (ｳ)戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
			JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW05803, JCRScreenConst.SCREEN_ID_CRW05701);
			JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW05804, JCRScreenConst.SCREEN_ID_CRW05701);

			nextScreenId = JCRScreenConst.SCREEN_ID_CRW05803;
			nextScreenName = JCRScreenConst.SCREEN_NAME_CRW05803;

		}
		// (b)上記以外の場合
		// ※DataBean.サブ画面IDが画面定数クラス.SCREEN_ID_CRW05805の場合
		else
		{
			// (ｱ)次画面への引継情報(dataMap)を作成する。
			// カテゴリー階層
			dataMap.put(CRW05805SFConst.CTGR_KAISOU_NM, bean.sendMessageString(CRW05701SFConst.CTGR_CLASS, X31CWebConst.DATABEAN_GET_VALUE));
			// カテゴリーレベル
			dataMap.put(CRW05805SFConst.CTGR_LV, bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE));
			// カテゴリー番号
			dataMap.put(CRW05805SFConst.CTGR_NO, bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_GET_VALUE));

			// (ｲ)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
			JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW05805, dataMap);

			// (ｳ)戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
			JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW05805, JCRScreenConst.SCREEN_ID_CRW05701);

			nextScreenId = JCRScreenConst.SCREEN_ID_CRW05805;
			nextScreenName = JCRScreenConst.SCREEN_NAME_CRW05805;

		}

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		return true;
	}

	/**
	 * リロード処理.<br>
	 * リロード時の処理を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean reload() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1) 引継情報の取得
		// なし。

		// (2) サービスフォームBeanの設定
		// (a)DataBean.サブ画面IDが画面定数クラス.SCREEN_ID_CRW05805の場合
		if (JCRScreenConst.SCREEN_ID_CRW05805.equals(bean.sendMessageString(CRW05701SFConst.SUB_WINDOW_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_KAI, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		// (3) サービス呼出処理
		// (a)カテゴリー情報リスト取得処理(getCtgrList())を呼び出し、上位、対象、下位のカテゴリーの一覧を取得する。
		String slctCtgrNoJoi = getCtgrNoFromCtgrClass(bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_GET_VALUE));
		String slctCtgrNoTaisho = bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);
		getCtgrList(slctCtgrNoJoi, slctCtgrNoTaisho);
		
		// (4)サービス処理結果の設定
		// なし。 ※(3)(a)にて処理済み

		// (5) 引継情報の設定
		// なし。

		// (6) 共有フォームBeanの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05701);

		return true;
	}

	/**
	 * カテゴリー情報リスト取得処理.<br>
	 * 上位、対象、下位のカテゴリーの一覧を取得します。
	 * @param slctCtgrNoJoiカテゴリーレベル（上位）
	 * @param slctCtgrNoTaisho カテゴリーレベル（対象）
	 * @throws Exception
	 */
	private void getCtgrList(String slctCtgrNoJoi, String slctCtgrNoTaisho) throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0253");

		// マッピングクラス
		CRSV0253_CRSV0253OPDBMapper mapper = new CRSV0253_CRSV0253OPDBMapper();

		// マッピング処理（上り）
		mapper.setGETCTGRINFO1R1CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETCTGRINFO1R2CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETCTGRINFO1R3CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (2)サービス処理結果の設定
		bean.getDataBeanArray(CRW05701SFConst.JOI_CTGR_LIST).clearArray();
		bean.getDataBeanArray(CRW05701SFConst.TAISHO_CTGR_LIST).clearArray();
		bean.getDataBeanArray(CRW05701SFConst.KAI_CTGR_LIST).clearArray();
		
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getGETCTGRINFO1R1CC(paramBean, outputMap);
		mapper.getGETCTGRINFO1R2CC(paramBean, outputMap);
		mapper.getGETCTGRINFO1R3CC(paramBean, outputMap);

		// (b)サービスフォームBeanの設定
		// 上位カテゴリー明細
		X31SDataBeanAccessArray joiCtgrList = bean.getDataBeanArray(CRW05701SFConst.JOI_CTGR_LIST);
		// 対象カテゴリー明細
		X31SDataBeanAccessArray taishoCtgrList = bean.getDataBeanArray(CRW05701SFConst.TAISHO_CTGR_LIST);

		// 選択カテゴリーインデックス（上位）
		String slctCtgrIdxJoi = "";
		// DataBean.選択カテゴリー番号（上位）がNullの場合
		if (JCRUtilCommon.isNull(slctCtgrNoJoi))
		{
			slctCtgrIdxJoi = "0";
		}
		// 上記以外の場合
		else
		{
			slctCtgrIdxJoi = JCRWebCommon.getDetailPullDownIndex(bean, slctCtgrNoJoi, CRW05701SFConst.JOI_CTGR_LIST, CRW05701SFConst.L1_CTGR_NO_02);
		}
		// 選択カテゴリーインデックス（上位）
		bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_IDX_JOI, X31CWebConst.DATABEAN_SET_VALUE, slctCtgrIdxJoi);
		X31SDataBeanAccess joiCtgrListBean = joiCtgrList.getDataBean(Integer.parseInt(slctCtgrIdxJoi, 10));

		// 選択カテゴリーインデックス（対象）
		String slctCtgrIdxTaisho = "";
		// DataBean.選択カテゴリー番号（対象）がNullの場合、"0"（固定）
		if (JCRUtilCommon.isNull(slctCtgrNoTaisho))
		{
			slctCtgrIdxTaisho = "0";
		}
		// 上記以外の場合
		else
		{
			slctCtgrIdxTaisho = JCRWebCommon.getDetailPullDownIndex(bean, slctCtgrNoTaisho, CRW05701SFConst.TAISHO_CTGR_LIST, CRW05701SFConst.L2_CTGR_NO_03);
		}
		// 選択カテゴリーインデックス（対象）
		bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_IDX_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, slctCtgrIdxTaisho);
		X31SDataBeanAccess taishoCtgrListBean = taishoCtgrList.getDataBean(Integer.parseInt(slctCtgrIdxTaisho, 10));

		// 選択カテゴリー番号（上位）
		// 上位カテゴリーが存在しない場合、空白
		if (joiCtgrListBean == null)
		{
			bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_JOI, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		// 上位カテゴリーが存在する場合、対象のカテゴリー番号
		else
		{
			String ctgrNoJoi = joiCtgrListBean.sendMessageString(CRW05701SFConst.L1_CTGR_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_JOI, X31CWebConst.DATABEAN_SET_VALUE, ctgrNoJoi);
		}

		// 選択カテゴリー番号（対象）
		// 対象カテゴリーが存在しない場合、空白
		if (taishoCtgrListBean != null)
		{
			String ctgrNoTaisho = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, ctgrNoTaisho);
		}
		// 対象カテゴリーが存在する場合、対象のカテゴリー番号
		else
		{
			bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		// カテゴリーレベル（対象）
		String ctgrLvTaisho = bean.sendMessageString(CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);

		// カテゴリーレベル（上位）
		String ctgrLvJoi = bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(CRW05701SFConst.CTGR_CLASS, X31CWebConst.DATABEAN_SET_VALUE, getEditCtgrClass(ctgrLvJoi));

		// タイトル上位カテゴリー
		String titleJoiCtgr = getEditTitle(bean.sendMessageString(CRW05701SFConst.CTGR_LV_JOI, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05701SFConst.TITLE_JOI_CTGR, X31CWebConst.DATABEAN_SET_VALUE, titleJoiCtgr);

		// タイトル対象カテゴリー
		String titleTaishoCtgr = JCRStrConst.TITLE_MARK_DIA_BLACK + getEditTitle(bean.sendMessageString(
				CRW05701SFConst.CTGR_LV_TAISHO, X31CWebConst.DATABEAN_GET_VALUE)) + JCRStrConst.TITLE_MARK_DIA_BLACK;
		bean.sendMessageString(CRW05701SFConst.TITLE_TAISHO_CTGR, X31CWebConst.DATABEAN_SET_VALUE, titleTaishoCtgr);

		// タイトル下位カテゴリー
		String titleKaiCtgr = getEditTitle(bean.sendMessageString(CRW05701SFConst.CTGR_LV_KAI, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CRW05701SFConst.TITLE_KAI_CTGR, X31CWebConst.DATABEAN_SET_VALUE, titleKaiCtgr);

		// 上位カテゴリー番号（上位）
		String joiCtgrNoJoi = getCtgrNoFromCtgrClass(getEditCtgrLv(ctgrLvJoi, -1));
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_JOI, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoJoi);
		// 上位カテゴリー番号（対象）
		String joiCtgrNoTaisho = getCtgrNoFromCtgrClass(ctgrLvJoi);
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoTaisho);
		// 上位カテゴリー番号（下位）
		String joiCtgrNoKai = getCtgrNoFromCtgrClass(ctgrLvTaisho);
		bean.sendMessageString(CRW05701SFConst.JOI_CTGR_NO_KAI, X31CWebConst.DATABEAN_SET_VALUE, joiCtgrNoKai);

		// DataBean.カテゴリーレベル（対象）が"001"の場合
		if ("001".equals(ctgrLvTaisho))
		{
			if (taishoCtgrListBean != null)
			{
				// 業務個別設定組織コード
				String wkkbtOrgCd = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_JOI_CTGR_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
				bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD, X31CWebConst.DATABEAN_SET_VALUE, wkkbtOrgCd);
				// 業務個別設定組織名称
				String wkkbtOrgCdNm = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
				bean.sendMessageString(CRW05701SFConst.WKKBT_ORG_CD_NM, X31CWebConst.DATABEAN_SET_VALUE, wkkbtOrgCdNm);
			}
		}

		// 対象カテゴリー明細の件数
		int taishoCtgrListCount = taishoCtgrList.getCount().intValue();

		// DataBean.カテゴリーレベル（対象）が"001"の場合
		if ("001".equals(ctgrLvTaisho))
		{
			// 新規登録ボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.INSERT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			// 編集ボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.EDIT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
			// 削除ボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.DELETE_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);

			// 対象のカテゴリーが存在しない場合
			if (taishoCtgrListCount == 0)
			{
				// ダウンロードボタン押下可否（非活性）
				bean.sendMessageString(CRW05701SFConst.DOWNLOAD_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			}
			// 対象のカテゴリーが存在する場合
			else
			{
				// ダウンロードボタン押下可否（活性）
				bean.sendMessageString(CRW05701SFConst.DOWNLOAD_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
			}

			// <ボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_LEFT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);

		}
		else
		{
			// 新規登録ボタン押下可否（活性）
			bean.sendMessageString(CRW05701SFConst.INSERT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");

			// 対象のカテゴリーが存在しない場合
			if (taishoCtgrListCount == 0)
			{
				// 編集ボタン押下可否（非活性）
				bean.sendMessageString(CRW05701SFConst.EDIT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
				// 削除ボタン押下可否（非活性）
				bean.sendMessageString(CRW05701SFConst.DELETE_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
			}

			// 対象のカテゴリーが存在する場合
			else
			{
				// 編集ボタン押下可否（活性）
				bean.sendMessageString(CRW05701SFConst.EDIT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);
				// 削除ボタン押下可否（活性）
				bean.sendMessageString(CRW05701SFConst.DELETE_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);
			}

			// ダウンロードボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.DOWNLOAD_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);

			// <ボタン押下可否（活性
			bean.sendMessageString(CRW05701SFConst.MOVE_LEFT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);

		}
		
		// DataBean.カテゴリーレベル（対象）が"011"の場合
		if ("011".equals(ctgrLvTaisho))
		{
			// >ボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_RIGHT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
		}
		else
		{
			// >ボタン押下可否（活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_RIGHT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);
		}

		// 対象のカテゴリーが存在しない場合
		if (taishoCtgrListCount == 0)
		{
			// 上へボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_UP_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			// 下へボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_DOWN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			// >ボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_RIGHT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
		}
		// 対象のカテゴリーが存在する場合
		else
		{
			int intSlctCtgrIdxTaisho = Integer.parseInt(slctCtgrIdxTaisho, 10);
			// 一番上のカテゴリーが選択されている場合
			if (intSlctCtgrIdxTaisho == 0)
			{
				// 上へボタン押下可否（非活性）
				bean.sendMessageString(CRW05701SFConst.MOVE_UP_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			}
			else
			{
				// 上へボタン押下可否（活性）
				bean.sendMessageString(CRW05701SFConst.MOVE_UP_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
			}

			// 一番下のカテゴリーが選択されている場合
			if (intSlctCtgrIdxTaisho == taishoCtgrListCount - 1)
			{
				// 下へボタン押下可否（非活性）
				bean.sendMessageString(CRW05701SFConst.MOVE_DOWN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			}
			else
			{
				// 下へボタン押下可否（活性）
				bean.sendMessageString(CRW05701SFConst.MOVE_DOWN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
		}
	}

	/**
	 * カテゴリー情報取得処理.<br>
	 * 下位のカテゴリーの一覧を取得します。
	 * @throws Exception
	 */
	private void getCtgr() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0254");

		// マッピングクラス
		CRSV0254_CRSV0254OPDBMapper mapper = new CRSV0254_CRSV0254OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV025401SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (2)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV025401SC(paramBean, outputMap);

	}
	
	/**
	 * ファイル情報生成処理。
	 * ダウンロードを行うファイルの生成を行う。
	 * 
	 * @return 
	 */
	private String makeFileString()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// ダウンロードカテゴリーリスト
		X31SDataBeanAccessArray downloadCtgrList = bean.getDataBeanArray(CRW05701SFConst.DOWNLOAD_CTGR_LIST);

		// 編集結果
		StringBuilder sbFileData = new StringBuilder();

		// (1) 下記項目の編集を行う。
		// ダウンロードリストより、編集を行う
		for (int i = 0; i < downloadCtgrList.getCount(); i++)
		{
			// ダウンロードカテゴリーリストBean
			X31SDataBeanAccess downloadCtgr = downloadCtgrList.getDataBean(i);

			// 列１
			sbFileData.append(DOUBLE_QUOT).append(bean.sendMessageString(
					CRW05701SFConst.WKKBT_ORG_CD, X31CWebConst.DATABEAN_GET_VALUE)).append(DOUBLE_QUOT);

			// 列２以降の編集
			// 取得データのカテゴリーレベルになるまで、「,」の設定を行う。
			int ctgrLv = Integer.parseInt(downloadCtgr.sendMessageString(CRW05701SFConst.L4_CTGR_LV_05, X31CWebConst.DATABEAN_GET_VALUE), 10);
			for (int j = 1; j < ctgrLv; j++)
			{
				sbFileData.append(JCRStrConst.STR_HALF_COMMA).append(DOUBLE_QUOT).append(DOUBLE_QUOT);
			}

			// 取得データのカテゴリー名を設定
			sbFileData.append(JCRStrConst.STR_HALF_COMMA).append(DOUBLE_QUOT).append(downloadCtgr.sendMessageString(
					CRW05701SFConst.L4_CTGR_NM_05, X31CWebConst.DATABEAN_GET_VALUE)).append(DOUBLE_QUOT);
			
			// 取得データのカテゴリーレベル以降の「,」の設定を行う。
			for (int j = ctgrLv; j < 11; j++)
			{
				sbFileData.append(JCRStrConst.STR_HALF_COMMA).append(DOUBLE_QUOT).append(DOUBLE_QUOT);
			}
			sbFileData.append(JCRStrConst.KAIGYO_CD);
		}

		return sbFileData.toString();
	}

	/**
	 * サービスフォームBean編集処理.<br>
	 * サービスフォームBeanの編集を行う。
	 */
	private void editServiceFormBean()
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// (1)サービスフォームBeanの設定
		// 現在の選択されているカテゴリー番号
		String selectedCode = bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_GET_VALUE);

		// 選択カテゴリーインデックス（対象）
		String slctCtgrIdxTaisho = JCRWebCommon.getDetailPullDownIndex(bean, selectedCode, CRW05701SFConst.TAISHO_CTGR_LIST, CRW05701SFConst.L2_CTGR_NO_03);
		bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_IDX_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, slctCtgrIdxTaisho);

		// 対象カテゴリー明細
		X31SDataBeanAccessArray taishoCtgrList = bean.getDataBeanArray(CRW05701SFConst.TAISHO_CTGR_LIST);
		String slctCtgrNoTaisho = "";
		// 対象カテゴリー明細が存在する場合
		if (taishoCtgrList.getCount().intValue() > 0)
		{
			X31SDataBeanAccess taishoCtgrListBean = taishoCtgrList.getDataBean(Integer.parseInt(slctCtgrIdxTaisho, 10));
			slctCtgrNoTaisho = taishoCtgrListBean.sendMessageString(CRW05701SFConst.L2_CTGR_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
		}

		// 選択カテゴリー番号（対象）
		bean.sendMessageString(CRW05701SFConst.SLCT_CTGR_NO_TAISHO, X31CWebConst.DATABEAN_SET_VALUE, slctCtgrNoTaisho);
		
		// 選択カテゴリーインデックス（対象）
		int intSlctCtgrIdxTaisho = Integer.parseInt(slctCtgrIdxTaisho, 10);

		// 一番上のカテゴリーが選択されている場合
		if (intSlctCtgrIdxTaisho == 0)
		{
			// 上へボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_UP_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
		}
		else
		{
			// 上へボタン押下可否（活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_UP_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		// 対象カテゴリー明細の件数
		int taishoCtgrListCount = taishoCtgrList.getCount().intValue();

		// 一番下のカテゴリーが選択されている場合
		if (intSlctCtgrIdxTaisho == taishoCtgrListCount - 1)
		{
			// 下へボタン押下可否（非活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_DOWN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
		}
		else
		{
			// 下へボタン押下可否（活性）
			bean.sendMessageString(CRW05701SFConst.MOVE_DOWN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
	}

	/**
	 * カテゴリー階層リスト編集処理.<br>
	 * カテゴリー階層リストの設定を行う。
	 * 
	 * @param ctgrNo カテゴリー番号
	 * @param ctgrNm カテゴリー名
	 * @param ctgrLv カテゴリーレベル
	 */
	private void editCtgrClassList(String ctgrNo, String ctgrNm, String ctgrLv)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// (1)サービスフォームBeanの設定
		// カテゴリー階層リスト
		X31SDataBeanAccessArray ctgrClassList = bean.getDataBeanArray(CRW05701SFConst.CTGR_CLASS_LIST);
	
		// カテゴリー階層リストインデックス
		int selectCtgrIndex = -1;
		
		// (a) 設定対象のカテゴリー階層リストのインデックスを取得する。
		for (int i = 0; i < ctgrClassList.getCount().intValue(); i++)
		{
			// カテゴリー階層リスト
			X31SDataBeanAccess ctgrClassBean = ctgrClassList.getDataBean(i);
	
			// カテゴリーレベルが対象のカテゴリーレベルの場合、ループを抜ける。
			if (ctgrLv.equals(ctgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_LV_01, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				selectCtgrIndex = i;
				break;
			}
			// カテゴリーレベルが対象のカテゴリーレベルの上位の場合、ループを抜ける。
			else
			{
				break;
			}
		}
	
		// カテゴリー階層リスト（編集用）
		X31SDataBeanAccess editCtgrClassBean = null;
	
		// 対象のカテゴリーレベルのデータが存在しない場合
		if (selectCtgrIndex == -1)
		{
			editCtgrClassBean = ctgrClassList.addDataBean();
		}
		// 対象のカテゴリーレベルのデータが存在した場合
		else
		{
			editCtgrClassBean = ctgrClassList.getDataBean(selectCtgrIndex);
		}
	
		// (b)サービスフォームBeanの設定
		// カテゴリー番号
		editCtgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_NO_01, X31CWebConst.DATABEAN_SET_VALUE, ctgrNo);
		// カテゴリー名
		editCtgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_NM_01, X31CWebConst.DATABEAN_SET_VALUE, ctgrNm);
		// カテゴリーレベル
		editCtgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_LV_01, X31CWebConst.DATABEAN_SET_VALUE, ctgrLv);

	}

	/**
	 * カテゴリー番号取得処理.<br>
	 * カテゴリー階層から、対象のカテゴリーレベルのカテゴリー番号を取得する。
	 * 
	 * @param ctgrLv カテゴリーレベル
	 * @return カテゴリー番号
	 */
	private String getCtgrNoFromCtgrClass(String ctgrLv)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
	
		// カテゴリー階層リスト
		X31SDataBeanAccessArray ctgrClassList = bean.getDataBeanArray(CRW05701SFConst.CTGR_CLASS_LIST);

		// (1)カテゴリー番号の取得
		// (a) 引数.カテゴリーレベルが、空白の場合、空白を返却し、以降の処理は行わない。
		if (JCRUtilCommon.isNull(ctgrLv))
		{
			return "";
		}
	
		// カテゴリー階層リストインデックス
		int selectCtgrIndex = -1;
	
		// (b) 対象のカテゴリー階層リストのインデックスを取得する。
		for (int i = 0; i < ctgrClassList.getCount().intValue(); i++)
		{
			// カテゴリー階層リスト
			X31SDataBeanAccess ctgrClassBean = ctgrClassList.getDataBean(i);
	
			// カテゴリーレベルが対象のカテゴリーレベルの場合、ループを抜ける。
			if (ctgrLv.equals(ctgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_LV_01, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				selectCtgrIndex = i;
				break;
			}
		}
	
		// (c) カテゴリー番号を返却する。
		// 対象のカテゴリー階層リストBeanが存在しない場合、空白を返却する。
		if (selectCtgrIndex == -1)
		{
			return "";
		}
		// 上記場合、カテゴリー番号を返却する。
		else
		{
			X31SDataBeanAccess ctgrClassBean = ctgrClassList.getDataBean(selectCtgrIndex);
			return ctgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
	}

	/**
	 * タイトル編集処理.<br>
	 * タイトルの編集を行う。
	 * 
	 * @param ctgrLv カテゴリーレベル
	 * @return 編集後タイトル
	 */
	private String getEditTitle(String ctgrLv)
	{
		// 編集結果タイトル
		StringBuilder sbCnvCtgrLv = new StringBuilder();
		
		// (1)タイトルの編集
		// (a) 引数.カテゴリーレベルが、空白の場合、空白を返却し、以降の処理は行わない。
		if (JCRUtilCommon.isNull(ctgrLv))
		{
			return "";
		}

		// カテゴリーレベル
		String cnvCtgrLv = String.valueOf(Integer.parseInt(ctgrLv, 10));

		// (b) 引数.カテゴリーレベルを全角に変換する。
		for (int i = 0; i < cnvCtgrLv.length(); i++)
		{
			sbCnvCtgrLv.append(FULL_NUMBER_LIST[Integer.parseInt(cnvCtgrLv.substring(i, i + 1), 10)]);
		}

		// (c) 編集後タイトルを返却する。
		return "レベル" + sbCnvCtgrLv.toString();
	}

	/**
	 * カテゴリー階層編集処理.<br>
	 * カテゴリー階層の設定を行う。
	 * 
	 * @param ctgrLv カテゴリーレベル
	 * @return カテゴリー階層
	 */
	private String getEditCtgrClass(String ctgrLv)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// (1)カテゴリー階層の編集
		// (a) 引数.カテゴリーレベルが設定されていない場合、カテゴリー階層リストをクリアする。
		if (JCRUtilCommon.isNull(ctgrLv))
		{
			bean.getDataBeanArray(CRW05701SFConst.CTGR_CLASS_LIST).clearArray();
		}

		// (b) カテゴリー階層リストに、引数.カテゴリーレベルより下位のカテゴリーが存在する場合、削除する。
		// カテゴリー階層リスト
		X31SDataBeanAccessArray removeCtgrClassList = bean.getDataBeanArray(CRW05701SFConst.CTGR_CLASS_LIST);
		for (int i = removeCtgrClassList.getCount().intValue() - 1; i >= 0; i--)
		{
			// カテゴリー階層リスト
			X31SDataBeanAccess removeCtgrClassBean = removeCtgrClassList.getDataBean(i);

			// 引数.カテゴリーレベルより、下位のカテゴリーの場合、削除する。
			if (ctgrLv.compareTo(removeCtgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_LV_01, X31CWebConst.DATABEAN_GET_VALUE)) < 0)
			{
				removeCtgrClassList.removeDataBean(i);
			}
			else
			{
				break;
			}
		}
		
		// カテゴリー階層リスト
		X31SDataBeanAccessArray editCtgrClassList = bean.getDataBeanArray(CRW05701SFConst.CTGR_CLASS_LIST);

		// (c) カテゴリー階層の編集を行う。
		// カテゴリー階層
		StringBuilder ctgrClass = new StringBuilder();
		// DataBean.カテゴリー階層の件数分、カテゴリ名を連結する。
		//  カテゴリ名の区切りには、" ＞ "を設定する。
		for (int i = 0; i < editCtgrClassList.getCount(); i++)
		{
			// カテゴリー階層リスト
			X31SDataBeanAccess editCtgrClassBean = editCtgrClassList.getDataBean(i);

			// 初回以外の場合は、「 ＞ 」を設定する。
			if (i > 0)
			{
				ctgrClass.append(" " + JCRStrConst.STR_GREATER + " ");
			}
			ctgrClass.append(editCtgrClassBean.sendMessageString(CRW05701SFConst.L0_CTGR_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// (d) 編集後カテゴリー階層を返却する。
		// 編集後カテゴリー階層が空白の場合、「　」を返却する。
		if (JCRUtilCommon.isNull(ctgrClass))
		{
			return "　";
		}
		// 上記場合、編集後カテゴリー階層を返却する。
		else
		{
			return ctgrClass.toString();
		}

	}

	/**
	 * カテゴリーレベル編集処理.<br>
	 * カテゴリーレベルの編集を行う。
	 * 
	 * @param ctgrLv カテゴリーレベル
	 * @param step 増減値
	 * @return 編集後カテゴリーレベル
	 */
	private String getEditCtgrLv(String ctgrLv, int step)
	{
		// (1)カテゴリーレベルの編集を行う。
		int intCtgrLv = 0;
		if (!JCRUtilCommon.isNull(ctgrLv))
		{
			intCtgrLv = Integer.parseInt(ctgrLv, 10);
		}
		
		intCtgrLv = intCtgrLv + step;

		// (b) 編集後カテゴリーレベルを返却する。
		// 編集後カテゴリーレベルが"001"から、"011"の範囲外の場合、空白を返却する。
		if (intCtgrLv < 1 || 11 < intCtgrLv)
		{
			return "";
		}
		// 上記外の場合、編集後カテゴリーレベルを返却する。
		else
		{
			return JCRUtilCommon.fillZero(String.valueOf(intCtgrLv), 3, false);
		}
	}

	/**
	 * サービスフォームBeanクリア処理.<br>
	 * サービスフォームBeanのクリアを行う。
	 * 
	 * @param bean サービスフォームBean
	 */
	private void clearBean(X31SDataBeanAccess bean)
	{

		// (1) サービスフォームBeanの設定
		// (a) 項目名のリストを取得する。
		String[] itemNameList = bean.getItemNameList();
		
		// (b) 値のクリアを行う。
		for (int i = 0; i < itemNameList.length; i++)
		{
			// (ｱ) Array項目の場合、リストのクリアを行う。
			if (isArrayItem(itemNameList[i]))
			{
				bean.getDataBeanArray(itemNameList[i]).clearArray();
			}
			// (ｲ) 上記以外の場合、値のクリアを行う。
			else
			{
				bean.sendMessage(itemNameList[i], X31CWebConst.DATABEAN_CLEAR);
			}
		}
		return;
	}

	/**
	 * Array項目判定処理.<br>
	 * Array項目の判定を行う。
	 * 
	 * @param itemName 項目ID
	 * @return true:Array項目、false：Array項目以外
	 */
	private boolean isArrayItem(String itemName)
	{
		// (1) 項目名の判定を行い、Array項目の場合は、trueを返却し、Array項目以外の場合は、falseを返却する。
		return ARRAY_ITEM_SET.contains(itemName);
	}

	/**
	 * 例外エラーメッセージの設定処理。<br>
	 * 
	 * @param bean サービスフォームBean
	 * @param e    例外エラー情報
	 */
	private void setErrMsg(X31SDataBeanAccess bean, JCCWebServiceException e) 
	{
		String[] msgidList = e.getMessageList().getMessageIdList();
		X31CMessageMoreInfo[] infoList = e.getMessageList().getMessageMoreInfoList();

	}

}
