/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0398_KKSV0398OPDBMapper
*	ソースファイル名：KKSV0398_KKSV0398OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年10月28日
*＜機能概要＞
*	BP（進捗情報明細照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/28	FJ		新規作成
*   v4.00.00    2012/10/10	FJ）森  IT1-2012-0001145 進捗日時のソート項目を進捗年月日時分秒から登録年月日時分秒に変更
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.web.webview.KKW06101SF.KKW06101SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0398_KKSV0398OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0398_KKSV0398OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：進捗情報照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap settrgt_data(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 電話番号一覧照会マップ.検索処理パターン
		parentMap.put("search_type", String.valueOf(JPCModelConstant.SAERCH_TYPE_BBN));
		// 部品呼び出し → 電話番号一覧照会マップ.最大検索件数
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW06101_MAX_SHOW_CNT"));
		// 部品呼び出し → 電話番号一覧照会マップ.表示件数
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW06101_ROW_PER_PAGE"));

		// 2012-06-19 TI2-2012-0000728 追加 START
		//ソートアイテム・ソートオーダー
		String tmpStr = bean[0].sendMessageString(KKW06101SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		
		if("ido_div_desc".equals(tmpStr)){
				parentMap.put("sort_item", "1");
				parentMap.put("sort_order", "2");
		}else if("ido_div_asc".equals(tmpStr))
		{
				parentMap.put("sort_item", "1");
				parentMap.put("sort_order", "1");
		}else if("prg_time_desc".equals(tmpStr))
		{

// IT1-2012-0001145 2012/10/10 mod strat
//				parentMap.put("sort_item", "2");
				parentMap.put("sort_item", "3");
// IT1-2012-0001145 2012/10/10 mod end
				parentMap.put("sort_order", "2");
		}else if("prg_time_asc".equals(tmpStr))
		{
// IT1-2012-0001145 2012/10/10 mod strat
//				parentMap.put("sort_item", "2");
				parentMap.put("sort_item", "3");
// IT1-2012-0001145 2012/10/10 mod end
				parentMap.put("sort_order", "1");
// IT1-2012-0001145 2012/10/10 mod strat
//		}
		}else 
		{
				parentMap.put("sort_item", "3");
				parentMap.put("sort_order", "2");
		}
// IT1-2012-0001145 2012/10/10 mod end
		// 2012-06-19 TI2-2012-0000728 追加 END

		// 2012-06-19 TI2-2012-0000728 削除
		// ソートキー
//		parentMap
//				.put("sort_key", bean[0].sendMessageString(KKW06101SFConst.SORT_ITEM, X31CWebConst.DATABEAN_GET_VALUE));
		
		// サービス契約番号 → 対象データマップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 表示対象異動区分 → 対象データマップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("表示対象異動区分", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("trgt_data", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：進捗情報照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] gettrgt_data(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("trgt_data")){
			parentMap = (HashMap)outputMap.get("trgt_data");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listtrgt_data_prg_info_list_trgt_data_list = bean[0].getDataBeanArray("進捗情報一覧リスト");
		childList = null;
		if(listtrgt_data_prg_info_list_trgt_data_list != null && parentMap != null && parentMap.containsKey("trgt_data_list")){
			childList = (ArrayList)parentMap.get("trgt_data_list");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listtrgt_data_prg_info_list_trgt_data_list.getCount() -1 >= i){
					subbean = listtrgt_data_prg_info_list_trgt_data_list.getDataBean(i);
				}else{
					subbean = listtrgt_data_prg_info_list_trgt_data_list.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
				
				// 異動理由収納リスト
				ArrayList<String> ido_rsn_list = new ArrayList<String>();
				
				// 異動理由収納リスト再構成
				ArrayList<String> ido_rsn_list_new = new ArrayList<String>();
				
				if (childMap != null) {
					
					// 異動理由１〜５を格納
					ido_rsn_list.add((String)childMap.get("ido_rsn_1_nm"));
					ido_rsn_list.add((String)childMap.get("ido_rsn_2_nm"));
					ido_rsn_list.add((String)childMap.get("ido_rsn_3_nm"));
					ido_rsn_list.add((String)childMap.get("ido_rsn_4_nm"));
					ido_rsn_list.add((String)childMap.get("ido_rsn_5_nm"));
						
					// 重複削除
					LinkedHashSet<String> ido_rsn_hashSet = new LinkedHashSet<String>();
					ido_rsn_hashSet.addAll(ido_rsn_list);
					
					
					ido_rsn_list_new.addAll(ido_rsn_hashSet);
					
					// NULL要素を削除
					for (int count = 0;count < ido_rsn_list_new.size();count++) {
							ido_rsn_list_new.remove(null);
					}
					
					// 異動理由の再編成
					// 異動理由１〜５の固定値
					int list_full_size = 5;
					int list_size = list_full_size - ido_rsn_list_new.size();
					
					if (list_size != 0) {
						for (int count = 1 ; count <= list_size ; count++) {
							// 5行のリストになるように空白で補填
							ido_rsn_list_new.add(new String());
						}
					}
				}
				
				// 進捗情報一覧リスト.進捗番号 ← 対象データマップ.対象データリスト.進捗番号
				if (childMap != null) {
					subbean.sendMessageString("進捗番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prg_no"));
				} else {
					subbean.sendMessageString("進捗番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.異動区分 ← 対象データマップ.対象データリスト.異動区分
				if (childMap != null) {
					subbean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_div"));
				} else {
					subbean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.異動区分（名称） ← 対象データマップ.対象データリスト.異動区分名称
				if (childMap != null) {
					subbean.sendMessageString("異動区分（名称）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_div_nm"));
				} else {
					subbean.sendMessageString("異動区分（名称）", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.異動理由１ ← 対象データマップ.対象データリスト.異動理由１
				if (childMap != null) {
					subbean.sendMessageString("異動理由１", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_1"));
				} else {
					subbean.sendMessageString("異動理由１", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//				// 進捗情報一覧リスト.異動理由１名称 ← 対象データマップ.対象データリスト.異動理由１名称
//				if (childMap != null) {
//					subbean.sendMessageString("異動理由１名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_1_nm"));
//				} else {
//					subbean.sendMessageString("異動理由１名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
//				}
				// 進捗情報一覧リスト.異動理由１名称 ← 対象データマップ.対象データリスト.異動理由１名称(重複削除後)
				if (ido_rsn_list_new != null) {
					subbean.sendMessageString("異動理由１名称", X31CWebConst.DATABEAN_SET_VALUE, (String)ido_rsn_list_new.get(0));
				} else {
					subbean.sendMessageString("異動理由１名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.異動理由２ ← 対象データマップ.対象データリスト.異動理由２
				if (childMap != null) {
					subbean.sendMessageString("異動理由２", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_2"));
				} else {
					subbean.sendMessageString("異動理由２", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//				// 進捗情報一覧リスト.異動理由２名称 ← 対象データマップ.対象データリスト.異動理由２名称
//				if (childMap != null) {
//					subbean.sendMessageString("異動理由２名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_2_nm"));
//				} else {
//					subbean.sendMessageString("異動理由２名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
//				}
				// 進捗情報一覧リスト.異動理由１名称 ← 対象データマップ.対象データリスト.異動理由２名称(重複削除後)
				if (ido_rsn_list_new != null) {
					subbean.sendMessageString("異動理由２名称", X31CWebConst.DATABEAN_SET_VALUE, (String)ido_rsn_list_new.get(1));
				} else {
					subbean.sendMessageString("異動理由２名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.異動理由３ ← 対象データマップ.対象データリスト.異動理由３
				if (childMap != null) {
					subbean.sendMessageString("異動理由３", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_3"));
				} else {
					subbean.sendMessageString("異動理由３", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//				// 進捗情報一覧リスト.異動理由３名称 ← 対象データマップ.対象データリスト.異動理由３名称
//				if (childMap != null) {
//					subbean.sendMessageString("異動理由３名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_3_nm"));
//				} else {
//					subbean.sendMessageString("異動理由３名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
//				}
				// 進捗情報一覧リスト.異動理由１名称 ← 対象データマップ.対象データリスト.異動理由３名称(重複削除後)
				if (ido_rsn_list_new != null) {
					subbean.sendMessageString("異動理由３名称", X31CWebConst.DATABEAN_SET_VALUE, (String)ido_rsn_list_new.get(2));
				} else {
					subbean.sendMessageString("異動理由３名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 
				// 進捗情報一覧リスト.異動理由４ ← 対象データマップ.対象データリスト.異動理由４
				if (childMap != null) {
					subbean.sendMessageString("異動理由４", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_4"));
				} else {
					subbean.sendMessageString("異動理由４", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//				// 進捗情報一覧リスト.異動理由４名称 ← 対象データマップ.対象データリスト.異動理由４名称
//				if (childMap != null) {
//					subbean.sendMessageString("異動理由４名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_4_nm"));
//				} else {
//					subbean.sendMessageString("異動理由４名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
//				}
				// 進捗情報一覧リスト.異動理由１名称 ← 対象データマップ.対象データリスト.異動理由４名称(重複削除後)
				if (ido_rsn_list_new != null) {
					subbean.sendMessageString("異動理由４名称", X31CWebConst.DATABEAN_SET_VALUE, (String)ido_rsn_list_new.get(3));
				} else {
					subbean.sendMessageString("異動理由４名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.異動理由５ ← 対象データマップ.対象データリスト.異動理由５
				if (childMap != null) {
					subbean.sendMessageString("異動理由５", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_5"));
				} else {
					subbean.sendMessageString("異動理由５", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
//				// 進捗情報一覧リスト.異動理由５名称 ← 対象データマップ.対象データリスト.異動理由５名称
//				if (childMap != null) {
//					subbean.sendMessageString("異動理由５名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsn_5_nm"));
//				} else {
//					subbean.sendMessageString("異動理由５名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
//				}
				// 進捗情報一覧リスト.異動理由１名称 ← 対象データマップ.対象データリスト.異動理由５名称(重複削除後)
				if (ido_rsn_list_new != null) {
					subbean.sendMessageString("異動理由５名称", X31CWebConst.DATABEAN_SET_VALUE, (String)ido_rsn_list_new.get(4));
				} else {
					subbean.sendMessageString("異動理由５名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.進捗ステータス ← 対象データマップ.対象データリスト.進捗ステータス
				if (childMap != null) {
					subbean.sendMessageString("進捗ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prg_stat"));
				} else {
					subbean.sendMessageString("進捗ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.進捗ステータス名称 ← 対象データマップ.対象データリスト.進捗ステータス名称
				if (childMap != null) {
					subbean.sendMessageString("進捗ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prg_stat_nm"));
				} else {
					subbean.sendMessageString("進捗ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.進捗日時 ← 対象データマップ.対象データリスト.進捗日時
				if (childMap != null) {
					subbean.sendMessageString("進捗日時", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prg_time"));
				} else {
					subbean.sendMessageString("進捗日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.部署名 ← 対象データマップ.対象データリスト.部署
				if (childMap != null) {
					subbean.sendMessageString("部署名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("org_nm"));
				} else {
					subbean.sendMessageString("部署名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.担当者 ← 対象データマップ.対象データリスト.担当者
				if (childMap != null) {
					subbean.sendMessageString("担当者", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("user_nm"));
				} else {
					subbean.sendMessageString("担当者", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.申込書番号 ← 対象データマップ.対象データリスト.申込書番号
				if (childMap != null) {
					subbean.sendMessageString("申込書番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskmsho_no"));
				} else {
					subbean.sendMessageString("申込書番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.申込年月日 ← 対象データマップ.対象データリスト.申込年月日
				if (childMap != null) {
					subbean.sendMessageString("申込年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_ymd"));
				} else {
					subbean.sendMessageString("申込年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.取扱コード１ ← 対象データマップ.対象データリスト.代理店コード（取扱コード）１
				if (childMap != null) {
					subbean.sendMessageString("取扱コード１", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trat_cd_1"));
				} else {
					subbean.sendMessageString("取扱コード１", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.取扱コード２ ← 対象データマップ.対象データリスト.代理店コード（取扱コード）２
				if (childMap != null) {
					subbean.sendMessageString("取扱コード２", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trat_cd_2"));
				} else {
					subbean.sendMessageString("取扱コード２", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.取扱コード３ ← 対象データマップ.対象データリスト.代理店コード（取扱コード）３
				if (childMap != null) {
					subbean.sendMessageString("取扱コード３", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trat_cd_3"));
				} else {
					subbean.sendMessageString("取扱コード３", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.取扱コード４ ← 対象データマップ.対象データリスト.代理店コード（取扱コード）４
				if (childMap != null) {
					subbean.sendMessageString("取扱コード４", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trat_cd_4"));
				} else {
					subbean.sendMessageString("取扱コード４", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.事務手数料 ← 対象データマップ.対象データリスト.事務手数料
				if (childMap != null) {
					subbean.sendMessageString("事務手数料", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("jimu_commision"));
				} else {
					subbean.sendMessageString("事務手数料", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.標準工事費 ← 対象データマップ.対象データリスト.標準工事費
				if (childMap != null) {
					subbean.sendMessageString("標準工事費", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stdard_kojihi"));
				} else {
					subbean.sendMessageString("標準工事費", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.特記事項１ ← 対象データマップ.対象データリスト.進捗特記事項１
				if (childMap != null) {
					subbean.sendMessageString("特記事項１", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tkjk_1"));
				} else {
					subbean.sendMessageString("特記事項１", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.特記事項２ ← 対象データマップ.対象データリスト.進捗特記事項２
				if (childMap != null) {
					subbean.sendMessageString("特記事項２", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tkjk_2"));
				} else {
					subbean.sendMessageString("特記事項２", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.進捗メモ ← 対象データマップ.対象データリスト.進捗メモ
				if (childMap != null) {
					subbean.sendMessageString("進捗メモ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prg_memo"));
				} else {
					subbean.sendMessageString("進捗メモ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.レコードＩＤ ← 対象データマップ.対象データリスト.レコードＩＤ
				if (childMap != null) {
					subbean.sendMessageString("レコードＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("record_id"));
				} else {
					subbean.sendMessageString("レコードＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.レコードタイプ ← 対象データマップ.対象データリスト.レコードタイプ
				if (childMap != null) {
					subbean.sendMessageString("レコードタイプ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("record_type"));
				} else {
					subbean.sendMessageString("レコードタイプ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.レコードスタイル ← 対象データマップ.対象データリスト.レコードスタイル
				if (childMap != null) {
					subbean.sendMessageString("レコードスタイル", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("record_style"));
				} else {
					subbean.sendMessageString("レコードスタイル", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.子供数 ← 対象データマップ.対象データリスト.子供数
				if (childMap != null) {
					subbean.sendMessageString("子供数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("child_cnt"));
				} else {
					subbean.sendMessageString("子供数", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 進捗情報一覧リスト.更新年月日時分秒 ← 対象データマップ.対象データリスト.更新年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
				} else {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// 2012-06-25 ANK-0397-00-0007 ADD_START
				// 進捗情報一覧リスト.申込書明細番号 ← 対象データマップ.対象データリスト.申込書明細番号
				if (childMap != null) {
					subbean.sendMessageString("申込書明細番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskmsho_dtl_no"));
				} else {
					subbean.sendMessageString("申込書明細番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 2012-06-25 ANK-0397-00-0007 ADD_END

			}
		}


		return bean;
	}


}
